MySQL implementation via prism orm

This commit is contained in:
Davidson Gomes 2024-06-09 08:51:51 -03:00
parent 72de0a6e4d
commit 9f1c2e4e5f
2 changed files with 69 additions and 32 deletions

View File

@ -33,6 +33,18 @@ enum TypebotSessionStatus {
paused paused
} }
enum TriggerType {
all
keyword
}
enum TriggerOperator {
contains
equals
startsWith
endsWith
}
model Instance { model Instance {
id String @id @default(cuid()) id String @id @default(cuid())
name String @unique @db.VarChar(255) name String @unique @db.VarChar(255)
@ -42,8 +54,9 @@ model Instance {
integration String? @db.VarChar(100) integration String? @db.VarChar(100)
number String? @db.VarChar(100) number String? @db.VarChar(100)
token String? @unique @db.VarChar(255) token String? @unique @db.VarChar(255)
createdAt DateTime? @default(now()) @db.Date clientName String? @db.VarChar(100)
updatedAt DateTime? @updatedAt @db.Date createdAt DateTime? @default(now()) @db.Timestamp
updatedAt DateTime? @updatedAt @db.Timestamp
Chat Chat[] Chat Chat[]
Contact Contact[] Contact Contact[]
Message Message[] Message Message[]
@ -55,14 +68,15 @@ model Instance {
Rabbitmq Rabbitmq? Rabbitmq Rabbitmq?
Sqs Sqs? Sqs Sqs?
Websocket Websocket? Websocket Websocket?
Typebot Typebot? Typebot Typebot[]
Session Session? Session Session?
MessageUpdate MessageUpdate[] MessageUpdate MessageUpdate[]
TypebotSession TypebotSession[] TypebotSession TypebotSession[]
TypebotSetting TypebotSetting?
} }
model Session { model Session {
id Int @id @unique @default(autoincrement()) id String @id @default(cuid())
sessionId String @unique sessionId String @unique
creds String? @db.Text creds String? @db.Text
createdAt DateTime @default(now()) createdAt DateTime @default(now())
@ -70,18 +84,17 @@ model Session {
} }
model Chat { model Chat {
id Int @id @default(autoincrement()) id String @id @default(cuid())
remoteJid String @db.VarChar(100) remoteJid String @db.VarChar(100)
lastMsgTimestamp String? @db.VarChar(100) labels Json? @db.Json
labels Json? @db.Json createdAt DateTime? @default(now()) @db.Date
createdAt DateTime? @default(now()) @db.Date updatedAt DateTime? @updatedAt @db.Date
updatedAt DateTime? @updatedAt @db.Date Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade) instanceId String
instanceId String
} }
model Contact { model Contact {
id Int @id @default(autoincrement()) id String @id @default(cuid())
remoteJid String @db.VarChar(100) remoteJid String @db.VarChar(100)
pushName String? @db.VarChar(100) pushName String? @db.VarChar(100)
profilePicUrl String? @db.VarChar(500) profilePicUrl String? @db.VarChar(500)
@ -92,7 +105,7 @@ model Contact {
} }
model Message { model Message {
id Int @id @default(autoincrement()) id String @id @default(cuid())
key Json @db.Json key Json @db.Json
pushName String? @db.VarChar(100) pushName String? @db.VarChar(100)
participant String? @db.VarChar(100) participant String? @db.VarChar(100)
@ -108,13 +121,13 @@ model Message {
chatwootIsRead Boolean? chatwootIsRead Boolean?
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade) Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
instanceId String instanceId String
typebotSessionId Int? typebotSessionId String?
MessageUpdate MessageUpdate[] MessageUpdate MessageUpdate[]
TypebotSession TypebotSession? @relation(fields: [typebotSessionId], references: [id]) TypebotSession TypebotSession? @relation(fields: [typebotSessionId], references: [id])
} }
model MessageUpdate { model MessageUpdate {
id Int @id @default(autoincrement()) id String @id @default(cuid())
keyId String @db.VarChar(100) keyId String @db.VarChar(100)
remoteJid String @db.VarChar(100) remoteJid String @db.VarChar(100)
fromMe Boolean fromMe Boolean
@ -123,13 +136,13 @@ model MessageUpdate {
pollUpdates Json? @db.Json pollUpdates Json? @db.Json
status String @db.VarChar(30) status String @db.VarChar(30)
Message Message @relation(fields: [messageId], references: [id], onDelete: Cascade) Message Message @relation(fields: [messageId], references: [id], onDelete: Cascade)
messageId Int messageId String
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade) Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
instanceId String instanceId String
} }
model Webhook { model Webhook {
id Int @id @default(autoincrement()) id String @id @default(cuid())
url String @db.VarChar(500) url String @db.VarChar(500)
enabled Boolean? @default(false) enabled Boolean? @default(false)
events Json? @db.Json events Json? @db.Json
@ -142,7 +155,7 @@ model Webhook {
} }
model Chatwoot { model Chatwoot {
id Int @id @default(autoincrement()) id String @id @default(cuid())
enabled Boolean? @default(true) enabled Boolean? @default(true)
accountId String? @db.VarChar(100) accountId String? @db.VarChar(100)
token String? @db.VarChar(100) token String? @db.VarChar(100)
@ -164,7 +177,7 @@ model Chatwoot {
} }
model Label { model Label {
id Int @id @default(autoincrement()) id String @id @default(cuid())
labelId String? @unique @db.VarChar(100) labelId String? @unique @db.VarChar(100)
name String @db.VarChar(100) name String @db.VarChar(100)
color String @db.VarChar(100) color String @db.VarChar(100)
@ -176,7 +189,7 @@ model Label {
} }
model Proxy { model Proxy {
id Int @id @default(autoincrement()) id String @id @default(cuid())
enabled Boolean @default(false) enabled Boolean @default(false)
host String @db.VarChar(100) host String @db.VarChar(100)
port String @db.VarChar(100) port String @db.VarChar(100)
@ -190,7 +203,7 @@ model Proxy {
} }
model Setting { model Setting {
id Int @id @default(autoincrement()) id String @id @default(cuid())
rejectCall Boolean @default(false) rejectCall Boolean @default(false)
msgCall String? @db.VarChar(100) msgCall String? @db.VarChar(100)
groupsIgnore Boolean @default(false) groupsIgnore Boolean @default(false)
@ -205,7 +218,7 @@ model Setting {
} }
model Rabbitmq { model Rabbitmq {
id Int @id @default(autoincrement()) id String @id @default(cuid())
enabled Boolean @default(false) enabled Boolean @default(false)
events Json @db.Json events Json @db.Json
createdAt DateTime? @default(now()) @db.Date createdAt DateTime? @default(now()) @db.Date
@ -215,7 +228,7 @@ model Rabbitmq {
} }
model Sqs { model Sqs {
id Int @id @default(autoincrement()) id String @id @default(cuid())
enabled Boolean @default(false) enabled Boolean @default(false)
events Json @db.Json events Json @db.Json
createdAt DateTime? @default(now()) @db.Date createdAt DateTime? @default(now()) @db.Date
@ -225,7 +238,7 @@ model Sqs {
} }
model Websocket { model Websocket {
id Int @id @default(autoincrement()) id String @id @default(cuid())
enabled Boolean @default(false) enabled Boolean @default(false)
events Json @db.Json events Json @db.Json
createdAt DateTime? @default(now()) @db.Date createdAt DateTime? @default(now()) @db.Date
@ -235,24 +248,29 @@ model Websocket {
} }
model Typebot { model Typebot {
id Int @id @default(autoincrement()) id String @id @default(cuid())
enabled Boolean @default(true) enabled Boolean @default(true)
url String @db.VarChar(500) url String @db.VarChar(500)
typebot String @db.VarChar(100) typebot String @db.VarChar(100)
expire Int @default(0) @db.Int expire Int? @default(0) @db.Int
keywordFinish String? @db.VarChar(100) keywordFinish String? @db.VarChar(100)
delayMessage Int? @db.Int delayMessage Int? @db.Int
unknownMessage String? @db.VarChar(100) unknownMessage String? @db.VarChar(100)
listeningFromMe Boolean @default(false) listeningFromMe Boolean? @default(false)
stopBotFromMe Boolean? @default(false)
keepOpen Boolean? @default(false)
createdAt DateTime? @default(now()) @db.Date createdAt DateTime? @default(now()) @db.Date
updatedAt DateTime? @updatedAt @db.Date updatedAt DateTime? @updatedAt @db.Date
triggerType TriggerType?
triggerOperator TriggerOperator?
triggerValue String?
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade) Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
instanceId String @unique instanceId String
sessions TypebotSession[] sessions TypebotSession[]
} }
model TypebotSession { model TypebotSession {
id Int @id @default(autoincrement()) id String @id @default(cuid())
remoteJid String @db.VarChar(100) remoteJid String @db.VarChar(100)
pushName String? @db.VarChar(100) pushName String? @db.VarChar(100)
sessionId String @db.VarChar(100) sessionId String @db.VarChar(100)
@ -261,8 +279,23 @@ model TypebotSession {
createdAt DateTime? @default(now()) @db.Date createdAt DateTime? @default(now()) @db.Date
updatedAt DateTime @updatedAt @db.Date updatedAt DateTime @updatedAt @db.Date
Typebot Typebot @relation(fields: [typebotId], references: [id], onDelete: Cascade) Typebot Typebot @relation(fields: [typebotId], references: [id], onDelete: Cascade)
typebotId Int @db.Int typebotId String
Message Message[] Message Message[]
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade) Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
instanceId String instanceId String
} }
model TypebotSetting {
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)
createdAt DateTime? @default(now()) @db.Date
updatedAt DateTime @updatedAt @db.Date
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
instanceId String @unique
}

View File

@ -355,7 +355,11 @@ export class WAMonitoringService {
} }
private async loadInstancesFromDatabasePostgres() { private async loadInstancesFromDatabasePostgres() {
const instances = await this.prismaRepository.instance.findMany(); const clientName = await this.configService.get<Database>('DATABASE').CONNECTION.CLIENT_NAME;
const instances = await this.prismaRepository.instance.findMany({
where: { clientName: clientName },
});
if (instances.length === 0) { if (instances.length === 0) {
return; return;