tambahan
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -172,6 +172,8 @@ exports.Prisma.ChatFlowsScalarFieldEnum = {
|
||||
active: 'active',
|
||||
flowUrl: 'flowUrl',
|
||||
flowToken: 'flowToken',
|
||||
waPhoneNumberId: 'waPhoneNumberId',
|
||||
waToken: 'waToken',
|
||||
createdAt: 'createdAt',
|
||||
updatedAt: 'updatedAt'
|
||||
};
|
||||
|
||||
60
generated/prisma/index.d.ts
vendored
60
generated/prisma/index.d.ts
vendored
@@ -5593,6 +5593,8 @@ export namespace Prisma {
|
||||
active: boolean | null
|
||||
flowUrl: string | null
|
||||
flowToken: string | null
|
||||
waPhoneNumberId: string | null
|
||||
waToken: string | null
|
||||
createdAt: Date | null
|
||||
updatedAt: Date | null
|
||||
}
|
||||
@@ -5603,6 +5605,8 @@ export namespace Prisma {
|
||||
active: boolean | null
|
||||
flowUrl: string | null
|
||||
flowToken: string | null
|
||||
waPhoneNumberId: string | null
|
||||
waToken: string | null
|
||||
createdAt: Date | null
|
||||
updatedAt: Date | null
|
||||
}
|
||||
@@ -5615,6 +5619,8 @@ export namespace Prisma {
|
||||
active: number
|
||||
flowUrl: number
|
||||
flowToken: number
|
||||
waPhoneNumberId: number
|
||||
waToken: number
|
||||
createdAt: number
|
||||
updatedAt: number
|
||||
_all: number
|
||||
@@ -5627,6 +5633,8 @@ export namespace Prisma {
|
||||
active?: true
|
||||
flowUrl?: true
|
||||
flowToken?: true
|
||||
waPhoneNumberId?: true
|
||||
waToken?: true
|
||||
createdAt?: true
|
||||
updatedAt?: true
|
||||
}
|
||||
@@ -5637,6 +5645,8 @@ export namespace Prisma {
|
||||
active?: true
|
||||
flowUrl?: true
|
||||
flowToken?: true
|
||||
waPhoneNumberId?: true
|
||||
waToken?: true
|
||||
createdAt?: true
|
||||
updatedAt?: true
|
||||
}
|
||||
@@ -5649,6 +5659,8 @@ export namespace Prisma {
|
||||
active?: true
|
||||
flowUrl?: true
|
||||
flowToken?: true
|
||||
waPhoneNumberId?: true
|
||||
waToken?: true
|
||||
createdAt?: true
|
||||
updatedAt?: true
|
||||
_all?: true
|
||||
@@ -5734,6 +5746,8 @@ export namespace Prisma {
|
||||
active: boolean
|
||||
flowUrl: string | null
|
||||
flowToken: string | null
|
||||
waPhoneNumberId: string | null
|
||||
waToken: string | null
|
||||
createdAt: Date
|
||||
updatedAt: Date
|
||||
_count: ChatFlowsCountAggregateOutputType | null
|
||||
@@ -5763,6 +5777,8 @@ export namespace Prisma {
|
||||
active?: boolean
|
||||
flowUrl?: boolean
|
||||
flowToken?: boolean
|
||||
waPhoneNumberId?: boolean
|
||||
waToken?: boolean
|
||||
createdAt?: boolean
|
||||
updatedAt?: boolean
|
||||
}, ExtArgs["result"]["chatFlows"]>
|
||||
@@ -5775,6 +5791,8 @@ export namespace Prisma {
|
||||
active?: boolean
|
||||
flowUrl?: boolean
|
||||
flowToken?: boolean
|
||||
waPhoneNumberId?: boolean
|
||||
waToken?: boolean
|
||||
createdAt?: boolean
|
||||
updatedAt?: boolean
|
||||
}, ExtArgs["result"]["chatFlows"]>
|
||||
@@ -5787,6 +5805,8 @@ export namespace Prisma {
|
||||
active?: boolean
|
||||
flowUrl?: boolean
|
||||
flowToken?: boolean
|
||||
waPhoneNumberId?: boolean
|
||||
waToken?: boolean
|
||||
createdAt?: boolean
|
||||
updatedAt?: boolean
|
||||
}, ExtArgs["result"]["chatFlows"]>
|
||||
@@ -5799,11 +5819,13 @@ export namespace Prisma {
|
||||
active?: boolean
|
||||
flowUrl?: boolean
|
||||
flowToken?: boolean
|
||||
waPhoneNumberId?: boolean
|
||||
waToken?: boolean
|
||||
createdAt?: boolean
|
||||
updatedAt?: boolean
|
||||
}
|
||||
|
||||
export type ChatFlowsOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "flows" | "defaultFlow" | "defaultData" | "active" | "flowUrl" | "flowToken" | "createdAt" | "updatedAt", ExtArgs["result"]["chatFlows"]>
|
||||
export type ChatFlowsOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"id" | "flows" | "defaultFlow" | "defaultData" | "active" | "flowUrl" | "flowToken" | "waPhoneNumberId" | "waToken" | "createdAt" | "updatedAt", ExtArgs["result"]["chatFlows"]>
|
||||
|
||||
export type $ChatFlowsPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
|
||||
name: "ChatFlows"
|
||||
@@ -5816,6 +5838,8 @@ export namespace Prisma {
|
||||
active: boolean
|
||||
flowUrl: string | null
|
||||
flowToken: string | null
|
||||
waPhoneNumberId: string | null
|
||||
waToken: string | null
|
||||
createdAt: Date
|
||||
updatedAt: Date
|
||||
}, ExtArgs["result"]["chatFlows"]>
|
||||
@@ -6248,6 +6272,8 @@ export namespace Prisma {
|
||||
readonly active: FieldRef<"ChatFlows", 'Boolean'>
|
||||
readonly flowUrl: FieldRef<"ChatFlows", 'String'>
|
||||
readonly flowToken: FieldRef<"ChatFlows", 'String'>
|
||||
readonly waPhoneNumberId: FieldRef<"ChatFlows", 'String'>
|
||||
readonly waToken: FieldRef<"ChatFlows", 'String'>
|
||||
readonly createdAt: FieldRef<"ChatFlows", 'DateTime'>
|
||||
readonly updatedAt: FieldRef<"ChatFlows", 'DateTime'>
|
||||
}
|
||||
@@ -6694,6 +6720,8 @@ export namespace Prisma {
|
||||
active: 'active',
|
||||
flowUrl: 'flowUrl',
|
||||
flowToken: 'flowToken',
|
||||
waPhoneNumberId: 'waPhoneNumberId',
|
||||
waToken: 'waToken',
|
||||
createdAt: 'createdAt',
|
||||
updatedAt: 'updatedAt'
|
||||
};
|
||||
@@ -7114,6 +7142,8 @@ export namespace Prisma {
|
||||
active?: BoolFilter<"ChatFlows"> | boolean
|
||||
flowUrl?: StringNullableFilter<"ChatFlows"> | string | null
|
||||
flowToken?: StringNullableFilter<"ChatFlows"> | string | null
|
||||
waPhoneNumberId?: StringNullableFilter<"ChatFlows"> | string | null
|
||||
waToken?: StringNullableFilter<"ChatFlows"> | string | null
|
||||
createdAt?: DateTimeFilter<"ChatFlows"> | Date | string
|
||||
updatedAt?: DateTimeFilter<"ChatFlows"> | Date | string
|
||||
}
|
||||
@@ -7126,6 +7156,8 @@ export namespace Prisma {
|
||||
active?: SortOrder
|
||||
flowUrl?: SortOrderInput | SortOrder
|
||||
flowToken?: SortOrderInput | SortOrder
|
||||
waPhoneNumberId?: SortOrderInput | SortOrder
|
||||
waToken?: SortOrderInput | SortOrder
|
||||
createdAt?: SortOrder
|
||||
updatedAt?: SortOrder
|
||||
}
|
||||
@@ -7141,6 +7173,8 @@ export namespace Prisma {
|
||||
defaultData?: JsonNullableFilter<"ChatFlows">
|
||||
active?: BoolFilter<"ChatFlows"> | boolean
|
||||
flowToken?: StringNullableFilter<"ChatFlows"> | string | null
|
||||
waPhoneNumberId?: StringNullableFilter<"ChatFlows"> | string | null
|
||||
waToken?: StringNullableFilter<"ChatFlows"> | string | null
|
||||
createdAt?: DateTimeFilter<"ChatFlows"> | Date | string
|
||||
updatedAt?: DateTimeFilter<"ChatFlows"> | Date | string
|
||||
}, "id" | "flowUrl">
|
||||
@@ -7153,6 +7187,8 @@ export namespace Prisma {
|
||||
active?: SortOrder
|
||||
flowUrl?: SortOrderInput | SortOrder
|
||||
flowToken?: SortOrderInput | SortOrder
|
||||
waPhoneNumberId?: SortOrderInput | SortOrder
|
||||
waToken?: SortOrderInput | SortOrder
|
||||
createdAt?: SortOrder
|
||||
updatedAt?: SortOrder
|
||||
_count?: ChatFlowsCountOrderByAggregateInput
|
||||
@@ -7171,6 +7207,8 @@ export namespace Prisma {
|
||||
active?: BoolWithAggregatesFilter<"ChatFlows"> | boolean
|
||||
flowUrl?: StringNullableWithAggregatesFilter<"ChatFlows"> | string | null
|
||||
flowToken?: StringNullableWithAggregatesFilter<"ChatFlows"> | string | null
|
||||
waPhoneNumberId?: StringNullableWithAggregatesFilter<"ChatFlows"> | string | null
|
||||
waToken?: StringNullableWithAggregatesFilter<"ChatFlows"> | string | null
|
||||
createdAt?: DateTimeWithAggregatesFilter<"ChatFlows"> | Date | string
|
||||
updatedAt?: DateTimeWithAggregatesFilter<"ChatFlows"> | Date | string
|
||||
}
|
||||
@@ -7494,6 +7532,8 @@ export namespace Prisma {
|
||||
active?: boolean
|
||||
flowUrl?: string | null
|
||||
flowToken?: string | null
|
||||
waPhoneNumberId?: string | null
|
||||
waToken?: string | null
|
||||
createdAt?: Date | string
|
||||
updatedAt?: Date | string
|
||||
}
|
||||
@@ -7506,6 +7546,8 @@ export namespace Prisma {
|
||||
active?: boolean
|
||||
flowUrl?: string | null
|
||||
flowToken?: string | null
|
||||
waPhoneNumberId?: string | null
|
||||
waToken?: string | null
|
||||
createdAt?: Date | string
|
||||
updatedAt?: Date | string
|
||||
}
|
||||
@@ -7518,6 +7560,8 @@ export namespace Prisma {
|
||||
active?: BoolFieldUpdateOperationsInput | boolean
|
||||
flowUrl?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
flowToken?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
waPhoneNumberId?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
waToken?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
}
|
||||
@@ -7530,6 +7574,8 @@ export namespace Prisma {
|
||||
active?: BoolFieldUpdateOperationsInput | boolean
|
||||
flowUrl?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
flowToken?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
waPhoneNumberId?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
waToken?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
}
|
||||
@@ -7542,6 +7588,8 @@ export namespace Prisma {
|
||||
active?: boolean
|
||||
flowUrl?: string | null
|
||||
flowToken?: string | null
|
||||
waPhoneNumberId?: string | null
|
||||
waToken?: string | null
|
||||
createdAt?: Date | string
|
||||
updatedAt?: Date | string
|
||||
}
|
||||
@@ -7554,6 +7602,8 @@ export namespace Prisma {
|
||||
active?: BoolFieldUpdateOperationsInput | boolean
|
||||
flowUrl?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
flowToken?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
waPhoneNumberId?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
waToken?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
}
|
||||
@@ -7566,6 +7616,8 @@ export namespace Prisma {
|
||||
active?: BoolFieldUpdateOperationsInput | boolean
|
||||
flowUrl?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
flowToken?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
waPhoneNumberId?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
waToken?: NullableStringFieldUpdateOperationsInput | string | null
|
||||
createdAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
updatedAt?: DateTimeFieldUpdateOperationsInput | Date | string
|
||||
}
|
||||
@@ -7941,6 +7993,8 @@ export namespace Prisma {
|
||||
active?: SortOrder
|
||||
flowUrl?: SortOrder
|
||||
flowToken?: SortOrder
|
||||
waPhoneNumberId?: SortOrder
|
||||
waToken?: SortOrder
|
||||
createdAt?: SortOrder
|
||||
updatedAt?: SortOrder
|
||||
}
|
||||
@@ -7951,6 +8005,8 @@ export namespace Prisma {
|
||||
active?: SortOrder
|
||||
flowUrl?: SortOrder
|
||||
flowToken?: SortOrder
|
||||
waPhoneNumberId?: SortOrder
|
||||
waToken?: SortOrder
|
||||
createdAt?: SortOrder
|
||||
updatedAt?: SortOrder
|
||||
}
|
||||
@@ -7961,6 +8017,8 @@ export namespace Prisma {
|
||||
active?: SortOrder
|
||||
flowUrl?: SortOrder
|
||||
flowToken?: SortOrder
|
||||
waPhoneNumberId?: SortOrder
|
||||
waToken?: SortOrder
|
||||
createdAt?: SortOrder
|
||||
updatedAt?: SortOrder
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "prisma-client-0c787597671925c5dbd90480bfc5d45c3aa9b494d0bff63e2482cd62c5107b7b",
|
||||
"name": "prisma-client-367ce2b98f2d22a81f03cae26bb7a0a6a88cb7e151779032b6f03e46b11c7d82",
|
||||
"main": "index.js",
|
||||
"types": "index.d.ts",
|
||||
"browser": "default.js",
|
||||
|
||||
@@ -55,13 +55,15 @@ model WaHook {
|
||||
}
|
||||
|
||||
model ChatFlows {
|
||||
id String @id @default(cuid())
|
||||
flows Json?
|
||||
defaultFlow String?
|
||||
defaultData Json?
|
||||
active Boolean @default(true)
|
||||
flowUrl String? @unique
|
||||
flowToken String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
id String @id @default(cuid())
|
||||
flows Json?
|
||||
defaultFlow String?
|
||||
defaultData Json?
|
||||
active Boolean @default(true)
|
||||
flowUrl String? @unique
|
||||
flowToken String?
|
||||
waPhoneNumberId String?
|
||||
waToken String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
@@ -144,6 +144,8 @@ exports.Prisma.ChatFlowsScalarFieldEnum = {
|
||||
active: 'active',
|
||||
flowUrl: 'flowUrl',
|
||||
flowToken: 'flowToken',
|
||||
waPhoneNumberId: 'waPhoneNumberId',
|
||||
waToken: 'waToken',
|
||||
createdAt: 'createdAt',
|
||||
updatedAt: 'updatedAt'
|
||||
};
|
||||
@@ -229,13 +231,13 @@ const config = {
|
||||
}
|
||||
}
|
||||
},
|
||||
"inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel User {\n id String @id @default(cuid())\n name String?\n email String? @unique\n password String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n ApiKey ApiKey[]\n}\n\nmodel ApiKey {\n id String @id @default(cuid())\n User User? @relation(fields: [userId], references: [id])\n userId String\n name String\n key String @unique @db.Text\n description String?\n expiredAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel WebHook {\n id String @id @default(cuid())\n name String?\n description String?\n url String\n payload String? @default(\"{}\")\n method String @default(\"POST\")\n headers String? @default(\"{}\")\n apiToken String?\n retries Int? @default(3)\n enabled Boolean @default(true)\n replay Boolean @default(false)\n replayKey String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel WaHook {\n id String @id @default(cuid())\n data Json? @db.Json\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel ChatFlows {\n id String @id @default(cuid())\n flows Json?\n defaultFlow String?\n defaultData Json?\n active Boolean @default(true)\n flowUrl String? @unique\n flowToken String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n",
|
||||
"inlineSchemaHash": "853d49417068ff1819c3dbb60ac7aeea59288f307f7939669c83fdd63bb495e3",
|
||||
"inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel User {\n id String @id @default(cuid())\n name String?\n email String? @unique\n password String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n ApiKey ApiKey[]\n}\n\nmodel ApiKey {\n id String @id @default(cuid())\n User User? @relation(fields: [userId], references: [id])\n userId String\n name String\n key String @unique @db.Text\n description String?\n expiredAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel WebHook {\n id String @id @default(cuid())\n name String?\n description String?\n url String\n payload String? @default(\"{}\")\n method String @default(\"POST\")\n headers String? @default(\"{}\")\n apiToken String?\n retries Int? @default(3)\n enabled Boolean @default(true)\n replay Boolean @default(false)\n replayKey String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel WaHook {\n id String @id @default(cuid())\n data Json? @db.Json\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel ChatFlows {\n id String @id @default(cuid())\n flows Json?\n defaultFlow String?\n defaultData Json?\n active Boolean @default(true)\n flowUrl String? @unique\n flowToken String?\n waPhoneNumberId String?\n waToken String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n",
|
||||
"inlineSchemaHash": "87e5fa08d8dfb23ff2953e71db406dec620f344cf7ca8626bf267c670e09a411",
|
||||
"copyEngine": true
|
||||
}
|
||||
config.dirname = '/'
|
||||
|
||||
config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"ApiKey\",\"kind\":\"object\",\"type\":\"ApiKey\",\"relationName\":\"ApiKeyToUser\"}],\"dbName\":null},\"ApiKey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"User\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ApiKeyToUser\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiredAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"WebHook\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payload\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"method\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"headers\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"apiToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"retries\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"replay\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"replayKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"WaHook\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"ChatFlows\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"flows\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"defaultFlow\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"defaultData\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"active\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"flowUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"flowToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
|
||||
config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"ApiKey\",\"kind\":\"object\",\"type\":\"ApiKey\",\"relationName\":\"ApiKeyToUser\"}],\"dbName\":null},\"ApiKey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"User\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ApiKeyToUser\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiredAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"WebHook\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payload\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"method\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"headers\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"apiToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"retries\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"replay\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"replayKey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"WaHook\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"ChatFlows\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"flows\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"defaultFlow\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"defaultData\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"active\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"flowUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"flowToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"waPhoneNumberId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"waToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
|
||||
defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
|
||||
config.engineWasm = {
|
||||
getRuntime: async () => require('./query_engine_bg.js'),
|
||||
|
||||
@@ -55,13 +55,15 @@ model WaHook {
|
||||
}
|
||||
|
||||
model ChatFlows {
|
||||
id String @id @default(cuid())
|
||||
flows Json?
|
||||
defaultFlow String?
|
||||
defaultData Json?
|
||||
active Boolean @default(true)
|
||||
flowUrl String? @unique
|
||||
flowToken String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
id String @id @default(cuid())
|
||||
flows Json?
|
||||
defaultFlow String?
|
||||
defaultData Json?
|
||||
active Boolean @default(true)
|
||||
flowUrl String? @unique
|
||||
flowToken String?
|
||||
waPhoneNumberId String?
|
||||
waToken String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
@@ -132,6 +132,8 @@ function FlowWaHookForm() {
|
||||
const [flowUrl, setFlowUrl] = useState("");
|
||||
const [flowToken, setFlowToken] = useState("");
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [waPhoneNumberId, setWaPhoneNumberId] = useState("");
|
||||
const [waToken, setWaToken] = useState("");
|
||||
|
||||
useShallowEffect(() => {
|
||||
const loadCredentials = async () => {
|
||||
@@ -141,6 +143,8 @@ function FlowWaHookForm() {
|
||||
} else {
|
||||
setFlowUrl(data?.data?.flowUrl || "");
|
||||
setFlowToken(data?.data?.flowToken || "");
|
||||
setWaPhoneNumberId(data?.data?.waPhoneNumberId || "");
|
||||
setWaToken(data?.data?.waToken || "");
|
||||
}
|
||||
};
|
||||
loadCredentials();
|
||||
@@ -152,7 +156,7 @@ function FlowWaHookForm() {
|
||||
return;
|
||||
}
|
||||
setLoading(true);
|
||||
const { error } = await apiFetch.api.chatflows["url-token"].put({ flowUrl, flowToken });
|
||||
const { error } = await apiFetch.api.chatflows["url-token"].put({ flowUrl, flowToken, waPhoneNumberId, waToken });
|
||||
if (error) {
|
||||
showNotification({ title: "Error", message: "Failed to update credentials", color: "red" });
|
||||
} else {
|
||||
@@ -184,6 +188,21 @@ function FlowWaHookForm() {
|
||||
}
|
||||
/>
|
||||
</Stack>
|
||||
<Title order={3}>WhatsApp Credentials</Title>
|
||||
<Stack gap="md">
|
||||
<TextInput label="WhatsApp Phone Number ID" placeholder="Enter WhatsApp Phone Number ID" value={waPhoneNumberId} onChange={(e) => setWaPhoneNumberId(e.currentTarget.value)} />
|
||||
<PasswordInput
|
||||
label="WhatsApp Token"
|
||||
placeholder="Enter WhatsApp Token"
|
||||
value={waToken}
|
||||
onChange={(e) => setWaToken(e.currentTarget.value)}
|
||||
rightSection={
|
||||
<ActionIcon onClick={copyToken}>
|
||||
<IconCopy size={16} />
|
||||
</ActionIcon>
|
||||
}
|
||||
/>
|
||||
</Stack>
|
||||
<Group justify="flex-end">
|
||||
<Button leftSection={<IconCheck size={16} />} onClick={saveCredentials} loading={loading}>
|
||||
Save Changes
|
||||
|
||||
@@ -157,12 +157,14 @@ const FlowRoute = new Elysia({
|
||||
select: {
|
||||
flowUrl: true,
|
||||
flowToken: true,
|
||||
waPhoneNumberId: true,
|
||||
waToken: true,
|
||||
},
|
||||
})
|
||||
if (!result) {
|
||||
return { data: { flowUrl: null, flowToken: null } }
|
||||
return { data: { flowUrl: null, flowToken: null, waPhoneNumberId: null, waToken: null } }
|
||||
}
|
||||
return { data: { flowUrl: result.flowUrl, flowToken: result.flowToken } }
|
||||
return { data: { flowUrl: result.flowUrl, flowToken: result.flowToken, waPhoneNumberId: result.waPhoneNumberId, waToken: result.waToken } }
|
||||
}, {
|
||||
detail: {
|
||||
summary: "Get flow url and token",
|
||||
@@ -172,7 +174,7 @@ const FlowRoute = new Elysia({
|
||||
.put(
|
||||
'/url-token',
|
||||
async ctx => {
|
||||
const { flowUrl, flowToken } = ctx.body
|
||||
const { flowUrl, flowToken, waPhoneNumberId, waToken } = ctx.body
|
||||
const result = await prisma.chatFlows.upsert({
|
||||
where: {
|
||||
id: "1",
|
||||
@@ -180,11 +182,15 @@ const FlowRoute = new Elysia({
|
||||
update: {
|
||||
flowUrl: flowUrl,
|
||||
flowToken: flowToken,
|
||||
waPhoneNumberId: waPhoneNumberId,
|
||||
waToken: waToken,
|
||||
},
|
||||
create: {
|
||||
id: "1",
|
||||
flowUrl: flowUrl,
|
||||
flowToken: flowToken,
|
||||
waPhoneNumberId: waPhoneNumberId,
|
||||
waToken: waToken,
|
||||
},
|
||||
})
|
||||
return { data: result }
|
||||
@@ -193,6 +199,8 @@ const FlowRoute = new Elysia({
|
||||
body: t.Object({
|
||||
flowUrl: t.String(),
|
||||
flowToken: t.String(),
|
||||
waPhoneNumberId: t.String(),
|
||||
waToken: t.String(),
|
||||
}),
|
||||
detail: {
|
||||
summary: "Update flow url and token",
|
||||
|
||||
@@ -2,7 +2,6 @@ import Elysia, { t } from "elysia";
|
||||
import { prisma } from "../lib/prisma";
|
||||
import type { WAHookMessage } from "types/wa_messages";
|
||||
import _ from "lodash";
|
||||
import dayjs from "dayjs";
|
||||
|
||||
async function fetchWithTimeout(input: RequestInfo, init: RequestInit, timeoutMs = 120_000) {
|
||||
const controller = new AbortController()
|
||||
@@ -14,6 +13,22 @@ async function fetchWithTimeout(input: RequestInfo, init: RequestInit, timeoutMs
|
||||
}
|
||||
}
|
||||
|
||||
async function sendReplyMessage(to: string, message: string, phoneNumberId: string, token: string) {
|
||||
return await fetch(`https://graph.facebook.com/v21.0/${phoneNumberId}/messages`, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
Authorization: `Bearer ${token}`,
|
||||
},
|
||||
body: JSON.stringify({
|
||||
messaging_product: "whatsapp",
|
||||
to,
|
||||
text: { body: message }
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const WaHookRoute = new Elysia({
|
||||
prefix: "/wa-hook",
|
||||
tags: ["WhatsApp Hook"],
|
||||
@@ -118,7 +133,11 @@ const WaHookRoute = new Elysia({
|
||||
data: createData,
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
if (flow?.waPhoneNumberId && flow?.waToken && number) {
|
||||
await sendReplyMessage(number, result.text, flow.waPhoneNumberId, flow.waToken)
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
console.log(responseText)
|
||||
|
||||
Reference in New Issue
Block a user