feat: add disconnection information to BaileysStartupService and Instance model

- Updated BaileysStartupService to include disconnection handling logic.
- Enhanced Instance model to store disconnection status and details.
This commit is contained in:
Felipe Medeiros 2024-08-06 10:38:53 -03:00
parent 258f56759c
commit 1c3bea4225
3 changed files with 78 additions and 66 deletions

View File

@ -47,34 +47,37 @@ enum TriggerOperator {
} }
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)
connectionStatus InstanceConnectionStatus @default(open) connectionStatus InstanceConnectionStatus @default(open)
ownerJid String? @db.VarChar(100) ownerJid String? @db.VarChar(100)
profileName String? @db.VarChar(100) profileName String? @db.VarChar(100)
profilePicUrl String? @db.VarChar(500) profilePicUrl String? @db.VarChar(500)
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)
clientName String? @db.VarChar(100) clientName String? @db.VarChar(100)
createdAt DateTime? @default(now()) @db.Timestamp disconnectionReasonCode Int? @db.Int
updatedAt DateTime? @updatedAt @db.Timestamp disconnectionObject Json? @db.Json
Chat Chat[] disconnectionAt DateTime? @db.Timestamp
Contact Contact[] createdAt DateTime? @default(now()) @db.Timestamp
Message Message[] updatedAt DateTime? @updatedAt @db.Timestamp
Webhook Webhook? Chat Chat[]
Chatwoot Chatwoot? Contact Contact[]
Label Label[] Message Message[]
Proxy Proxy? Webhook Webhook?
Setting Setting? Chatwoot Chatwoot?
Rabbitmq Rabbitmq? Label Label[]
Sqs Sqs? Proxy Proxy?
Websocket Websocket? Setting Setting?
Typebot Typebot[] Rabbitmq Rabbitmq?
Session Session? Sqs Sqs?
MessageUpdate MessageUpdate[] Websocket Websocket?
TypebotSession TypebotSession[] Typebot Typebot[]
TypebotSetting TypebotSetting? Session Session?
MessageUpdate MessageUpdate[]
TypebotSession TypebotSession[]
TypebotSetting TypebotSetting?
} }
model Session { model Session {

View File

@ -60,44 +60,47 @@ enum DifyBotType {
} }
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)
connectionStatus InstanceConnectionStatus @default(open) connectionStatus InstanceConnectionStatus @default(open)
ownerJid String? @db.VarChar(100) ownerJid String? @db.VarChar(100)
profileName String? @db.VarChar(100) profileName String? @db.VarChar(100)
profilePicUrl String? @db.VarChar(500) profilePicUrl String? @db.VarChar(500)
integration String? @db.VarChar(100) integration String? @db.VarChar(100)
number String? @db.VarChar(100) number String? @db.VarChar(100)
businessId String? @db.VarChar(100) businessId String? @db.VarChar(100)
token String? @db.VarChar(255) token String? @db.VarChar(255)
clientName String? @db.VarChar(100) clientName String? @db.VarChar(100)
createdAt DateTime? @default(now()) @db.Timestamp disconnectionReasonCode Int? @db.Integer
updatedAt DateTime? @updatedAt @db.Timestamp disconnectionObject Json? @db.JsonB
Chat Chat[] disconnectionAt DateTime? @db.Timestamp
Contact Contact[] createdAt DateTime? @default(now()) @db.Timestamp
Message Message[] updatedAt DateTime? @updatedAt @db.Timestamp
Webhook Webhook? Chat Chat[]
Chatwoot Chatwoot? Contact Contact[]
Label Label[] Message Message[]
Proxy Proxy? Webhook Webhook?
Setting Setting? Chatwoot Chatwoot?
Rabbitmq Rabbitmq? Label Label[]
Sqs Sqs? Proxy Proxy?
Websocket Websocket? Setting Setting?
Typebot Typebot[] Rabbitmq Rabbitmq?
Session Session? Sqs Sqs?
MessageUpdate MessageUpdate[] Websocket Websocket?
TypebotSession TypebotSession[] Typebot Typebot[]
TypebotSetting TypebotSetting? Session Session?
Media Media[] MessageUpdate MessageUpdate[]
OpenaiCreds OpenaiCreds[] TypebotSession TypebotSession[]
OpenaiBot OpenaiBot[] TypebotSetting TypebotSetting?
OpenaiSession OpenaiSession[] Media Media[]
OpenaiSetting OpenaiSetting? OpenaiCreds OpenaiCreds[]
Template Template[] OpenaiBot OpenaiBot[]
Dify Dify[] OpenaiSession OpenaiSession[]
DifySession DifySession[] OpenaiSetting OpenaiSetting?
DifySetting DifySetting? Template Template[]
Dify Dify[]
DifySession DifySession[]
DifySetting DifySetting?
} }
model Session { model Session {

View File

@ -397,6 +397,9 @@ export class BaileysStartupService extends ChannelStartupService {
this.sendDataWebhook(Events.STATUS_INSTANCE, { this.sendDataWebhook(Events.STATUS_INSTANCE, {
instance: this.instance.name, instance: this.instance.name,
status: 'closed', status: 'closed',
disconnectionAt: new Date(),
disconnectionReasonCode: statusCode,
disconnectionObject: JSON.stringify(lastDisconnect),
}); });
if (this.configService.get<Database>('DATABASE').ENABLED) { if (this.configService.get<Database>('DATABASE').ENABLED) {
@ -404,6 +407,9 @@ export class BaileysStartupService extends ChannelStartupService {
where: { id: this.instanceId }, where: { id: this.instanceId },
data: { data: {
connectionStatus: 'close', connectionStatus: 'close',
disconnectionAt: new Date(),
disconnectionReasonCode: statusCode,
disconnectionObject: JSON.stringify(lastDisconnect),
}, },
}); });
} }