Path: blob/main/core/models/WebsocketMessagesTable.ts
1028 views
import { Database as SqliteDatabase } from 'better-sqlite3';1import IWebsocketResourceMessage from '@secret-agent/interfaces/IWebsocketResourceMessage';2import SqliteTable from '@secret-agent/commons/SqliteTable';34export default class WebsocketMessagesTable extends SqliteTable<IWebsocketMessageRecord> {5constructor(readonly db: SqliteDatabase) {6super(db, 'WebsocketMessages', [7['id', 'INTEGER', 'NOT NULL PRIMARY KEY'],8['resourceId', 'INTEGER'],9['message', 'BLOB'],10['isBinary', 'INTEGER'],11['isFromServer', 'INTEGER'],12['receivedAtCommandId', 'INTEGER'],13['seenAtCommandId', 'INTEGER'],14]);15}1617public insert(lastCommandId: number, resourceMessage: IWebsocketResourceMessage) {18return this.queuePendingInsert([19resourceMessage.messageId,20resourceMessage.resourceId,21Buffer.from(resourceMessage.message),22typeof resourceMessage.message !== 'string' ? 1 : 0,23resourceMessage.source === 'server' ? 1 : 0,24lastCommandId,25undefined,26]);27}28}2930export interface IWebsocketMessageRecord {31id: number;32resourceId: number;33message: Buffer;34isBinary: boolean;35isFromServer: boolean;36receivedAtCommandId: number;37seenAtCommandId: number;38}394041