interaqt 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/ActivityCall.d.ts +68 -0
- package/dist/runtime/ActivityCall.d.ts.map +1 -0
- package/dist/runtime/ActivityCall.js +379 -0
- package/dist/runtime/ActivityCall.js.map +1 -0
- package/dist/runtime/Controller.d.ts +60 -0
- package/dist/runtime/Controller.d.ts.map +1 -0
- package/dist/runtime/Controller.js +225 -0
- package/dist/runtime/Controller.js.map +1 -0
- package/dist/runtime/InteractionCall.d.ts +102 -0
- package/dist/runtime/InteractionCall.d.ts.map +1 -0
- package/dist/runtime/InteractionCall.js +385 -0
- package/dist/runtime/InteractionCall.js.map +1 -0
- package/dist/runtime/MonoSystem.d.ts +26 -0
- package/dist/runtime/MonoSystem.d.ts.map +1 -0
- package/dist/runtime/MonoSystem.js +331 -0
- package/dist/runtime/MonoSystem.js.map +1 -0
- package/dist/runtime/Mysql.d.ts +35 -0
- package/dist/runtime/Mysql.d.ts.map +1 -0
- package/dist/runtime/Mysql.js +171 -0
- package/dist/runtime/Mysql.js.map +1 -0
- package/dist/runtime/PostgreSQL.d.ts +36 -0
- package/dist/runtime/PostgreSQL.d.ts.map +1 -0
- package/dist/runtime/PostgreSQL.js +172 -0
- package/dist/runtime/PostgreSQL.js.map +1 -0
- package/dist/runtime/SQLite.d.ts +34 -0
- package/dist/runtime/SQLite.d.ts.map +1 -0
- package/dist/runtime/SQLite.js +146 -0
- package/dist/runtime/SQLite.js.map +1 -0
- package/dist/runtime/Scheduler.d.ts +81 -0
- package/dist/runtime/Scheduler.d.ts.map +1 -0
- package/dist/runtime/Scheduler.js +457 -0
- package/dist/runtime/Scheduler.js.map +1 -0
- package/dist/runtime/System.d.ts +312 -0
- package/dist/runtime/System.d.ts.map +1 -0
- package/dist/runtime/System.js +90 -0
- package/dist/runtime/System.js.map +1 -0
- package/dist/runtime/asyncInteractionContext.d.ts +3 -0
- package/dist/runtime/asyncInteractionContext.d.ts.map +1 -0
- package/dist/runtime/asyncInteractionContext.js +3 -0
- package/dist/runtime/asyncInteractionContext.js.map +1 -0
- package/dist/runtime/boolExpression.d.ts +23 -0
- package/dist/runtime/boolExpression.d.ts.map +1 -0
- package/dist/runtime/boolExpression.js +43 -0
- package/dist/runtime/boolExpression.js.map +1 -0
- package/dist/runtime/computedDataHandles/Any.d.ts +52 -0
- package/dist/runtime/computedDataHandles/Any.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Any.js +152 -0
- package/dist/runtime/computedDataHandles/Any.js.map +1 -0
- package/dist/runtime/computedDataHandles/Computation.d.ts +108 -0
- package/dist/runtime/computedDataHandles/Computation.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Computation.js +49 -0
- package/dist/runtime/computedDataHandles/Computation.js.map +1 -0
- package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts +42 -0
- package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/ComputedDataHandle.js +4 -0
- package/dist/runtime/computedDataHandles/ComputedDataHandle.js.map +1 -0
- package/dist/runtime/computedDataHandles/Count.d.ts +45 -0
- package/dist/runtime/computedDataHandles/Count.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Count.js +85 -0
- package/dist/runtime/computedDataHandles/Count.js.map +1 -0
- package/dist/runtime/computedDataHandles/Every.d.ts +56 -0
- package/dist/runtime/computedDataHandles/Every.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Every.js +178 -0
- package/dist/runtime/computedDataHandles/Every.js.map +1 -0
- package/dist/runtime/computedDataHandles/StateMachine.d.ts +74 -0
- package/dist/runtime/computedDataHandles/StateMachine.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/StateMachine.js +180 -0
- package/dist/runtime/computedDataHandles/StateMachine.js.map +1 -0
- package/dist/runtime/computedDataHandles/Transform.d.ts +26 -0
- package/dist/runtime/computedDataHandles/Transform.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Transform.js +106 -0
- package/dist/runtime/computedDataHandles/Transform.js.map +1 -0
- package/dist/runtime/computedDataHandles/TransitionFinder.d.ts +57 -0
- package/dist/runtime/computedDataHandles/TransitionFinder.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/TransitionFinder.js +40 -0
- package/dist/runtime/computedDataHandles/TransitionFinder.js.map +1 -0
- package/dist/runtime/computedDataHandles/WeightedSummation.d.ts +57 -0
- package/dist/runtime/computedDataHandles/WeightedSummation.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/WeightedSummation.js +146 -0
- package/dist/runtime/computedDataHandles/WeightedSummation.js.map +1 -0
- package/dist/runtime/computedDataHandles/index.d.ts +7 -0
- package/dist/runtime/computedDataHandles/index.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/index.js +7 -0
- package/dist/runtime/computedDataHandles/index.js.map +1 -0
- package/dist/runtime/index.d.ts +15 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +15 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/server.d.ts +35 -0
- package/dist/runtime/server.d.ts.map +1 -0
- package/dist/runtime/server.js +171 -0
- package/dist/runtime/server.js.map +1 -0
- package/dist/runtime/types/boolExpression.d.ts +22 -0
- package/dist/runtime/types/boolExpression.d.ts.map +1 -0
- package/dist/runtime/types/boolExpression.js +6 -0
- package/dist/runtime/types/boolExpression.js.map +1 -0
- package/dist/runtime/util.d.ts +10 -0
- package/dist/runtime/util.d.ts.map +1 -0
- package/dist/runtime/util.js +39 -0
- package/dist/runtime/util.js.map +1 -0
- package/dist/shared/BoolExp.d.ts +97 -0
- package/dist/shared/BoolExp.d.ts.map +1 -0
- package/dist/shared/BoolExp.js +252 -0
- package/dist/shared/BoolExp.js.map +1 -0
- package/dist/shared/activity/Activity.d.ts +465 -0
- package/dist/shared/activity/Activity.d.ts.map +1 -0
- package/dist/shared/activity/Activity.js +264 -0
- package/dist/shared/activity/Activity.js.map +1 -0
- package/dist/shared/activity/Condition.d.ts +75 -0
- package/dist/shared/activity/Condition.d.ts.map +1 -0
- package/dist/shared/activity/Condition.js +51 -0
- package/dist/shared/activity/Condition.js.map +1 -0
- package/dist/shared/activity/Data.d.ts +115 -0
- package/dist/shared/activity/Data.d.ts.map +1 -0
- package/dist/shared/activity/Data.js +89 -0
- package/dist/shared/activity/Data.js.map +1 -0
- package/dist/shared/attributive.d.ts +93 -0
- package/dist/shared/attributive.d.ts.map +1 -0
- package/dist/shared/attributive.js +59 -0
- package/dist/shared/attributive.js.map +1 -0
- package/dist/shared/computed.d.ts +607 -0
- package/dist/shared/computed.d.ts.map +1 -0
- package/dist/shared/computed.js +202 -0
- package/dist/shared/computed.js.map +1 -0
- package/dist/shared/createClass.d.ts +102 -0
- package/dist/shared/createClass.d.ts.map +1 -0
- package/dist/shared/createClass.js +276 -0
- package/dist/shared/createClass.js.map +1 -0
- package/dist/shared/dictionary/Dictionary.d.ts +40 -0
- package/dist/shared/dictionary/Dictionary.d.ts.map +1 -0
- package/dist/shared/dictionary/Dictionary.js +51 -0
- package/dist/shared/dictionary/Dictionary.js.map +1 -0
- package/dist/shared/entity/Entity.d.ts +149 -0
- package/dist/shared/entity/Entity.d.ts.map +1 -0
- package/dist/shared/entity/Entity.js +226 -0
- package/dist/shared/entity/Entity.js.map +1 -0
- package/dist/shared/index.d.ts +11 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +11 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/user/User.d.ts +21 -0
- package/dist/shared/user/User.d.ts.map +1 -0
- package/dist/shared/user/User.js +11 -0
- package/dist/shared/user/User.js.map +1 -0
- package/dist/shared/utils.d.ts +11 -0
- package/dist/shared/utils.d.ts.map +1 -0
- package/dist/shared/utils.js +19 -0
- package/dist/shared/utils.js.map +1 -0
- package/dist/storage/erstorage/AttributeInfo.d.ts +40 -0
- package/dist/storage/erstorage/AttributeInfo.d.ts.map +1 -0
- package/dist/storage/erstorage/AttributeInfo.js +147 -0
- package/dist/storage/erstorage/AttributeInfo.js.map +1 -0
- package/dist/storage/erstorage/AttributeQuery.d.ts +33 -0
- package/dist/storage/erstorage/AttributeQuery.d.ts.map +1 -0
- package/dist/storage/erstorage/AttributeQuery.js +190 -0
- package/dist/storage/erstorage/AttributeQuery.js.map +1 -0
- package/dist/storage/erstorage/EntityQueryHandle.d.ts +29 -0
- package/dist/storage/erstorage/EntityQueryHandle.d.ts.map +1 -0
- package/dist/storage/erstorage/EntityQueryHandle.js +78 -0
- package/dist/storage/erstorage/EntityQueryHandle.js.map +1 -0
- package/dist/storage/erstorage/EntityToTableMap.d.ts +85 -0
- package/dist/storage/erstorage/EntityToTableMap.d.ts.map +1 -0
- package/dist/storage/erstorage/EntityToTableMap.js +262 -0
- package/dist/storage/erstorage/EntityToTableMap.js.map +1 -0
- package/dist/storage/erstorage/LinkInfo.d.ts +35 -0
- package/dist/storage/erstorage/LinkInfo.d.ts.map +1 -0
- package/dist/storage/erstorage/LinkInfo.js +89 -0
- package/dist/storage/erstorage/LinkInfo.js.map +1 -0
- package/dist/storage/erstorage/MatchExp.d.ts +37 -0
- package/dist/storage/erstorage/MatchExp.d.ts.map +1 -0
- package/dist/storage/erstorage/MatchExp.js +211 -0
- package/dist/storage/erstorage/MatchExp.js.map +1 -0
- package/dist/storage/erstorage/Modifier.d.ts +23 -0
- package/dist/storage/erstorage/Modifier.d.ts.map +1 -0
- package/dist/storage/erstorage/Modifier.js +24 -0
- package/dist/storage/erstorage/Modifier.js.map +1 -0
- package/dist/storage/erstorage/NewRecordData.d.ts +42 -0
- package/dist/storage/erstorage/NewRecordData.d.ts.map +1 -0
- package/dist/storage/erstorage/NewRecordData.js +178 -0
- package/dist/storage/erstorage/NewRecordData.js.map +1 -0
- package/dist/storage/erstorage/RecordInfo.d.ts +26 -0
- package/dist/storage/erstorage/RecordInfo.d.ts.map +1 -0
- package/dist/storage/erstorage/RecordInfo.js +111 -0
- package/dist/storage/erstorage/RecordInfo.js.map +1 -0
- package/dist/storage/erstorage/RecordQuery.d.ts +73 -0
- package/dist/storage/erstorage/RecordQuery.d.ts.map +1 -0
- package/dist/storage/erstorage/RecordQuery.js +158 -0
- package/dist/storage/erstorage/RecordQuery.js.map +1 -0
- package/dist/storage/erstorage/RecordQueryAgent.d.ts +84 -0
- package/dist/storage/erstorage/RecordQueryAgent.d.ts.map +1 -0
- package/dist/storage/erstorage/RecordQueryAgent.js +1130 -0
- package/dist/storage/erstorage/RecordQueryAgent.js.map +1 -0
- package/dist/storage/erstorage/Setup.d.ts +49 -0
- package/dist/storage/erstorage/Setup.d.ts.map +1 -0
- package/dist/storage/erstorage/Setup.js +400 -0
- package/dist/storage/erstorage/Setup.js.map +1 -0
- package/dist/storage/erstorage/util.d.ts +6 -0
- package/dist/storage/erstorage/util.d.ts.map +1 -0
- package/dist/storage/erstorage/util.js +25 -0
- package/dist/storage/erstorage/util.js.map +1 -0
- package/dist/storage/index.d.ts +13 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +13 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/utils.d.ts +10 -0
- package/dist/storage/utils.d.ts.map +1 -0
- package/dist/storage/utils.js +48 -0
- package/dist/storage/utils.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { ROW_ID_ATTR } from "./System.js";
|
|
2
|
+
import pg from 'pg';
|
|
3
|
+
import { asyncInteractionContext } from "./asyncInteractionContext.js";
|
|
4
|
+
import pino from "pino";
|
|
5
|
+
const { Client } = pg;
|
|
6
|
+
class IDSystem {
|
|
7
|
+
constructor(db) {
|
|
8
|
+
this.db = db;
|
|
9
|
+
}
|
|
10
|
+
setup() {
|
|
11
|
+
return this.db.scheme(`CREATE Table IF NOT EXISTS "_IDS_" (last INTEGER, name TEXT)`);
|
|
12
|
+
}
|
|
13
|
+
async getAutoId(recordName) {
|
|
14
|
+
const lastId = (await this.db.query(`SELECT last FROM "_IDS_" WHERE name = '${recordName}'`, [], `finding last id of ${recordName}`))[0]?.last;
|
|
15
|
+
const newId = (lastId || 0) + 1;
|
|
16
|
+
const name = `set last id for ${recordName}: ${newId}`;
|
|
17
|
+
if (lastId === undefined) {
|
|
18
|
+
await this.db.scheme(`INSERT INTO "_IDS_" (name, last) VALUES ('${recordName}', ${newId})`, name);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
await this.db.update(`UPDATE "_IDS_" SET last = $1 WHERE name = $2`, [newId, recordName], undefined, name);
|
|
22
|
+
}
|
|
23
|
+
return newId;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class PostgreSQLDB {
|
|
27
|
+
constructor(database, options = {}) {
|
|
28
|
+
this.database = database;
|
|
29
|
+
this.options = options;
|
|
30
|
+
this.idSystem = new IDSystem(this);
|
|
31
|
+
this.logger = this.options?.logger || pino();
|
|
32
|
+
this.db = new Client({
|
|
33
|
+
...options,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async open(forceDrop = false) {
|
|
37
|
+
await this.db.connect();
|
|
38
|
+
// 要不要有存在 就删掉的?
|
|
39
|
+
// SELECT 'DROP DATABASE your_database_name' WHERE EXISTS (SELECT FROM pg_database WHERE dataname = 'your_database_name');
|
|
40
|
+
const databaseExist = await this.db.query(`SELECT FROM pg_database WHERE datname = '${this.database}'`);
|
|
41
|
+
if (databaseExist.rows.length === 0) {
|
|
42
|
+
await this.db.query(`CREATE DATABASE ${this.database}`);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
if (forceDrop) {
|
|
46
|
+
await this.db.query(`DROP DATABASE ${this.database}`);
|
|
47
|
+
await this.db.query(`CREATE DATABASE ${this.database}`);
|
|
48
|
+
}
|
|
49
|
+
this.db = new Client({
|
|
50
|
+
...this.options,
|
|
51
|
+
database: this.database
|
|
52
|
+
});
|
|
53
|
+
await this.db.connect();
|
|
54
|
+
}
|
|
55
|
+
await this.idSystem.setup();
|
|
56
|
+
}
|
|
57
|
+
async query(sql, where = [], name = '') {
|
|
58
|
+
const context = asyncInteractionContext.getStore();
|
|
59
|
+
const logger = this.logger.child(context?.logContext || {});
|
|
60
|
+
const params = where.map(x => x === false ? 0 : x === true ? 1 : x);
|
|
61
|
+
logger.info({
|
|
62
|
+
type: 'query',
|
|
63
|
+
name,
|
|
64
|
+
sql,
|
|
65
|
+
params
|
|
66
|
+
});
|
|
67
|
+
return (await this.db.query(sql, params)).rows;
|
|
68
|
+
}
|
|
69
|
+
async update(sql, values, idField, name = '') {
|
|
70
|
+
const context = asyncInteractionContext.getStore();
|
|
71
|
+
const logger = this.logger.child(context?.logContext || {});
|
|
72
|
+
const finalSQL = `${sql} ${idField ? `RETURNING "${idField}" AS id` : ''}`;
|
|
73
|
+
const params = values.map(x => {
|
|
74
|
+
return (typeof x === 'object' && x !== null) ? JSON.stringify(x) : x === false ? 0 : x === true ? 1 : x;
|
|
75
|
+
});
|
|
76
|
+
logger.info({
|
|
77
|
+
type: 'update',
|
|
78
|
+
name,
|
|
79
|
+
sql: finalSQL,
|
|
80
|
+
params
|
|
81
|
+
});
|
|
82
|
+
return (await this.db.query(sql, params)).rows;
|
|
83
|
+
}
|
|
84
|
+
async insert(sql, values, name = '') {
|
|
85
|
+
const context = asyncInteractionContext.getStore();
|
|
86
|
+
const logger = this.logger.child(context?.logContext || {});
|
|
87
|
+
const params = values.map(x => {
|
|
88
|
+
return (typeof x === 'object' && x !== null) ? JSON.stringify(x) : x === false ? 0 : x === true ? 1 : x;
|
|
89
|
+
});
|
|
90
|
+
logger.info({
|
|
91
|
+
type: 'insert',
|
|
92
|
+
name,
|
|
93
|
+
sql,
|
|
94
|
+
params
|
|
95
|
+
});
|
|
96
|
+
const finalSQL = `${sql} RETURNING "${ROW_ID_ATTR}"`;
|
|
97
|
+
return (await this.db.query(finalSQL, params)).rows[0];
|
|
98
|
+
}
|
|
99
|
+
async delete(sql, where, name = '') {
|
|
100
|
+
const context = asyncInteractionContext.getStore();
|
|
101
|
+
const logger = this.logger.child(context?.logContext || {});
|
|
102
|
+
const params = where.map(x => x === false ? 0 : x === true ? 1 : x);
|
|
103
|
+
logger.info({
|
|
104
|
+
type: 'delete',
|
|
105
|
+
name,
|
|
106
|
+
sql,
|
|
107
|
+
params
|
|
108
|
+
});
|
|
109
|
+
return (await this.db.query(sql, params)).rows;
|
|
110
|
+
}
|
|
111
|
+
async scheme(sql, name = '') {
|
|
112
|
+
const context = asyncInteractionContext.getStore();
|
|
113
|
+
const logger = this.logger.child(context?.logContext || {});
|
|
114
|
+
logger.info({
|
|
115
|
+
type: 'scheme',
|
|
116
|
+
name,
|
|
117
|
+
sql,
|
|
118
|
+
});
|
|
119
|
+
return await this.db.query(sql);
|
|
120
|
+
}
|
|
121
|
+
close() {
|
|
122
|
+
return this.db.end();
|
|
123
|
+
}
|
|
124
|
+
async getAutoId(recordName) {
|
|
125
|
+
return this.idSystem.getAutoId(recordName);
|
|
126
|
+
}
|
|
127
|
+
parseMatchExpression(key, value, fieldName, fieldType, isReferenceValue, getReferenceFieldValue, p) {
|
|
128
|
+
if (fieldType === 'JSON') {
|
|
129
|
+
if (value[0].toLowerCase() === 'contains') {
|
|
130
|
+
const fieldNameWithQuotes = fieldName.split('.').map(x => `"${x}"`).join('.');
|
|
131
|
+
return {
|
|
132
|
+
fieldValue: `IS NOT NULL AND ${p()} = ANY (SELECT json_array_elements_text(${fieldNameWithQuotes}))`,
|
|
133
|
+
fieldParams: [value[1]]
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
getPlaceholder() {
|
|
139
|
+
let index = 0;
|
|
140
|
+
return () => {
|
|
141
|
+
index++;
|
|
142
|
+
return `$${index}`;
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
mapToDBFieldType(type, collection) {
|
|
146
|
+
if (type === 'pk') {
|
|
147
|
+
return 'INT GENERATED ALWAYS AS IDENTITY';
|
|
148
|
+
}
|
|
149
|
+
else if (type === 'id') {
|
|
150
|
+
return 'INT';
|
|
151
|
+
}
|
|
152
|
+
else if (collection || type === 'object') {
|
|
153
|
+
return 'JSON';
|
|
154
|
+
}
|
|
155
|
+
else if (type === 'string') {
|
|
156
|
+
return 'TEXT';
|
|
157
|
+
}
|
|
158
|
+
else if (type === 'boolean') {
|
|
159
|
+
return 'INT(2)';
|
|
160
|
+
}
|
|
161
|
+
else if (type === 'number') {
|
|
162
|
+
return "INT";
|
|
163
|
+
}
|
|
164
|
+
else if (type === 'timestamp') {
|
|
165
|
+
return "TIMESTAMP";
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
return type;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=PostgreSQL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgreSQL.js","sourceRoot":"","sources":["../../src/runtime/PostgreSQL.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import SQLite from "better-sqlite3";
|
|
2
|
+
import { Database, DatabaseLogger, EntityIdRef } from "./System.js";
|
|
3
|
+
declare class IDSystem {
|
|
4
|
+
db: Database;
|
|
5
|
+
constructor(db: Database);
|
|
6
|
+
setup(): Promise<any>;
|
|
7
|
+
getAutoId(recordName: string): Promise<string>;
|
|
8
|
+
}
|
|
9
|
+
export type SQLiteDBOptions = Parameters<typeof SQLite>[1] & {
|
|
10
|
+
logger: DatabaseLogger;
|
|
11
|
+
};
|
|
12
|
+
export declare class SQLiteDB implements Database {
|
|
13
|
+
file: string;
|
|
14
|
+
options?: SQLiteDBOptions | undefined;
|
|
15
|
+
db: InstanceType<typeof SQLite>;
|
|
16
|
+
idSystem: IDSystem;
|
|
17
|
+
logger: DatabaseLogger;
|
|
18
|
+
constructor(file?: string, options?: SQLiteDBOptions | undefined);
|
|
19
|
+
open(): Promise<void>;
|
|
20
|
+
query<T extends any>(sql: string, where?: any[], name?: string): Promise<T[]>;
|
|
21
|
+
update(sql: string, values: any[], idField?: string, name?: string): Promise<any[]>;
|
|
22
|
+
insert(sql: string, values: any[], name?: string): Promise<EntityIdRef>;
|
|
23
|
+
delete(sql: string, where: any[], name?: string): Promise<any[]>;
|
|
24
|
+
scheme(sql: string, name?: string): Promise<SQLite.RunResult>;
|
|
25
|
+
close(): void;
|
|
26
|
+
getAutoId(recordName: string): Promise<string>;
|
|
27
|
+
parseMatchExpression(key: string, value: [string, string], fieldName: string, fieldType: string, isReferenceValue: boolean, getReferenceFieldValue: (v: string) => string, p: () => string): {
|
|
28
|
+
fieldValue: string;
|
|
29
|
+
fieldParams: string[];
|
|
30
|
+
} | undefined;
|
|
31
|
+
mapToDBFieldType(type: string, collection?: boolean): string;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=SQLite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLite.d.ts","sourceRoot":"","sources":["../../src/runtime/SQLite.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AAK/E,cAAM,QAAQ;IACS,EAAE,EAAE,QAAQ;gBAAZ,EAAE,EAAE,QAAQ;IAC/B,KAAK;IAGC,SAAS,CAAC,UAAU,EAAE,MAAM;CAWrC;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,CAAA;AAEvF,qBAAa,QAAS,YAAW,QAAQ;IAIlB,IAAI,EAAC,MAAM;IAAsB,OAAO,CAAC,EAAE,eAAe;IAH7E,EAAE,EAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAAA;IAChC,QAAQ,EAAG,QAAQ,CAAA;IACnB,MAAM,EAAE,cAAc,CAAA;gBACH,IAAI,GAAC,MAAmB,EAAS,OAAO,CAAC,EAAE,eAAe,YAAA;IAIvE,IAAI;IAIJ,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,EAAC,MAAM,EAAE,KAAK,GAAE,GAAG,EAAM,EAAE,IAAI,SAAI;IAa3D,MAAM,CAAC,GAAG,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAC,MAAM,EAAE,IAAI,SAAG;IAezD,MAAM,CAAE,GAAG,EAAC,MAAM,EAAE,MAAM,EAAC,GAAG,EAAE,EAAE,IAAI,SAAG;IAczC,MAAM,CAAE,GAAG,EAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,SAAG;IAYzC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,SAAG;IAUjC,KAAK;IAGC,SAAS,CAAC,UAAU,EAAE,MAAM;IAGlC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC,EAAE,MAAM,MAAM;;;;IAczL,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO;CAmBtD"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import SQLite from "better-sqlite3";
|
|
2
|
+
import { ROW_ID_ATTR } from "./System.js";
|
|
3
|
+
import { asyncInteractionContext } from "./asyncInteractionContext.js";
|
|
4
|
+
import pino from "pino";
|
|
5
|
+
class IDSystem {
|
|
6
|
+
constructor(db) {
|
|
7
|
+
this.db = db;
|
|
8
|
+
}
|
|
9
|
+
setup() {
|
|
10
|
+
return this.db.scheme(`CREATE Table IF NOT EXISTS _IDS_ (last INTEGER, name TEXT)`);
|
|
11
|
+
}
|
|
12
|
+
async getAutoId(recordName) {
|
|
13
|
+
const lastId = (await this.db.query(`SELECT last FROM _IDS_ WHERE name = '${recordName}'`, [], `finding last id of ${recordName}`))[0]?.last;
|
|
14
|
+
const newId = (lastId || 0) + 1;
|
|
15
|
+
const name = `set last id for ${recordName}: ${newId}`;
|
|
16
|
+
if (lastId === undefined) {
|
|
17
|
+
await this.db.scheme(`INSERT INTO _IDS_ (name, last) VALUES ('${recordName}', ${newId})`, name);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
await this.db.update(`UPDATE _IDS_ SET last = ? WHERE name = ?`, [newId, recordName], undefined, name);
|
|
21
|
+
}
|
|
22
|
+
return newId;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class SQLiteDB {
|
|
26
|
+
constructor(file = ':memory:', options) {
|
|
27
|
+
this.file = file;
|
|
28
|
+
this.options = options;
|
|
29
|
+
this.idSystem = new IDSystem(this);
|
|
30
|
+
this.logger = this.options?.logger || pino();
|
|
31
|
+
}
|
|
32
|
+
async open() {
|
|
33
|
+
this.db = new SQLite(this.file, this.options);
|
|
34
|
+
await this.idSystem.setup();
|
|
35
|
+
}
|
|
36
|
+
async query(sql, where = [], name = '') {
|
|
37
|
+
const context = asyncInteractionContext.getStore();
|
|
38
|
+
const logger = this.logger.child(context?.logContext || {});
|
|
39
|
+
const params = where.map(x => x === false ? 0 : x === true ? 1 : x);
|
|
40
|
+
logger.info({
|
|
41
|
+
type: 'query',
|
|
42
|
+
name,
|
|
43
|
+
sql,
|
|
44
|
+
params
|
|
45
|
+
});
|
|
46
|
+
return this.db.prepare(sql).all(...params);
|
|
47
|
+
}
|
|
48
|
+
async update(sql, values, idField, name = '') {
|
|
49
|
+
const context = asyncInteractionContext.getStore();
|
|
50
|
+
const logger = this.logger.child(context?.logContext || {});
|
|
51
|
+
const finalSQL = `${sql} ${idField ? `RETURNING ${idField} AS id` : ''}`;
|
|
52
|
+
const params = values.map(x => {
|
|
53
|
+
return (typeof x === 'object' && x !== null) ? JSON.stringify(x) : x === false ? 0 : x === true ? 1 : x;
|
|
54
|
+
});
|
|
55
|
+
logger.info({
|
|
56
|
+
type: 'update',
|
|
57
|
+
name,
|
|
58
|
+
sql: finalSQL,
|
|
59
|
+
params
|
|
60
|
+
});
|
|
61
|
+
return this.db.prepare(finalSQL).run(...params);
|
|
62
|
+
}
|
|
63
|
+
async insert(sql, values, name = '') {
|
|
64
|
+
const context = asyncInteractionContext.getStore();
|
|
65
|
+
const logger = this.logger.child(context?.logContext || {});
|
|
66
|
+
const params = values.map(x => {
|
|
67
|
+
return (typeof x === 'object' && x !== null) ? JSON.stringify(x) : x === false ? 0 : x === true ? 1 : x;
|
|
68
|
+
});
|
|
69
|
+
logger.info({
|
|
70
|
+
type: 'insert',
|
|
71
|
+
name,
|
|
72
|
+
sql,
|
|
73
|
+
params
|
|
74
|
+
});
|
|
75
|
+
return this.db.prepare(`${sql} RETURNING ${ROW_ID_ATTR}`).run(...params);
|
|
76
|
+
}
|
|
77
|
+
async delete(sql, where, name = '') {
|
|
78
|
+
const context = asyncInteractionContext.getStore();
|
|
79
|
+
const logger = this.logger.child(context?.logContext || {});
|
|
80
|
+
const params = where.map(x => x === false ? 0 : x === true ? 1 : x);
|
|
81
|
+
logger.info({
|
|
82
|
+
type: 'delete',
|
|
83
|
+
name,
|
|
84
|
+
sql,
|
|
85
|
+
params
|
|
86
|
+
});
|
|
87
|
+
return this.db.prepare(sql).run(...params);
|
|
88
|
+
}
|
|
89
|
+
async scheme(sql, name = '') {
|
|
90
|
+
const context = asyncInteractionContext.getStore();
|
|
91
|
+
const logger = this.logger.child(context?.logContext || {});
|
|
92
|
+
logger.info({
|
|
93
|
+
type: 'scheme',
|
|
94
|
+
name,
|
|
95
|
+
sql,
|
|
96
|
+
});
|
|
97
|
+
return this.db.prepare(sql).run();
|
|
98
|
+
}
|
|
99
|
+
close() {
|
|
100
|
+
this.db.close();
|
|
101
|
+
}
|
|
102
|
+
async getAutoId(recordName) {
|
|
103
|
+
return this.idSystem.getAutoId(recordName);
|
|
104
|
+
}
|
|
105
|
+
parseMatchExpression(key, value, fieldName, fieldType, isReferenceValue, getReferenceFieldValue, p) {
|
|
106
|
+
if (fieldType === 'JSON') {
|
|
107
|
+
if (value[0].toLowerCase() === 'contains') {
|
|
108
|
+
return {
|
|
109
|
+
fieldValue: `NOT NULL AND EXISTS (
|
|
110
|
+
SELECT 1
|
|
111
|
+
FROM json_each(${fieldName})
|
|
112
|
+
WHERE json_each.value = ${p()}
|
|
113
|
+
)`,
|
|
114
|
+
fieldParams: [value[1]]
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
mapToDBFieldType(type, collection) {
|
|
120
|
+
if (type === 'pk') {
|
|
121
|
+
return 'INTEGER PRIMARY KEY';
|
|
122
|
+
}
|
|
123
|
+
else if (type === 'id') {
|
|
124
|
+
return 'INT';
|
|
125
|
+
}
|
|
126
|
+
else if (collection || type === 'object') {
|
|
127
|
+
return 'JSON';
|
|
128
|
+
}
|
|
129
|
+
else if (type === 'string') {
|
|
130
|
+
return 'TEXT';
|
|
131
|
+
}
|
|
132
|
+
else if (type === 'boolean') {
|
|
133
|
+
return 'INT(2)';
|
|
134
|
+
}
|
|
135
|
+
else if (type === 'number') {
|
|
136
|
+
return "INT";
|
|
137
|
+
}
|
|
138
|
+
else if (type === 'timestamp') {
|
|
139
|
+
return "INT";
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
return type;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=SQLite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLite.js","sourceRoot":"","sources":["../../src/runtime/SQLite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Controller } from "./Controller.js";
|
|
2
|
+
import { DataContext } from "./computedDataHandles/ComputedDataHandle.js";
|
|
3
|
+
import { Entity, KlassInstance, Property, Relation } from "@shared";
|
|
4
|
+
import { Computation, DataDep, GlobalBoundState, RecordBoundState, RelationBoundState } from "./computedDataHandles/Computation.js";
|
|
5
|
+
import { RecordMutationEvent } from "./System.js";
|
|
6
|
+
import { AttributeQueryData } from "@storage";
|
|
7
|
+
type EntityCreateEventsSourceMap = {
|
|
8
|
+
dataDep: DataDep;
|
|
9
|
+
type: 'create';
|
|
10
|
+
recordName: string;
|
|
11
|
+
sourceRecordName: string;
|
|
12
|
+
targetPath?: string[];
|
|
13
|
+
isRelation?: boolean;
|
|
14
|
+
computation: Computation;
|
|
15
|
+
};
|
|
16
|
+
type EntityDeleteEventsSourceMap = {
|
|
17
|
+
dataDep: DataDep;
|
|
18
|
+
type: 'delete';
|
|
19
|
+
recordName: string;
|
|
20
|
+
sourceRecordName: string;
|
|
21
|
+
targetPath?: string[];
|
|
22
|
+
isRelation?: boolean;
|
|
23
|
+
computation: Computation;
|
|
24
|
+
};
|
|
25
|
+
type EntityUpdateEventsSourceMap = {
|
|
26
|
+
dataDep: DataDep;
|
|
27
|
+
type: 'update';
|
|
28
|
+
recordName: string;
|
|
29
|
+
attributes: string[];
|
|
30
|
+
sourceRecordName: string;
|
|
31
|
+
targetPath?: string[];
|
|
32
|
+
computation: Computation;
|
|
33
|
+
isRelation?: boolean;
|
|
34
|
+
};
|
|
35
|
+
type EntityEventSourceMap = EntityCreateEventsSourceMap | EntityDeleteEventsSourceMap | EntityUpdateEventsSourceMap;
|
|
36
|
+
export type EtityMutationEvent = RecordMutationEvent & {
|
|
37
|
+
dataDep: DataDep;
|
|
38
|
+
attributes?: string[];
|
|
39
|
+
relatedAttribute?: string[];
|
|
40
|
+
relatedMutationEvent?: RecordMutationEvent;
|
|
41
|
+
isRelation?: boolean;
|
|
42
|
+
};
|
|
43
|
+
export declare const SKIP_RESULT: unique symbol;
|
|
44
|
+
export declare class Scheduler {
|
|
45
|
+
controller: Controller;
|
|
46
|
+
computations: Set<Computation>;
|
|
47
|
+
constructor(controller: Controller, entities: KlassInstance<typeof Entity>[], relations: KlassInstance<typeof Relation>[], dict: KlassInstance<typeof Property>[]);
|
|
48
|
+
createStates(): {
|
|
49
|
+
dataContext: DataContext;
|
|
50
|
+
state: {
|
|
51
|
+
[key: string]: RecordBoundState<any> | GlobalBoundState<any> | RelationBoundState<any>;
|
|
52
|
+
};
|
|
53
|
+
}[];
|
|
54
|
+
setupDefaultValues(): Promise<void>;
|
|
55
|
+
setupStateDefaultValues(): Promise<void>;
|
|
56
|
+
erMutationEventSources: EntityEventSourceMap[];
|
|
57
|
+
dataSourceMapTree: {
|
|
58
|
+
[key: string]: {
|
|
59
|
+
[key: string]: EntityEventSourceMap[];
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
setupMutationListeners(): Promise<void>;
|
|
63
|
+
computeDirtyRecords(source: EntityEventSourceMap, mutationEvent: RecordMutationEvent): Promise<any[]>;
|
|
64
|
+
computeOldRecord(newRecord: any, sourceMap: EntityEventSourceMap, mutationEvent: RecordMutationEvent): any;
|
|
65
|
+
computeDataBasedDirtyRecordsAndEvents(source: EntityEventSourceMap, mutationEvent: RecordMutationEvent): Promise<[any, EtityMutationEvent][]>;
|
|
66
|
+
computeEventBasedDirtyRecordsAndEvents(source: EntityEventSourceMap, mutationEvent: RecordMutationEvent): Promise<[any, EtityMutationEvent][]>;
|
|
67
|
+
isDataBasedComputation(computation: Computation): boolean;
|
|
68
|
+
runDirtyRecordsComputation(source: EntityEventSourceMap, mutationEvent: RecordMutationEvent): Promise<void>;
|
|
69
|
+
runComputation(computation: Computation, erRecordMutationEvent: RecordMutationEvent, record?: any): Promise<void>;
|
|
70
|
+
buildDataSourceMapTree(sourceMaps: EntityEventSourceMap[]): {
|
|
71
|
+
[key: string]: {
|
|
72
|
+
[key: string]: EntityEventSourceMap[];
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
convertDataDepToERMutationEventsSourceMap(dataDepName: string, dataDep: DataDep, computation: Computation, eventType?: 'create' | 'delete' | 'update'): EntityEventSourceMap[];
|
|
76
|
+
convertAttrsToERMutationEventsSourceMap(dataDep: DataDep, baseRecordName: string, attributes: AttributeQueryData, context: string[], computation: Computation): EntityEventSourceMap[];
|
|
77
|
+
convertRelationAttrToERMutationEventsSourceMap(dataDep: DataDep, baseRecordName: string, subAttrs: AttributeQueryData, context: string[], computation: Computation): EntityEventSourceMap[];
|
|
78
|
+
setup(): Promise<void>;
|
|
79
|
+
}
|
|
80
|
+
export {};
|
|
81
|
+
//# sourceMappingURL=Scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Scheduler.d.ts","sourceRoot":"","sources":["../../src/runtime/Scheduler.ts"],"names":[],"mappings":"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"}
|