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