mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-12-14 20:39:33 -06:00
Completed cleanup of chatbot integrations: - Removed Chatwoot import and env config references from whatsapp.baileys.service.ts - Updated BaileysStartupService constructor to remove chatwootCache parameter - Updated BusinessStartupService constructor to remove chatwootCache parameter - Fixed channel.controller.ts ChannelDataType to remove chatwootCache - Updated service instantiation calls to match new constructor signatures - Cleaned MySQL Prisma schema: removed all 12 chatbot models and 2 enums - Removed Chatwoot and Typebot fields from Message model in MySQL schema - Removed chatbot relations from Instance model in MySQL schema Both PostgreSQL and MySQL schemas are now fully cleaned of chatbot references.
393 lines
14 KiB
Plaintext
393 lines
14 KiB
Plaintext
// This is your Prisma schema file,
|
|
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
|
|
|
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
|
|
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
|
|
|
|
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "mysql"
|
|
url = env("DATABASE_CONNECTION_URI")
|
|
}
|
|
|
|
enum InstanceConnectionStatus {
|
|
open
|
|
close
|
|
connecting
|
|
}
|
|
|
|
enum DeviceMessage {
|
|
ios
|
|
android
|
|
web
|
|
unknown
|
|
desktop
|
|
}
|
|
|
|
enum SessionStatus {
|
|
opened
|
|
closed
|
|
paused
|
|
}
|
|
|
|
enum TriggerType {
|
|
all
|
|
keyword
|
|
none
|
|
advanced
|
|
}
|
|
|
|
enum TriggerOperator {
|
|
contains
|
|
equals
|
|
startsWith
|
|
endsWith
|
|
regex
|
|
}
|
|
|
|
model Instance {
|
|
id String @id @default(cuid())
|
|
name String @unique @db.VarChar(255)
|
|
connectionStatus InstanceConnectionStatus @default(open)
|
|
ownerJid String? @db.VarChar(100)
|
|
profileName String? @db.VarChar(100)
|
|
profilePicUrl String? @db.VarChar(500)
|
|
integration String? @db.VarChar(100)
|
|
number String? @db.VarChar(100)
|
|
businessId String? @db.VarChar(100)
|
|
token String? @db.VarChar(255)
|
|
clientName String? @db.VarChar(100)
|
|
disconnectionReasonCode Int? @db.Int
|
|
disconnectionObject Json? @db.Json
|
|
disconnectionAt DateTime? @db.Timestamp
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime? @updatedAt @db.Timestamp
|
|
Chat Chat[]
|
|
Contact Contact[]
|
|
Message Message[]
|
|
Webhook Webhook?
|
|
Label Label[]
|
|
Proxy Proxy?
|
|
Setting Setting?
|
|
Rabbitmq Rabbitmq?
|
|
Nats Nats?
|
|
Sqs Sqs?
|
|
Kafka Kafka?
|
|
Websocket Websocket?
|
|
Session Session?
|
|
MessageUpdate MessageUpdate[]
|
|
Media Media[]
|
|
Template Template[]
|
|
IntegrationSession IntegrationSession[]
|
|
N8n N8n[]
|
|
N8nSetting N8nSetting?
|
|
Pusher Pusher?
|
|
}
|
|
|
|
model Session {
|
|
id String @id @default(cuid())
|
|
sessionId String @unique
|
|
creds String? @db.Text
|
|
createdAt DateTime @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
Instance Instance @relation(fields: [sessionId], references: [id], onDelete: Cascade)
|
|
}
|
|
|
|
model Chat {
|
|
id String @id @default(cuid())
|
|
remoteJid String @db.VarChar(100)
|
|
name String? @db.VarChar(100)
|
|
labels Json? @db.Json
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime? @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
unreadMessages Int @default(0)
|
|
|
|
@@unique([instanceId, remoteJid])
|
|
@@index([instanceId])
|
|
@@index([remoteJid])
|
|
}
|
|
|
|
model Contact {
|
|
id String @id @default(cuid())
|
|
remoteJid String @db.VarChar(100)
|
|
pushName String? @db.VarChar(100)
|
|
profilePicUrl String? @db.VarChar(500)
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime? @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
|
|
@@unique([remoteJid, instanceId])
|
|
@@index([remoteJid])
|
|
@@index([instanceId])
|
|
}
|
|
|
|
model Message {
|
|
id String @id @default(cuid())
|
|
key Json @db.Json
|
|
pushName String? @db.VarChar(100)
|
|
participant String? @db.VarChar(100)
|
|
messageType String @db.VarChar(100)
|
|
message Json @db.Json
|
|
contextInfo Json? @db.Json
|
|
source DeviceMessage
|
|
messageTimestamp Int @db.Int
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
MessageUpdate MessageUpdate[]
|
|
Media Media?
|
|
webhookUrl String? @db.VarChar(500)
|
|
status String? @db.VarChar(30)
|
|
|
|
sessionId String?
|
|
session IntegrationSession? @relation(fields: [sessionId], references: [id])
|
|
|
|
@@index([instanceId])
|
|
}
|
|
|
|
model MessageUpdate {
|
|
id String @id @default(cuid())
|
|
keyId String @db.VarChar(100)
|
|
remoteJid String @db.VarChar(100)
|
|
fromMe Boolean
|
|
participant String? @db.VarChar(100)
|
|
pollUpdates Json? @db.Json
|
|
status String @db.VarChar(30)
|
|
Message Message @relation(fields: [messageId], references: [id], onDelete: Cascade)
|
|
messageId String
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
|
|
@@index([instanceId])
|
|
@@index([messageId])
|
|
}
|
|
|
|
model Webhook {
|
|
id String @id @default(cuid())
|
|
url String @db.VarChar(500)
|
|
headers Json? @db.Json
|
|
enabled Boolean? @default(true)
|
|
events Json? @db.Json
|
|
webhookByEvents Boolean? @default(false)
|
|
webhookBase64 Boolean? @default(false)
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
|
|
@@index([instanceId])
|
|
}
|
|
|
|
model Label {
|
|
id String @id @default(cuid())
|
|
labelId String? @db.VarChar(100)
|
|
name String @db.VarChar(100)
|
|
color String @db.VarChar(100)
|
|
predefinedId String? @db.VarChar(100)
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
}
|
|
|
|
model Proxy {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false)
|
|
host String @db.VarChar(100)
|
|
port String @db.VarChar(100)
|
|
protocol String @db.VarChar(100)
|
|
username String @db.VarChar(100)
|
|
password String @db.VarChar(100)
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Setting {
|
|
id String @id @default(cuid())
|
|
rejectCall Boolean @default(false)
|
|
msgCall String? @db.VarChar(100)
|
|
groupsIgnore Boolean @default(false)
|
|
alwaysOnline Boolean @default(false)
|
|
readMessages Boolean @default(false)
|
|
readStatus Boolean @default(false)
|
|
syncFullHistory Boolean @default(false)
|
|
wavoipToken String? @db.VarChar(100)
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
|
|
@@index([instanceId])
|
|
}
|
|
|
|
model Rabbitmq {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false)
|
|
events Json @db.Json
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Nats {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false)
|
|
events Json @db.Json
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Sqs {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false)
|
|
events Json @db.Json
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Kafka {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false)
|
|
events Json @db.Json
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Websocket {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false)
|
|
events Json @db.Json
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Pusher {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false)
|
|
appId String @db.VarChar(100)
|
|
key String @db.VarChar(100)
|
|
secret String @db.VarChar(100)
|
|
cluster String @db.VarChar(100)
|
|
useTLS Boolean @default(false)
|
|
events Json @db.Json
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model IntegrationSession {
|
|
id String @id @default(cuid())
|
|
sessionId String @db.VarChar(255)
|
|
remoteJid String @db.VarChar(100)
|
|
pushName String?
|
|
status SessionStatus
|
|
awaitUser Boolean @default(false)
|
|
context Json?
|
|
type String? @db.VarChar(100)
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Message Message[]
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
parameters Json?
|
|
|
|
botId String?
|
|
}
|
|
|
|
model Media {
|
|
id String @id @default(cuid())
|
|
fileName String @db.VarChar(500)
|
|
type String @db.VarChar(100)
|
|
mimetype String @db.VarChar(100)
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
Message Message @relation(fields: [messageId], references: [id], onDelete: Cascade)
|
|
messageId String @unique
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
}
|
|
|
|
model Template {
|
|
id String @id @default(cuid())
|
|
templateId String @unique @db.VarChar(255)
|
|
name String @unique @db.VarChar(255)
|
|
template Json @db.Json
|
|
webhookUrl String? @db.VarChar(500)
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
}
|
|
|
|
model IsOnWhatsapp {
|
|
id String @id @default(cuid())
|
|
remoteJid String @unique @db.VarChar(100)
|
|
jidOptions String
|
|
createdAt DateTime @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
}
|
|
|
|
model N8n {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(true) @db.TinyInt()
|
|
description String? @db.VarChar(255)
|
|
webhookUrl String? @db.VarChar(255)
|
|
basicAuthUser String? @db.VarChar(255)
|
|
basicAuthPass String? @db.VarChar(255)
|
|
expire Int? @default(0) @db.Int
|
|
keywordFinish String? @db.VarChar(100)
|
|
delayMessage Int? @db.Int
|
|
unknownMessage String? @db.VarChar(100)
|
|
listeningFromMe Boolean? @default(false)
|
|
stopBotFromMe Boolean? @default(false)
|
|
keepOpen Boolean? @default(false)
|
|
debounceTime Int? @db.Int
|
|
ignoreJids Json?
|
|
splitMessages Boolean? @default(false)
|
|
timePerChar Int? @default(50) @db.Int
|
|
triggerType TriggerType?
|
|
triggerOperator TriggerOperator?
|
|
triggerValue String?
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
N8nSetting N8nSetting[]
|
|
}
|
|
|
|
model N8nSetting {
|
|
id String @id @default(cuid())
|
|
expire Int? @default(0) @db.Int
|
|
keywordFinish String? @db.VarChar(100)
|
|
delayMessage Int? @db.Int
|
|
unknownMessage String? @db.VarChar(100)
|
|
listeningFromMe Boolean? @default(false)
|
|
stopBotFromMe Boolean? @default(false)
|
|
keepOpen Boolean? @default(false)
|
|
debounceTime Int? @db.Int
|
|
ignoreJids Json?
|
|
splitMessages Boolean? @default(false)
|
|
timePerChar Int? @default(50) @db.Int
|
|
createdAt DateTime? @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Fallback N8n? @relation(fields: [n8nIdFallback], references: [id])
|
|
n8nIdFallback String? @db.VarChar(100)
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|