@webiny/db 5.39.0-beta.0 → 5.39.0-beta.2
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/index.js +16 -22
- package/index.js.map +1 -1
- package/package.json +4 -4
package/index.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.Db = exports.Batch = void 0;
|
|
8
|
-
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
7
|
/**
|
|
11
8
|
* TODO Remove when moved all packages to standalone storage opts.
|
|
12
9
|
*/
|
|
@@ -48,39 +45,40 @@ class Db {
|
|
|
48
45
|
table,
|
|
49
46
|
logTable
|
|
50
47
|
}) {
|
|
51
|
-
(0, _defineProperty2.default)(this, "driver", void 0);
|
|
52
|
-
(0, _defineProperty2.default)(this, "table", void 0);
|
|
53
|
-
(0, _defineProperty2.default)(this, "logTable", void 0);
|
|
54
48
|
this.driver = driver;
|
|
55
|
-
// @ts-
|
|
49
|
+
// @ts-expect-error
|
|
56
50
|
this.table = table;
|
|
57
51
|
this.logTable = logTable;
|
|
58
52
|
}
|
|
59
53
|
async create(args) {
|
|
60
|
-
const createArgs =
|
|
54
|
+
const createArgs = {
|
|
55
|
+
...args,
|
|
61
56
|
table: args.table || this.table
|
|
62
|
-
}
|
|
57
|
+
};
|
|
63
58
|
await this.createLog("create", createArgs);
|
|
64
59
|
return this.driver.create(createArgs);
|
|
65
60
|
}
|
|
66
61
|
async read(args) {
|
|
67
|
-
const readArgs =
|
|
62
|
+
const readArgs = {
|
|
63
|
+
...args,
|
|
68
64
|
table: args.table || this.table
|
|
69
|
-
}
|
|
65
|
+
};
|
|
70
66
|
await this.createLog("read", readArgs);
|
|
71
67
|
return this.driver.read(readArgs);
|
|
72
68
|
}
|
|
73
69
|
async update(args) {
|
|
74
|
-
const updateArgs =
|
|
70
|
+
const updateArgs = {
|
|
71
|
+
...args,
|
|
75
72
|
table: args.table || this.table
|
|
76
|
-
}
|
|
73
|
+
};
|
|
77
74
|
await this.createLog("update", updateArgs);
|
|
78
75
|
return this.driver.update(updateArgs);
|
|
79
76
|
}
|
|
80
77
|
async delete(args) {
|
|
81
|
-
const deleteArgs =
|
|
78
|
+
const deleteArgs = {
|
|
79
|
+
...args,
|
|
82
80
|
table: args.table || this.table
|
|
83
|
-
}
|
|
81
|
+
};
|
|
84
82
|
await this.createLog("delete", deleteArgs);
|
|
85
83
|
return this.driver.delete(deleteArgs);
|
|
86
84
|
}
|
|
@@ -113,11 +111,6 @@ class Db {
|
|
|
113
111
|
exports.Db = Db;
|
|
114
112
|
class Batch {
|
|
115
113
|
constructor(db) {
|
|
116
|
-
(0, _defineProperty2.default)(this, "db", void 0);
|
|
117
|
-
(0, _defineProperty2.default)(this, "type", void 0);
|
|
118
|
-
(0, _defineProperty2.default)(this, "id", void 0);
|
|
119
|
-
(0, _defineProperty2.default)(this, "meta", void 0);
|
|
120
|
-
(0, _defineProperty2.default)(this, "operations", void 0);
|
|
121
114
|
this.db = db;
|
|
122
115
|
this.type = "batch";
|
|
123
116
|
this.id = shortId();
|
|
@@ -162,12 +155,13 @@ class Batch {
|
|
|
162
155
|
const promises = [];
|
|
163
156
|
for (let i = 0; i < this.operations.length; i++) {
|
|
164
157
|
const [operation, args] = this.operations[i];
|
|
165
|
-
promises.push(this.db[operation](
|
|
158
|
+
promises.push(this.db[operation]({
|
|
159
|
+
...args,
|
|
166
160
|
__batch: {
|
|
167
161
|
instance: this,
|
|
168
162
|
operation: this.operations[i]
|
|
169
163
|
}
|
|
170
|
-
}))
|
|
164
|
+
}));
|
|
171
165
|
}
|
|
172
166
|
const result = Promise.all(promises);
|
|
173
167
|
return result;
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["shortId","time","Date","getTime","uniqueId","Math","random","toString","slice","getCreateLogData","args","table","meta","limit","sort","data","query","keys","batch","__batch","id","instance","type","Db","constructor","driver","logTable","_defineProperty2","default","create","createArgs","_objectSpread2","createLog","read","readArgs","update","updateArgs","delete","deleteArgs","operation","readLogs","Batch","exports","db","operations","push","i","length","item","execute","promises","result","Promise","all"],"sources":["index.ts"],"sourcesContent":["/**\n * TODO Remove when moved all packages to standalone storage opts.\n */\ninterface KeyField {\n name: string;\n}\n\nexport interface Key {\n primary?: boolean;\n unique?: boolean;\n name: string;\n fields: KeyField[];\n}\n\nexport interface ArgsBatch {\n instance: Batch;\n operation: Operation;\n}\nexport interface Args {\n __batch?: ArgsBatch;\n table?: string;\n meta?: boolean;\n limit?: number;\n sort?: Record<string, 1 | -1>;\n data?: Record<string, any>;\n query?: Record<string, any>;\n keys?: Key[];\n}\n\nexport type Result<T = any> = [T, Record<string, any>];\n\nexport interface DbDriver {\n create: (args: Args) => Promise<Result<true>>;\n read: <T = Record<string, any>>(args: Args) => Promise<Result<T[]>>;\n update: (args: Args) => Promise<Result<true>>;\n delete: (args: Args) => Promise<Result<true>>;\n\n // Logging functions.\n createLog: (args: {\n operation: string;\n data: Args;\n table: string;\n id: string;\n }) => Promise<Result<true>>;\n readLogs: <T = Record<string, any>>(args: { table: string }) => Promise<Result<T[]>>;\n}\n\nexport type OperationType = \"create\" | \"read\" | \"update\" | \"delete\";\nexport type Operation = [OperationType, Args];\n\nexport type ConstructorArgs = {\n driver: DbDriver;\n table?: string;\n logTable?: string;\n};\n\n// Generates a short and sortable ID, e.g. \"1607677774994.tfz58m\".\nconst shortId = () => {\n const time = new Date().getTime();\n const uniqueId = Math.random().toString(36).slice(-6);\n\n return `${time}.${uniqueId}`;\n};\n\ninterface LogDataBatch {\n id: string;\n type: string;\n}\ninterface LogData\n extends Pick<Args, \"table\" | \"meta\" | \"limit\" | \"sort\" | \"data\" | \"query\" | \"keys\"> {\n batch: LogDataBatch | null;\n}\n\n// Picks necessary data from received args, ready to be stored in the log table.\nconst getCreateLogData = (args: Args): LogData => {\n const { table, meta, limit, sort, data, query, keys } = args;\n\n return {\n table,\n meta,\n limit,\n sort,\n data,\n query,\n keys,\n batch: args.__batch\n ? {\n id: args.__batch.instance.id,\n type: args.__batch.instance.type\n }\n : null\n };\n};\n\nclass Db {\n public driver: DbDriver;\n public table: string;\n public logTable?: string;\n\n constructor({ driver, table, logTable }: ConstructorArgs) {\n this.driver = driver;\n // @ts-ignore\n this.table = table;\n this.logTable = logTable;\n }\n\n public async create(args: Args): Promise<Result<true>> {\n const createArgs = { ...args, table: args.table || this.table };\n await this.createLog(\"create\", createArgs);\n return this.driver.create(createArgs);\n }\n\n public async read<T = Record<string, any>>(args: Args): Promise<Result<T[]>> {\n const readArgs = { ...args, table: args.table || this.table };\n await this.createLog(\"read\", readArgs);\n return this.driver.read(readArgs);\n }\n\n public async update(args: Args): Promise<Result<true>> {\n const updateArgs = { ...args, table: args.table || this.table };\n await this.createLog(\"update\", updateArgs);\n return this.driver.update(updateArgs);\n }\n\n public async delete(args: Args): Promise<Result<true>> {\n const deleteArgs = { ...args, table: args.table || this.table };\n await this.createLog(\"delete\", deleteArgs);\n return this.driver.delete(deleteArgs);\n }\n\n // Logging functions.\n public async createLog(operation: string, args: Args): Promise<Result<true> | null> {\n if (!this.logTable) {\n return null;\n }\n\n const data = getCreateLogData(args);\n return this.driver.createLog({ operation, data, table: this.logTable, id: shortId() });\n }\n\n public async readLogs<T = Record<string, any>>(): Promise<Result<T[]> | null> {\n if (!this.logTable) {\n return null;\n }\n\n return this.driver.readLogs({\n table: this.logTable\n });\n }\n\n public batch<\n T0 = any,\n T1 = any,\n T2 = any,\n T3 = any,\n T4 = any,\n T5 = any,\n T6 = any,\n T7 = any,\n T8 = any,\n T9 = any\n >(): Batch {\n return new Batch<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>(this);\n }\n}\n\nclass Batch<\n T0 = any,\n T1 = any,\n T2 = any,\n T3 = any,\n T4 = any,\n T5 = any,\n T6 = any,\n T7 = any,\n T8 = any,\n T9 = any\n> {\n db: Db;\n type: \"batch\" | \"transaction\";\n id: string;\n meta: Record<string, any>;\n operations: Operation[];\n\n constructor(db: Db) {\n this.db = db;\n this.type = \"batch\";\n this.id = shortId();\n\n this.meta = {};\n this.operations = [];\n }\n\n push(...operations: Operation[]) {\n for (let i = 0; i < operations.length; i++) {\n const item = operations[i];\n this.operations.push(item);\n }\n return this;\n }\n\n create(...args: Args[]) {\n for (let i = 0; i < args.length; i++) {\n this.push([\"create\", args[i]]);\n }\n return this;\n }\n\n read(...args: Args[]) {\n for (let i = 0; i < args.length; i++) {\n this.push([\"read\", args[i]]);\n }\n return this;\n }\n\n update(...args: Args[]) {\n for (let i = 0; i < args.length; i++) {\n this.push([\"update\", args[i]]);\n }\n return this;\n }\n\n delete(...args: Args[]) {\n for (let i = 0; i < args.length; i++) {\n this.push([\"delete\", args[i]]);\n }\n return this;\n }\n\n async execute(): Promise<[T0?, T1?, T2?, T3?, T4?, T5?, T6?, T7?, T8?, T9?]> {\n /**\n * TODO: figure out which exact type to use instead of any.\n */\n const promises: Promise<any>[] = [];\n for (let i = 0; i < this.operations.length; i++) {\n const [operation, args] = this.operations[i];\n promises.push(\n this.db[operation]({\n ...args,\n __batch: {\n instance: this,\n operation: this.operations[i]\n }\n })\n );\n }\n\n const result = Promise.all(promises);\n\n return result as Promise<[T0?, T1?, T2?, T3?, T4?, T5?, T6?, T7?, T8?, T9?]>;\n }\n}\n\nexport { Batch, Db };\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;;AAsDA;AACA,MAAMA,OAAO,GAAGA,CAAA,KAAM;EAClB,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC;EACjC,MAAMC,QAAQ,GAAGC,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC;EAErD,OAAQ,GAAEP,IAAK,IAAGG,QAAS,EAAC;AAChC,CAAC;AAWD;AACA,MAAMK,gBAAgB,GAAIC,IAAU,IAAc;EAC9C,MAAM;IAAEC,KAAK;IAAEC,IAAI;IAAEC,KAAK;IAAEC,IAAI;IAAEC,IAAI;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGP,IAAI;EAE5D,OAAO;IACHC,KAAK;IACLC,IAAI;IACJC,KAAK;IACLC,IAAI;IACJC,IAAI;IACJC,KAAK;IACLC,IAAI;IACJC,KAAK,EAAER,IAAI,CAACS,OAAO,GACb;MACIC,EAAE,EAAEV,IAAI,CAACS,OAAO,CAACE,QAAQ,CAACD,EAAE;MAC5BE,IAAI,EAAEZ,IAAI,CAACS,OAAO,CAACE,QAAQ,CAACC;IAChC,CAAC,GACD;EACV,CAAC;AACL,CAAC;AAED,MAAMC,EAAE,CAAC;EAKLC,WAAWA,CAAC;IAAEC,MAAM;IAAEd,KAAK;IAAEe;EAA0B,CAAC,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IACtD,IAAI,CAACH,MAAM,GAAGA,MAAM;IACpB;IACA,IAAI,CAACd,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACe,QAAQ,GAAGA,QAAQ;EAC5B;EAEA,MAAaG,MAAMA,CAACnB,IAAU,EAAyB;IACnD,MAAMoB,UAAU,OAAAC,cAAA,CAAAH,OAAA,MAAAG,cAAA,CAAAH,OAAA,MAAQlB,IAAI;MAAEC,KAAK,EAAED,IAAI,CAACC,KAAK,IAAI,IAAI,CAACA;IAAK,EAAE;IAC/D,MAAM,IAAI,CAACqB,SAAS,CAAC,QAAQ,EAAEF,UAAU,CAAC;IAC1C,OAAO,IAAI,CAACL,MAAM,CAACI,MAAM,CAACC,UAAU,CAAC;EACzC;EAEA,MAAaG,IAAIA,CAA0BvB,IAAU,EAAwB;IACzE,MAAMwB,QAAQ,OAAAH,cAAA,CAAAH,OAAA,MAAAG,cAAA,CAAAH,OAAA,MAAQlB,IAAI;MAAEC,KAAK,EAAED,IAAI,CAACC,KAAK,IAAI,IAAI,CAACA;IAAK,EAAE;IAC7D,MAAM,IAAI,CAACqB,SAAS,CAAC,MAAM,EAAEE,QAAQ,CAAC;IACtC,OAAO,IAAI,CAACT,MAAM,CAACQ,IAAI,CAACC,QAAQ,CAAC;EACrC;EAEA,MAAaC,MAAMA,CAACzB,IAAU,EAAyB;IACnD,MAAM0B,UAAU,OAAAL,cAAA,CAAAH,OAAA,MAAAG,cAAA,CAAAH,OAAA,MAAQlB,IAAI;MAAEC,KAAK,EAAED,IAAI,CAACC,KAAK,IAAI,IAAI,CAACA;IAAK,EAAE;IAC/D,MAAM,IAAI,CAACqB,SAAS,CAAC,QAAQ,EAAEI,UAAU,CAAC;IAC1C,OAAO,IAAI,CAACX,MAAM,CAACU,MAAM,CAACC,UAAU,CAAC;EACzC;EAEA,MAAaC,MAAMA,CAAC3B,IAAU,EAAyB;IACnD,MAAM4B,UAAU,OAAAP,cAAA,CAAAH,OAAA,MAAAG,cAAA,CAAAH,OAAA,MAAQlB,IAAI;MAAEC,KAAK,EAAED,IAAI,CAACC,KAAK,IAAI,IAAI,CAACA;IAAK,EAAE;IAC/D,MAAM,IAAI,CAACqB,SAAS,CAAC,QAAQ,EAAEM,UAAU,CAAC;IAC1C,OAAO,IAAI,CAACb,MAAM,CAACY,MAAM,CAACC,UAAU,CAAC;EACzC;;EAEA;EACA,MAAaN,SAASA,CAACO,SAAiB,EAAE7B,IAAU,EAAgC;IAChF,IAAI,CAAC,IAAI,CAACgB,QAAQ,EAAE;MAChB,OAAO,IAAI;IACf;IAEA,MAAMX,IAAI,GAAGN,gBAAgB,CAACC,IAAI,CAAC;IACnC,OAAO,IAAI,CAACe,MAAM,CAACO,SAAS,CAAC;MAAEO,SAAS;MAAExB,IAAI;MAAEJ,KAAK,EAAE,IAAI,CAACe,QAAQ;MAAEN,EAAE,EAAEpB,OAAO,CAAC;IAAE,CAAC,CAAC;EAC1F;EAEA,MAAawC,QAAQA,CAAA,EAAyD;IAC1E,IAAI,CAAC,IAAI,CAACd,QAAQ,EAAE;MAChB,OAAO,IAAI;IACf;IAEA,OAAO,IAAI,CAACD,MAAM,CAACe,QAAQ,CAAC;MACxB7B,KAAK,EAAE,IAAI,CAACe;IAChB,CAAC,CAAC;EACN;EAEOR,KAAKA,CAAA,EAWD;IACP,OAAO,IAAIuB,KAAK,CAAyC,IAAI,CAAC;EAClE;AACJ;AAACC,OAAA,CAAAnB,EAAA,GAAAA,EAAA;AAED,MAAMkB,KAAK,CAWT;EAOEjB,WAAWA,CAACmB,EAAM,EAAE;IAAA,IAAAhB,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAChB,IAAI,CAACe,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACrB,IAAI,GAAG,OAAO;IACnB,IAAI,CAACF,EAAE,GAAGpB,OAAO,CAAC,CAAC;IAEnB,IAAI,CAACY,IAAI,GAAG,CAAC,CAAC;IACd,IAAI,CAACgC,UAAU,GAAG,EAAE;EACxB;EAEAC,IAAIA,CAAC,GAAGD,UAAuB,EAAE;IAC7B,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,UAAU,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;MACxC,MAAME,IAAI,GAAGJ,UAAU,CAACE,CAAC,CAAC;MAC1B,IAAI,CAACF,UAAU,CAACC,IAAI,CAACG,IAAI,CAAC;IAC9B;IACA,OAAO,IAAI;EACf;EAEAnB,MAAMA,CAAC,GAAGnB,IAAY,EAAE;IACpB,KAAK,IAAIoC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpC,IAAI,CAACqC,MAAM,EAAED,CAAC,EAAE,EAAE;MAClC,IAAI,CAACD,IAAI,CAAC,CAAC,QAAQ,EAAEnC,IAAI,CAACoC,CAAC,CAAC,CAAC,CAAC;IAClC;IACA,OAAO,IAAI;EACf;EAEAb,IAAIA,CAAC,GAAGvB,IAAY,EAAE;IAClB,KAAK,IAAIoC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpC,IAAI,CAACqC,MAAM,EAAED,CAAC,EAAE,EAAE;MAClC,IAAI,CAACD,IAAI,CAAC,CAAC,MAAM,EAAEnC,IAAI,CAACoC,CAAC,CAAC,CAAC,CAAC;IAChC;IACA,OAAO,IAAI;EACf;EAEAX,MAAMA,CAAC,GAAGzB,IAAY,EAAE;IACpB,KAAK,IAAIoC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpC,IAAI,CAACqC,MAAM,EAAED,CAAC,EAAE,EAAE;MAClC,IAAI,CAACD,IAAI,CAAC,CAAC,QAAQ,EAAEnC,IAAI,CAACoC,CAAC,CAAC,CAAC,CAAC;IAClC;IACA,OAAO,IAAI;EACf;EAEAT,MAAMA,CAAC,GAAG3B,IAAY,EAAE;IACpB,KAAK,IAAIoC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpC,IAAI,CAACqC,MAAM,EAAED,CAAC,EAAE,EAAE;MAClC,IAAI,CAACD,IAAI,CAAC,CAAC,QAAQ,EAAEnC,IAAI,CAACoC,CAAC,CAAC,CAAC,CAAC;IAClC;IACA,OAAO,IAAI;EACf;EAEA,MAAMG,OAAOA,CAAA,EAAgE;IACzE;AACR;AACA;IACQ,MAAMC,QAAwB,GAAG,EAAE;IACnC,KAAK,IAAIJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACF,UAAU,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;MAC7C,MAAM,CAACP,SAAS,EAAE7B,IAAI,CAAC,GAAG,IAAI,CAACkC,UAAU,CAACE,CAAC,CAAC;MAC5CI,QAAQ,CAACL,IAAI,CACT,IAAI,CAACF,EAAE,CAACJ,SAAS,CAAC,KAAAR,cAAA,CAAAH,OAAA,MAAAG,cAAA,CAAAH,OAAA,MACXlB,IAAI;QACPS,OAAO,EAAE;UACLE,QAAQ,EAAE,IAAI;UACdkB,SAAS,EAAE,IAAI,CAACK,UAAU,CAACE,CAAC;QAChC;MAAC,EACJ,CACL,CAAC;IACL;IAEA,MAAMK,MAAM,GAAGC,OAAO,CAACC,GAAG,CAACH,QAAQ,CAAC;IAEpC,OAAOC,MAAM;EACjB;AACJ;AAACT,OAAA,CAAAD,KAAA,GAAAA,KAAA"}
|
|
1
|
+
{"version":3,"names":["shortId","time","Date","getTime","uniqueId","Math","random","toString","slice","getCreateLogData","args","table","meta","limit","sort","data","query","keys","batch","__batch","id","instance","type","Db","constructor","driver","logTable","create","createArgs","createLog","read","readArgs","update","updateArgs","delete","deleteArgs","operation","readLogs","Batch","exports","db","operations","push","i","length","item","execute","promises","result","Promise","all"],"sources":["index.ts"],"sourcesContent":["/**\n * TODO Remove when moved all packages to standalone storage opts.\n */\ninterface KeyField {\n name: string;\n}\n\nexport interface Key {\n primary?: boolean;\n unique?: boolean;\n name: string;\n fields: KeyField[];\n}\n\nexport interface ArgsBatch {\n instance: Batch;\n operation: Operation;\n}\nexport interface Args {\n __batch?: ArgsBatch;\n table?: string;\n meta?: boolean;\n limit?: number;\n sort?: Record<string, 1 | -1>;\n data?: Record<string, any>;\n query?: Record<string, any>;\n keys?: Key[];\n}\n\nexport type Result<T = any> = [T, Record<string, any>];\n\nexport interface DbDriver {\n create: (args: Args) => Promise<Result<true>>;\n read: <T = Record<string, any>>(args: Args) => Promise<Result<T[]>>;\n update: (args: Args) => Promise<Result<true>>;\n delete: (args: Args) => Promise<Result<true>>;\n\n // Logging functions.\n createLog: (args: {\n operation: string;\n data: Args;\n table: string;\n id: string;\n }) => Promise<Result<true>>;\n readLogs: <T = Record<string, any>>(args: { table: string }) => Promise<Result<T[]>>;\n}\n\nexport type OperationType = \"create\" | \"read\" | \"update\" | \"delete\";\nexport type Operation = [OperationType, Args];\n\nexport type ConstructorArgs = {\n driver: DbDriver;\n table?: string;\n logTable?: string;\n};\n\n// Generates a short and sortable ID, e.g. \"1607677774994.tfz58m\".\nconst shortId = () => {\n const time = new Date().getTime();\n const uniqueId = Math.random().toString(36).slice(-6);\n\n return `${time}.${uniqueId}`;\n};\n\ninterface LogDataBatch {\n id: string;\n type: string;\n}\ninterface LogData\n extends Pick<Args, \"table\" | \"meta\" | \"limit\" | \"sort\" | \"data\" | \"query\" | \"keys\"> {\n batch: LogDataBatch | null;\n}\n\n// Picks necessary data from received args, ready to be stored in the log table.\nconst getCreateLogData = (args: Args): LogData => {\n const { table, meta, limit, sort, data, query, keys } = args;\n\n return {\n table,\n meta,\n limit,\n sort,\n data,\n query,\n keys,\n batch: args.__batch\n ? {\n id: args.__batch.instance.id,\n type: args.__batch.instance.type\n }\n : null\n };\n};\n\nclass Db {\n public driver: DbDriver;\n public table: string;\n public logTable?: string;\n\n constructor({ driver, table, logTable }: ConstructorArgs) {\n this.driver = driver;\n // @ts-expect-error\n this.table = table;\n this.logTable = logTable;\n }\n\n public async create(args: Args): Promise<Result<true>> {\n const createArgs = { ...args, table: args.table || this.table };\n await this.createLog(\"create\", createArgs);\n return this.driver.create(createArgs);\n }\n\n public async read<T = Record<string, any>>(args: Args): Promise<Result<T[]>> {\n const readArgs = { ...args, table: args.table || this.table };\n await this.createLog(\"read\", readArgs);\n return this.driver.read(readArgs);\n }\n\n public async update(args: Args): Promise<Result<true>> {\n const updateArgs = { ...args, table: args.table || this.table };\n await this.createLog(\"update\", updateArgs);\n return this.driver.update(updateArgs);\n }\n\n public async delete(args: Args): Promise<Result<true>> {\n const deleteArgs = { ...args, table: args.table || this.table };\n await this.createLog(\"delete\", deleteArgs);\n return this.driver.delete(deleteArgs);\n }\n\n // Logging functions.\n public async createLog(operation: string, args: Args): Promise<Result<true> | null> {\n if (!this.logTable) {\n return null;\n }\n\n const data = getCreateLogData(args);\n return this.driver.createLog({ operation, data, table: this.logTable, id: shortId() });\n }\n\n public async readLogs<T = Record<string, any>>(): Promise<Result<T[]> | null> {\n if (!this.logTable) {\n return null;\n }\n\n return this.driver.readLogs({\n table: this.logTable\n });\n }\n\n public batch<\n T0 = any,\n T1 = any,\n T2 = any,\n T3 = any,\n T4 = any,\n T5 = any,\n T6 = any,\n T7 = any,\n T8 = any,\n T9 = any\n >(): Batch {\n return new Batch<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>(this);\n }\n}\n\nclass Batch<\n T0 = any,\n T1 = any,\n T2 = any,\n T3 = any,\n T4 = any,\n T5 = any,\n T6 = any,\n T7 = any,\n T8 = any,\n T9 = any\n> {\n db: Db;\n type: \"batch\" | \"transaction\";\n id: string;\n meta: Record<string, any>;\n operations: Operation[];\n\n constructor(db: Db) {\n this.db = db;\n this.type = \"batch\";\n this.id = shortId();\n\n this.meta = {};\n this.operations = [];\n }\n\n push(...operations: Operation[]) {\n for (let i = 0; i < operations.length; i++) {\n const item = operations[i];\n this.operations.push(item);\n }\n return this;\n }\n\n create(...args: Args[]) {\n for (let i = 0; i < args.length; i++) {\n this.push([\"create\", args[i]]);\n }\n return this;\n }\n\n read(...args: Args[]) {\n for (let i = 0; i < args.length; i++) {\n this.push([\"read\", args[i]]);\n }\n return this;\n }\n\n update(...args: Args[]) {\n for (let i = 0; i < args.length; i++) {\n this.push([\"update\", args[i]]);\n }\n return this;\n }\n\n delete(...args: Args[]) {\n for (let i = 0; i < args.length; i++) {\n this.push([\"delete\", args[i]]);\n }\n return this;\n }\n\n async execute(): Promise<[T0?, T1?, T2?, T3?, T4?, T5?, T6?, T7?, T8?, T9?]> {\n /**\n * TODO: figure out which exact type to use instead of any.\n */\n const promises: Promise<any>[] = [];\n for (let i = 0; i < this.operations.length; i++) {\n const [operation, args] = this.operations[i];\n promises.push(\n this.db[operation]({\n ...args,\n __batch: {\n instance: this,\n operation: this.operations[i]\n }\n })\n );\n }\n\n const result = Promise.all(promises);\n\n return result as Promise<[T0?, T1?, T2?, T3?, T4?, T5?, T6?, T7?, T8?, T9?]>;\n }\n}\n\nexport { Batch, Db };\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/db",
|
|
3
|
-
"version": "5.39.0-beta.
|
|
3
|
+
"version": "5.39.0-beta.2",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"@babel/cli": "7.22.6",
|
|
17
17
|
"@babel/core": "7.22.8",
|
|
18
|
-
"@webiny/cli": "5.39.0-beta.
|
|
19
|
-
"@webiny/project-utils": "5.39.0-beta.
|
|
18
|
+
"@webiny/cli": "5.39.0-beta.2",
|
|
19
|
+
"@webiny/project-utils": "5.39.0-beta.2",
|
|
20
20
|
"rimraf": "3.0.2",
|
|
21
21
|
"typescript": "4.7.4"
|
|
22
22
|
},
|
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
"build": "yarn webiny run build",
|
|
25
25
|
"watch": "yarn webiny run watch"
|
|
26
26
|
},
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "193039382160557448f23f43685f29136f58f87a"
|
|
28
28
|
}
|