Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ulixee
GitHub Repository: ulixee/secret-agent
Path: blob/main/core/models/SocketsTable.ts
1028 views
1
import { Database as SqliteDatabase } from 'better-sqlite3';
2
import SqliteTable from '@secret-agent/commons/SqliteTable';
3
4
export default class SocketsTable extends SqliteTable<ISocketRecord> {
5
constructor(readonly db: SqliteDatabase) {
6
super(
7
db,
8
'Sockets',
9
[
10
['id', 'INTEGER', 'NOT NULL PRIMARY KEY'],
11
['alpn', 'TEXT'],
12
['serverName', 'TEXT'],
13
['localAddress', 'TEXT'],
14
['remoteAddress', 'TEXT'],
15
['dnsResolvedIp', 'TEXT'],
16
['createTime', 'INTEGER'],
17
['dnsLookupTime', 'INTEGER'],
18
['ipcConnectionTime', 'INTEGER'],
19
['connectTime', 'INTEGER'],
20
['errorTime', 'INTEGER'],
21
['closeTime', 'INTEGER'],
22
['connectError', 'TEXT'],
23
],
24
true,
25
);
26
}
27
28
public insert(record: ISocketRecord) {
29
const {
30
id,
31
localAddress,
32
remoteAddress,
33
serverName,
34
alpn,
35
createTime,
36
dnsLookupTime,
37
ipcConnectionTime,
38
dnsResolvedIp,
39
connectTime,
40
errorTime,
41
connectError,
42
closeTime,
43
} = record;
44
return this.queuePendingInsert([
45
id,
46
alpn,
47
serverName,
48
localAddress,
49
remoteAddress,
50
dnsResolvedIp,
51
createTime?.getTime(),
52
dnsLookupTime?.getTime(),
53
ipcConnectionTime?.getTime(),
54
connectTime?.getTime(),
55
errorTime?.getTime(),
56
closeTime?.getTime(),
57
connectError,
58
]);
59
}
60
}
61
62
export interface ISocketRecord {
63
id: number;
64
localAddress: string;
65
remoteAddress: string;
66
dnsResolvedIp: string;
67
alpn: string;
68
serverName: string;
69
createTime: Date;
70
dnsLookupTime: Date;
71
ipcConnectionTime: Date;
72
connectTime: Date;
73
errorTime: Date;
74
closeTime: Date;
75
connectError?: string;
76
}
77
78