@webiny/db 0.0.0-unstable.e3f4727c56 → 0.0.0-unstable.e53eceafb5

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.
@@ -0,0 +1,8 @@
1
+ import type { IRegistry, IRegistryItem, IRegistryRegisterParams } from "./types";
2
+ export declare class DbRegistry implements IRegistry {
3
+ private readonly items;
4
+ register<T = unknown>(input: IRegistryRegisterParams<T>): void;
5
+ getOneItem<T = unknown>(cb: (item: IRegistryItem<T>) => boolean): IRegistryItem<T>;
6
+ getItem<T = unknown>(cb: (item: IRegistryItem<T>) => boolean): IRegistryItem<T> | null;
7
+ getItems<T = unknown>(cb: (item: IRegistryItem<T>) => boolean): IRegistryItem<T>[];
8
+ }
package/DbRegistry.js ADDED
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DbRegistry = void 0;
7
+ class DbRegistry {
8
+ items = {};
9
+ register(input) {
10
+ const key = `${input.app}-${input.tags.sort().join("-")}`;
11
+ if (this.items[key]) {
12
+ throw new Error(`Item with app "${input.app}" and tags "${input.tags.join(", ")}" is already registered.`);
13
+ }
14
+ this.items[key] = input;
15
+ }
16
+ getOneItem(cb) {
17
+ const item = this.getItem(cb);
18
+ if (!item) {
19
+ throw new Error("Item not found.");
20
+ }
21
+ return item;
22
+ }
23
+ getItem(cb) {
24
+ const items = this.getItems(cb);
25
+ if (items.length === 0) {
26
+ return null;
27
+ } else if (items.length > 1) {
28
+ throw new Error("More than one item found with the provided criteria.");
29
+ }
30
+ return items[0];
31
+ }
32
+ getItems(cb) {
33
+ const results = [];
34
+ for (const key in this.items) {
35
+ const item = this.items[key];
36
+ if (cb(item)) {
37
+ results.push(item);
38
+ }
39
+ }
40
+ return results;
41
+ }
42
+ }
43
+ exports.DbRegistry = DbRegistry;
44
+
45
+ //# sourceMappingURL=DbRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DbRegistry","items","register","input","key","app","tags","sort","join","Error","getOneItem","cb","item","getItem","getItems","length","results","push","exports"],"sources":["DbRegistry.ts"],"sourcesContent":["import type { IRegistry, IRegistryItem, IRegistryRegisterParams } from \"./types\";\nimport type { GenericRecord } from \"@webiny/api/types\";\n\nexport class DbRegistry implements IRegistry {\n private readonly items: GenericRecord<string, IRegistryItem> = {};\n\n public register<T = unknown>(input: IRegistryRegisterParams<T>): void {\n const key = `${input.app}-${input.tags.sort().join(\"-\")}`;\n\n if (this.items[key]) {\n throw new Error(\n `Item with app \"${input.app}\" and tags \"${input.tags.join(\n \", \"\n )}\" is already registered.`\n );\n }\n this.items[key] = input;\n }\n\n public getOneItem<T = unknown>(cb: (item: IRegistryItem<T>) => boolean): IRegistryItem<T> {\n const item = this.getItem(cb);\n if (!item) {\n throw new Error(\"Item not found.\");\n }\n return item;\n }\n\n public getItem<T = unknown>(cb: (item: IRegistryItem<T>) => boolean): IRegistryItem<T> | null {\n const items = this.getItems(cb);\n if (items.length === 0) {\n return null;\n } else if (items.length > 1) {\n throw new Error(\"More than one item found with the provided criteria.\");\n }\n return items[0];\n }\n\n public getItems<T = unknown>(cb: (item: IRegistryItem<T>) => boolean): IRegistryItem<T>[] {\n const results: IRegistryItem<T>[] = [];\n for (const key in this.items) {\n const item = this.items[key] as IRegistryItem<T>;\n if (cb(item)) {\n results.push(item);\n }\n }\n\n return results;\n }\n}\n"],"mappings":";;;;;;AAGO,MAAMA,UAAU,CAAsB;EACxBC,KAAK,GAAyC,CAAC,CAAC;EAE1DC,QAAQA,CAAcC,KAAiC,EAAQ;IAClE,MAAMC,GAAG,GAAG,GAAGD,KAAK,CAACE,GAAG,IAAIF,KAAK,CAACG,IAAI,CAACC,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,EAAE;IAEzD,IAAI,IAAI,CAACP,KAAK,CAACG,GAAG,CAAC,EAAE;MACjB,MAAM,IAAIK,KAAK,CACX,kBAAkBN,KAAK,CAACE,GAAG,eAAeF,KAAK,CAACG,IAAI,CAACE,IAAI,CACrD,IACJ,CAAC,0BACL,CAAC;IACL;IACA,IAAI,CAACP,KAAK,CAACG,GAAG,CAAC,GAAGD,KAAK;EAC3B;EAEOO,UAAUA,CAAcC,EAAuC,EAAoB;IACtF,MAAMC,IAAI,GAAG,IAAI,CAACC,OAAO,CAACF,EAAE,CAAC;IAC7B,IAAI,CAACC,IAAI,EAAE;MACP,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;IACtC;IACA,OAAOG,IAAI;EACf;EAEOC,OAAOA,CAAcF,EAAuC,EAA2B;IAC1F,MAAMV,KAAK,GAAG,IAAI,CAACa,QAAQ,CAACH,EAAE,CAAC;IAC/B,IAAIV,KAAK,CAACc,MAAM,KAAK,CAAC,EAAE;MACpB,OAAO,IAAI;IACf,CAAC,MAAM,IAAId,KAAK,CAACc,MAAM,GAAG,CAAC,EAAE;MACzB,MAAM,IAAIN,KAAK,CAAC,sDAAsD,CAAC;IAC3E;IACA,OAAOR,KAAK,CAAC,CAAC,CAAC;EACnB;EAEOa,QAAQA,CAAcH,EAAuC,EAAsB;IACtF,MAAMK,OAA2B,GAAG,EAAE;IACtC,KAAK,MAAMZ,GAAG,IAAI,IAAI,CAACH,KAAK,EAAE;MAC1B,MAAMW,IAAI,GAAG,IAAI,CAACX,KAAK,CAACG,GAAG,CAAqB;MAChD,IAAIO,EAAE,CAACC,IAAI,CAAC,EAAE;QACVI,OAAO,CAACC,IAAI,CAACL,IAAI,CAAC;MACtB;IACJ;IAEA,OAAOI,OAAO;EAClB;AACJ;AAACE,OAAA,CAAAlB,UAAA,GAAAA,UAAA","ignoreList":[]}
package/index.d.ts CHANGED
@@ -1,77 +1,18 @@
1
- /**
2
- * TODO Remove when moved all packages to standalone storage opts.
3
- */
4
- interface KeyField {
5
- name: string;
1
+ import { DbRegistry } from "./DbRegistry";
2
+ import type { IStore } from "./store/types";
3
+ export * from "./types";
4
+ export interface DbDriver<T> extends IStore {
5
+ getClient(): T;
6
6
  }
7
- export interface Key {
8
- primary?: boolean;
9
- unique?: boolean;
10
- name: string;
11
- fields: KeyField[];
12
- }
13
- export interface ArgsBatch {
14
- instance: Batch;
15
- operation: Operation;
16
- }
17
- export interface Args {
18
- __batch?: ArgsBatch;
19
- table?: string;
20
- meta?: boolean;
21
- limit?: number;
22
- sort?: Record<string, 1 | -1>;
23
- data?: Record<string, any>;
24
- query?: Record<string, any>;
25
- keys?: Key[];
26
- }
27
- export declare type Result<T = any> = [T, Record<string, any>];
28
- export interface DbDriver {
29
- create: (args: Args) => Promise<Result<true>>;
30
- read: <T = Record<string, any>>(args: Args) => Promise<Result<T[]>>;
31
- update: (args: Args) => Promise<Result<true>>;
32
- delete: (args: Args) => Promise<Result<true>>;
33
- createLog: (args: {
34
- operation: string;
35
- data: Args;
36
- table: string;
37
- id: string;
38
- }) => Promise<Result<true>>;
39
- readLogs: <T = Record<string, any>>(args: {
40
- table: string;
41
- }) => Promise<Result<T[]>>;
42
- }
43
- export declare type OperationType = "create" | "read" | "update" | "delete";
44
- export declare type Operation = [OperationType, Args];
45
- export declare type ConstructorArgs = {
46
- driver: DbDriver;
7
+ export interface ConstructorArgs<T> {
8
+ driver: DbDriver<T>;
47
9
  table?: string;
48
- logTable?: string;
49
- };
50
- declare class Db {
51
- driver: DbDriver;
52
- table: string;
53
- logTable?: string;
54
- constructor({ driver, table, logTable }: ConstructorArgs);
55
- create(args: Args): Promise<Result<true>>;
56
- read<T = Record<string, any>>(args: Args): Promise<Result<T[]>>;
57
- update(args: Args): Promise<Result<true>>;
58
- delete(args: Args): Promise<Result<true>>;
59
- createLog(operation: string, args: Args): Promise<Result<true> | null>;
60
- readLogs<T = Record<string, any>>(): Promise<Result<T[]> | null>;
61
- batch<T0 = any, T1 = any, T2 = any, T3 = any, T4 = any, T5 = any, T6 = any, T7 = any, T8 = any, T9 = any>(): Batch;
62
10
  }
63
- declare class Batch<T0 = any, T1 = any, T2 = any, T3 = any, T4 = any, T5 = any, T6 = any, T7 = any, T8 = any, T9 = any> {
64
- db: Db;
65
- type: "batch" | "transaction";
66
- id: string;
67
- meta: Record<string, any>;
68
- operations: Operation[];
69
- constructor(db: Db);
70
- push(...operations: Operation[]): this;
71
- create(...args: Args[]): this;
72
- read(...args: Args[]): this;
73
- update(...args: Args[]): this;
74
- delete(...args: Args[]): this;
75
- execute(): Promise<[T0?, T1?, T2?, T3?, T4?, T5?, T6?, T7?, T8?, T9?]>;
11
+ declare class Db<T> {
12
+ driver: DbDriver<T>;
13
+ readonly table?: string;
14
+ readonly store: IStore;
15
+ readonly registry: DbRegistry;
16
+ constructor({ driver, table }: ConstructorArgs<T>);
76
17
  }
77
- export { Batch, Db };
18
+ export { Db };
package/index.js CHANGED
@@ -1,207 +1,39 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
- exports.Db = exports.Batch = void 0;
9
-
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
- /**
15
- * TODO Remove when moved all packages to standalone storage opts.
16
- */
17
- // Generates a short and sortable ID, e.g. "1607677774994.tfz58m".
18
- const shortId = () => {
19
- const time = new Date().getTime();
20
- const uniqueId = Math.random().toString(36).slice(-6);
21
- return `${time}.${uniqueId}`;
6
+ var _exportNames = {
7
+ Db: true
22
8
  };
23
-
24
- // Picks necessary data from received args, ready to be stored in the log table.
25
- const getCreateLogData = args => {
26
- const {
27
- table,
28
- meta,
29
- limit,
30
- sort,
31
- data,
32
- query,
33
- keys
34
- } = args;
35
- return {
36
- table,
37
- meta,
38
- limit,
39
- sort,
40
- data,
41
- query,
42
- keys,
43
- batch: args.__batch ? {
44
- id: args.__batch.instance.id,
45
- type: args.__batch.instance.type
46
- } : null
47
- };
48
- };
49
-
9
+ exports.Db = void 0;
10
+ var _DbRegistry = require("./DbRegistry");
11
+ var _Store = require("./store/Store");
12
+ var _types = require("./types");
13
+ Object.keys(_types).forEach(function (key) {
14
+ if (key === "default" || key === "__esModule") return;
15
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
16
+ if (key in exports && exports[key] === _types[key]) return;
17
+ Object.defineProperty(exports, key, {
18
+ enumerable: true,
19
+ get: function () {
20
+ return _types[key];
21
+ }
22
+ });
23
+ });
50
24
  class Db {
25
+ registry = new _DbRegistry.DbRegistry();
51
26
  constructor({
52
27
  driver,
53
- table,
54
- logTable
28
+ table
55
29
  }) {
56
- (0, _defineProperty2.default)(this, "driver", void 0);
57
- (0, _defineProperty2.default)(this, "table", void 0);
58
- (0, _defineProperty2.default)(this, "logTable", void 0);
59
- this.driver = driver; // @ts-ignore
60
-
61
30
  this.table = table;
62
- this.logTable = logTable;
63
- }
64
-
65
- async create(args) {
66
- const createArgs = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, args), {}, {
67
- table: args.table || this.table
68
- });
69
- await this.createLog("create", createArgs);
70
- return this.driver.create(createArgs);
71
- }
72
-
73
- async read(args) {
74
- const readArgs = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, args), {}, {
75
- table: args.table || this.table
76
- });
77
- await this.createLog("read", readArgs);
78
- return this.driver.read(readArgs);
79
- }
80
-
81
- async update(args) {
82
- const updateArgs = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, args), {}, {
83
- table: args.table || this.table
84
- });
85
- await this.createLog("update", updateArgs);
86
- return this.driver.update(updateArgs);
87
- }
88
-
89
- async delete(args) {
90
- const deleteArgs = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, args), {}, {
91
- table: args.table || this.table
92
- });
93
- await this.createLog("delete", deleteArgs);
94
- return this.driver.delete(deleteArgs);
95
- } // Logging functions.
96
-
97
-
98
- async createLog(operation, args) {
99
- if (!this.logTable) {
100
- return null;
101
- }
102
-
103
- const data = getCreateLogData(args);
104
- return this.driver.createLog({
105
- operation,
106
- data,
107
- table: this.logTable,
108
- id: shortId()
109
- });
110
- }
111
-
112
- async readLogs() {
113
- if (!this.logTable) {
114
- return null;
115
- }
116
-
117
- return this.driver.readLogs({
118
- table: this.logTable
31
+ this.driver = driver;
32
+ this.store = new _Store.Store({
33
+ driver
119
34
  });
120
35
  }
121
-
122
- batch() {
123
- return new Batch(this);
124
- }
125
-
126
36
  }
127
-
128
37
  exports.Db = Db;
129
38
 
130
- class Batch {
131
- constructor(db) {
132
- (0, _defineProperty2.default)(this, "db", void 0);
133
- (0, _defineProperty2.default)(this, "type", void 0);
134
- (0, _defineProperty2.default)(this, "id", void 0);
135
- (0, _defineProperty2.default)(this, "meta", void 0);
136
- (0, _defineProperty2.default)(this, "operations", void 0);
137
- this.db = db;
138
- this.type = "batch";
139
- this.id = shortId();
140
- this.meta = {};
141
- this.operations = [];
142
- }
143
-
144
- push(...operations) {
145
- for (let i = 0; i < operations.length; i++) {
146
- const item = operations[i];
147
- this.operations.push(item);
148
- }
149
-
150
- return this;
151
- }
152
-
153
- create(...args) {
154
- for (let i = 0; i < args.length; i++) {
155
- this.push(["create", args[i]]);
156
- }
157
-
158
- return this;
159
- }
160
-
161
- read(...args) {
162
- for (let i = 0; i < args.length; i++) {
163
- this.push(["read", args[i]]);
164
- }
165
-
166
- return this;
167
- }
168
-
169
- update(...args) {
170
- for (let i = 0; i < args.length; i++) {
171
- this.push(["update", args[i]]);
172
- }
173
-
174
- return this;
175
- }
176
-
177
- delete(...args) {
178
- for (let i = 0; i < args.length; i++) {
179
- this.push(["delete", args[i]]);
180
- }
181
-
182
- return this;
183
- }
184
-
185
- async execute() {
186
- /**
187
- * TODO: figure out which exact type to use instead of any.
188
- */
189
- const promises = [];
190
-
191
- for (let i = 0; i < this.operations.length; i++) {
192
- const [operation, args] = this.operations[i];
193
- promises.push(this.db[operation]((0, _objectSpread2.default)((0, _objectSpread2.default)({}, args), {}, {
194
- __batch: {
195
- instance: this,
196
- operation: this.operations[i]
197
- }
198
- })));
199
- }
200
-
201
- const result = Promise.all(promises);
202
- return result;
203
- }
204
-
205
- }
206
-
207
- exports.Batch = Batch;
39
+ //# sourceMappingURL=index.js.map
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","create","createArgs","createLog","read","readArgs","update","updateArgs","delete","deleteArgs","operation","readLogs","Batch","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":"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"}
1
+ {"version":3,"names":["_DbRegistry","require","_Store","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","Db","registry","DbRegistry","constructor","driver","table","store","Store"],"sources":["index.ts"],"sourcesContent":["import { DbRegistry } from \"~/DbRegistry\";\nimport type { IStore } from \"~/store/types\";\nimport { Store } from \"~/store/Store\";\n\nexport * from \"./types\";\n\nexport interface DbDriver<T> extends IStore {\n getClient(): T;\n}\n\nexport interface ConstructorArgs<T> {\n driver: DbDriver<T>;\n table?: string;\n}\n\nclass Db<T> {\n public driver: DbDriver<T>;\n public readonly table?: string;\n public readonly store: IStore;\n\n public readonly registry = new DbRegistry();\n\n constructor({ driver, table }: ConstructorArgs<T>) {\n this.table = table;\n this.driver = driver;\n this.store = new Store<T>({\n driver\n });\n }\n}\n\nexport { Db };\n"],"mappings":";;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAWA,MAAMS,EAAE,CAAI;EAKQC,QAAQ,GAAG,IAAIC,sBAAU,CAAC,CAAC;EAE3CC,WAAWA,CAAC;IAAEC,MAAM;IAAEC;EAA0B,CAAC,EAAE;IAC/C,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,KAAK,GAAG,IAAIC,YAAK,CAAI;MACtBH;IACJ,CAAC,CAAC;EACN;AACJ;AAACR,OAAA,CAAAI,EAAA,GAAAA,EAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,28 +1,29 @@
1
1
  {
2
- "name": "@webiny/db",
3
- "version": "0.0.0-unstable.e3f4727c56",
4
- "main": "index.js",
5
- "repository": {
6
- "type": "git",
7
- "url": "https://github.com/webiny/webiny-js.git"
8
- },
9
- "description": "A simple multi-database client.",
10
- "license": "MIT",
11
- "publishConfig": {
12
- "access": "public",
13
- "directory": "dist"
14
- },
15
- "devDependencies": {
16
- "@babel/cli": "^7.19.3",
17
- "@babel/core": "^7.19.3",
18
- "@webiny/cli": "^0.0.0-unstable.e3f4727c56",
19
- "@webiny/project-utils": "^0.0.0-unstable.e3f4727c56",
20
- "rimraf": "^3.0.2",
21
- "typescript": "4.7.4"
22
- },
23
- "scripts": {
24
- "build": "yarn webiny run build",
25
- "watch": "yarn webiny run watch"
26
- },
27
- "gitHead": "e3f4727c567484dc53e1efceacfb37dbacd7f4de"
2
+ "name": "@webiny/db",
3
+ "version": "0.0.0-unstable.e53eceafb5",
4
+ "main": "index.js",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/webiny/webiny-js.git"
8
+ },
9
+ "description": "A simple multi-database client.",
10
+ "license": "MIT",
11
+ "publishConfig": {
12
+ "access": "public",
13
+ "directory": "dist"
14
+ },
15
+ "dependencies": {
16
+ "@webiny/api": "0.0.0-unstable.e53eceafb5",
17
+ "type-fest": "4.14.0"
18
+ },
19
+ "devDependencies": {
20
+ "@webiny/project-utils": "0.0.0-unstable.e53eceafb5",
21
+ "rimraf": "6.0.1",
22
+ "typescript": "5.3.3"
23
+ },
24
+ "scripts": {
25
+ "build": "node ../cli/bin.js run build",
26
+ "watch": "node ../cli/bin.js run watch"
27
+ },
28
+ "gitHead": "e53eceafb5ce1a3872c9b4548939bb2eae5b1aef"
28
29
  }
@@ -0,0 +1,17 @@
1
+ import type { GetValueResult, GetValuesResult, IListValuesParams, IStore, ListValuesResult, RemoveValueResult, RemoveValuesResult, StorageKey, StoreValueResult, StoreValuesResult } from "./types";
2
+ import type { GenericRecord } from "@webiny/api/types";
3
+ import type { DbDriver } from "../index";
4
+ export interface IStoreParams<T> {
5
+ driver: DbDriver<T>;
6
+ }
7
+ export declare class Store<T> implements IStore {
8
+ private driver;
9
+ constructor(params: IStoreParams<T>);
10
+ storeValue<V>(key: StorageKey, value: V): Promise<StoreValueResult<V>>;
11
+ storeValues<V extends GenericRecord<StorageKey>>(values: V): Promise<StoreValuesResult<V>>;
12
+ getValue<V>(key: StorageKey): Promise<GetValueResult<V>>;
13
+ getValues<V extends GenericRecord<StorageKey>>(keys: (keyof V)[]): Promise<GetValuesResult<V>>;
14
+ listValues<V extends GenericRecord<StorageKey>>(params?: IListValuesParams): Promise<ListValuesResult<V>>;
15
+ removeValue<V>(key: StorageKey): Promise<RemoveValueResult<V>>;
16
+ removeValues<V extends GenericRecord<StorageKey>>(keys: (keyof V)[]): Promise<RemoveValuesResult<V>>;
17
+ }
package/store/Store.js ADDED
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Store = void 0;
7
+ class Store {
8
+ constructor(params) {
9
+ this.driver = params.driver;
10
+ }
11
+ async storeValue(key, value) {
12
+ return this.driver.storeValue(key, value);
13
+ }
14
+ async storeValues(values) {
15
+ return this.driver.storeValues(values);
16
+ }
17
+ async getValue(key) {
18
+ return this.driver.getValue(key);
19
+ }
20
+ async getValues(keys) {
21
+ return this.driver.getValues(keys);
22
+ }
23
+ async listValues(params) {
24
+ return this.driver.listValues(params);
25
+ }
26
+ async removeValue(key) {
27
+ return this.driver.removeValue(key);
28
+ }
29
+ async removeValues(keys) {
30
+ return this.driver.removeValues(keys);
31
+ }
32
+ }
33
+ exports.Store = Store;
34
+
35
+ //# sourceMappingURL=Store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Store","constructor","params","driver","storeValue","key","value","storeValues","values","getValue","getValues","keys","listValues","removeValue","removeValues","exports"],"sources":["Store.ts"],"sourcesContent":["import type {\n GetValueResult,\n GetValuesResult,\n IListValuesParams,\n IStore,\n ListValuesResult,\n RemoveValueResult,\n RemoveValuesResult,\n StorageKey,\n StoreValueResult,\n StoreValuesResult\n} from \"./types\";\nimport type { GenericRecord } from \"@webiny/api/types\";\nimport type { DbDriver } from \"~/index\";\n\nexport interface IStoreParams<T> {\n driver: DbDriver<T>;\n}\n\nexport class Store<T> implements IStore {\n private driver: DbDriver<T>;\n\n public constructor(params: IStoreParams<T>) {\n this.driver = params.driver;\n }\n\n public async storeValue<V>(key: StorageKey, value: V): Promise<StoreValueResult<V>> {\n return this.driver.storeValue<V>(key, value);\n }\n\n public async storeValues<V extends GenericRecord<StorageKey>>(\n values: V\n ): Promise<StoreValuesResult<V>> {\n return this.driver.storeValues<V>(values);\n }\n\n public async getValue<V>(key: StorageKey): Promise<GetValueResult<V>> {\n return this.driver.getValue<V>(key);\n }\n\n public async getValues<V extends GenericRecord<StorageKey>>(\n keys: (keyof V)[]\n ): Promise<GetValuesResult<V>> {\n return this.driver.getValues<V>(keys);\n }\n\n public async listValues<V extends GenericRecord<StorageKey>>(\n params?: IListValuesParams\n ): Promise<ListValuesResult<V>> {\n return this.driver.listValues<V>(params);\n }\n\n public async removeValue<V>(key: StorageKey): Promise<RemoveValueResult<V>> {\n return this.driver.removeValue<V>(key);\n }\n\n public async removeValues<V extends GenericRecord<StorageKey>>(\n keys: (keyof V)[]\n ): Promise<RemoveValuesResult<V>> {\n return this.driver.removeValues<V>(keys);\n }\n}\n"],"mappings":";;;;;;AAmBO,MAAMA,KAAK,CAAsB;EAG7BC,WAAWA,CAACC,MAAuB,EAAE;IACxC,IAAI,CAACC,MAAM,GAAGD,MAAM,CAACC,MAAM;EAC/B;EAEA,MAAaC,UAAUA,CAAIC,GAAe,EAAEC,KAAQ,EAAgC;IAChF,OAAO,IAAI,CAACH,MAAM,CAACC,UAAU,CAAIC,GAAG,EAAEC,KAAK,CAAC;EAChD;EAEA,MAAaC,WAAWA,CACpBC,MAAS,EACoB;IAC7B,OAAO,IAAI,CAACL,MAAM,CAACI,WAAW,CAAIC,MAAM,CAAC;EAC7C;EAEA,MAAaC,QAAQA,CAAIJ,GAAe,EAA8B;IAClE,OAAO,IAAI,CAACF,MAAM,CAACM,QAAQ,CAAIJ,GAAG,CAAC;EACvC;EAEA,MAAaK,SAASA,CAClBC,IAAiB,EACU;IAC3B,OAAO,IAAI,CAACR,MAAM,CAACO,SAAS,CAAIC,IAAI,CAAC;EACzC;EAEA,MAAaC,UAAUA,CACnBV,MAA0B,EACE;IAC5B,OAAO,IAAI,CAACC,MAAM,CAACS,UAAU,CAAIV,MAAM,CAAC;EAC5C;EAEA,MAAaW,WAAWA,CAAIR,GAAe,EAAiC;IACxE,OAAO,IAAI,CAACF,MAAM,CAACU,WAAW,CAAIR,GAAG,CAAC;EAC1C;EAEA,MAAaS,YAAYA,CACrBH,IAAiB,EACa;IAC9B,OAAO,IAAI,CAACR,MAAM,CAACW,YAAY,CAAIH,IAAI,CAAC;EAC5C;AACJ;AAACI,OAAA,CAAAf,KAAA,GAAAA,KAAA","ignoreList":[]}
@@ -0,0 +1,84 @@
1
+ import type { CamelCase } from "type-fest";
2
+ import type { GenericRecord } from "@webiny/api/types";
3
+ export type StorageKey = `${CamelCase<string>}`;
4
+ export interface IStoreValueSuccessResult<V> {
5
+ key: StorageKey;
6
+ data: V | null | undefined;
7
+ error?: undefined;
8
+ }
9
+ export interface IStoreValueErrorResult {
10
+ key: StorageKey;
11
+ data?: never;
12
+ error: Error;
13
+ }
14
+ export type StoreValueResult<V> = IStoreValueSuccessResult<V> | IStoreValueErrorResult;
15
+ export interface IStoreValuesSuccessResult<V extends GenericRecord<StorageKey>> {
16
+ keys: (keyof V)[];
17
+ data: V;
18
+ error?: undefined;
19
+ }
20
+ export interface IStoreValuesErrorResult<V> {
21
+ keys: (keyof V)[];
22
+ data?: never;
23
+ error: Error;
24
+ }
25
+ export type StoreValuesResult<V extends GenericRecord<StorageKey>> = IStoreValuesSuccessResult<V> | IStoreValuesErrorResult<V>;
26
+ export interface IGetValueSuccessResult<V> {
27
+ key: StorageKey;
28
+ data: V | null | undefined;
29
+ error?: undefined;
30
+ }
31
+ export interface IGetValueErrorResult {
32
+ key: StorageKey;
33
+ data?: never;
34
+ error: Error;
35
+ }
36
+ export type GetValueResult<V> = IGetValueSuccessResult<V> | IGetValueErrorResult;
37
+ export interface IGetValuesSuccessResult<V extends GenericRecord<StorageKey>> {
38
+ keys: (keyof V)[];
39
+ data: V;
40
+ error?: undefined;
41
+ }
42
+ export interface IGetValuesErrorResult<V> {
43
+ keys: (keyof V)[];
44
+ data?: never;
45
+ error: Error;
46
+ }
47
+ export type GetValuesResult<V extends GenericRecord<StorageKey>> = IGetValuesSuccessResult<V> | IGetValuesErrorResult<V>;
48
+ export interface IListValuesSuccessResult<V extends GenericRecord<StorageKey>> {
49
+ keys: (keyof V)[];
50
+ data: V;
51
+ error?: undefined;
52
+ }
53
+ export interface IListValuesErrorResult {
54
+ data?: never;
55
+ error: Error;
56
+ }
57
+ export type ListValuesResult<V extends GenericRecord<StorageKey>> = IListValuesSuccessResult<V> | IListValuesErrorResult;
58
+ export type IListValuesParams = {
59
+ beginsWith: string;
60
+ } | {
61
+ eq: string;
62
+ } | {
63
+ gt: string;
64
+ } | {
65
+ gte: string;
66
+ } | {
67
+ lt: string;
68
+ } | {
69
+ lte: string;
70
+ };
71
+ export type RemoveValueResult<V> = StoreValueResult<V>;
72
+ export interface RemoveValuesResult<V extends GenericRecord<StorageKey>> {
73
+ keys: (keyof V)[];
74
+ error?: Error;
75
+ }
76
+ export interface IStore {
77
+ storeValue<V>(key: StorageKey, value: V): Promise<StoreValueResult<V>>;
78
+ storeValues<V extends GenericRecord<StorageKey>>(values: V): Promise<StoreValuesResult<V>>;
79
+ getValue<V>(key: StorageKey): Promise<GetValueResult<V>>;
80
+ getValues<V extends GenericRecord<StorageKey>>(keys: (keyof V)[]): Promise<GetValuesResult<V>>;
81
+ listValues<V extends GenericRecord<StorageKey>>(params?: IListValuesParams): Promise<ListValuesResult<V>>;
82
+ removeValue<V>(key: StorageKey): Promise<RemoveValueResult<V>>;
83
+ removeValues<V extends GenericRecord<StorageKey>>(keys: (keyof V)[]): Promise<RemoveValuesResult<V>>;
84
+ }
package/store/types.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { CamelCase } from \"type-fest\";\nimport type { GenericRecord } from \"@webiny/api/types\";\n\nexport type StorageKey = `${CamelCase<string>}`;\n\nexport interface IStoreValueSuccessResult<V> {\n key: StorageKey;\n data: V | null | undefined;\n error?: undefined;\n}\n\nexport interface IStoreValueErrorResult {\n key: StorageKey;\n data?: never;\n error: Error;\n}\n\nexport type StoreValueResult<V> = IStoreValueSuccessResult<V> | IStoreValueErrorResult;\n\nexport interface IStoreValuesSuccessResult<V extends GenericRecord<StorageKey>> {\n keys: (keyof V)[];\n data: V;\n error?: undefined;\n}\n\nexport interface IStoreValuesErrorResult<V> {\n keys: (keyof V)[];\n data?: never;\n error: Error;\n}\n\nexport type StoreValuesResult<V extends GenericRecord<StorageKey>> =\n | IStoreValuesSuccessResult<V>\n | IStoreValuesErrorResult<V>;\n\nexport interface IGetValueSuccessResult<V> {\n key: StorageKey;\n data: V | null | undefined;\n error?: undefined;\n}\n\nexport interface IGetValueErrorResult {\n key: StorageKey;\n data?: never;\n error: Error;\n}\n\nexport type GetValueResult<V> = IGetValueSuccessResult<V> | IGetValueErrorResult;\n\nexport interface IGetValuesSuccessResult<V extends GenericRecord<StorageKey>> {\n keys: (keyof V)[];\n data: V;\n error?: undefined;\n}\n\nexport interface IGetValuesErrorResult<V> {\n keys: (keyof V)[];\n data?: never;\n error: Error;\n}\n\nexport type GetValuesResult<V extends GenericRecord<StorageKey>> =\n | IGetValuesSuccessResult<V>\n | IGetValuesErrorResult<V>;\n\nexport interface IListValuesSuccessResult<V extends GenericRecord<StorageKey>> {\n keys: (keyof V)[];\n data: V;\n error?: undefined;\n}\n\nexport interface IListValuesErrorResult {\n data?: never;\n error: Error;\n}\n\nexport type ListValuesResult<V extends GenericRecord<StorageKey>> =\n | IListValuesSuccessResult<V>\n | IListValuesErrorResult;\n\nexport type IListValuesParams =\n | {\n beginsWith: string;\n }\n | {\n eq: string;\n }\n | {\n gt: string;\n }\n | {\n gte: string;\n }\n | {\n lt: string;\n }\n | {\n lte: string;\n };\n\nexport type RemoveValueResult<V> = StoreValueResult<V>;\n\nexport interface RemoveValuesResult<V extends GenericRecord<StorageKey>> {\n keys: (keyof V)[];\n error?: Error;\n}\n\nexport interface IStore {\n storeValue<V>(key: StorageKey, value: V): Promise<StoreValueResult<V>>;\n storeValues<V extends GenericRecord<StorageKey>>(values: V): Promise<StoreValuesResult<V>>;\n getValue<V>(key: StorageKey): Promise<GetValueResult<V>>;\n getValues<V extends GenericRecord<StorageKey>>(keys: (keyof V)[]): Promise<GetValuesResult<V>>;\n listValues<V extends GenericRecord<StorageKey>>(\n params?: IListValuesParams\n ): Promise<ListValuesResult<V>>;\n removeValue<V>(key: StorageKey): Promise<RemoveValueResult<V>>;\n removeValues<V extends GenericRecord<StorageKey>>(\n keys: (keyof V)[]\n ): Promise<RemoveValuesResult<V>>;\n}\n"],"mappings":"","ignoreList":[]}
package/types.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ import type { NonEmptyArray } from "@webiny/api/types";
2
+ export interface IRegistryRegisterParams<T = unknown> {
3
+ item: T;
4
+ app: string;
5
+ tags: NonEmptyArray<string>;
6
+ }
7
+ export interface IRegistryItem<T = unknown> {
8
+ item: T;
9
+ app: string;
10
+ tags: NonEmptyArray<string>;
11
+ }
12
+ export interface IRegistry {
13
+ register<T = unknown>(params: IRegistryRegisterParams<T>): void;
14
+ /**
15
+ * Throws an error if more than one item is found or there is no item found.
16
+ */
17
+ getOneItem<T = unknown>(cb: (item: IRegistryItem<T>) => boolean): IRegistryItem<T>;
18
+ /**
19
+ * Throws an error if more than one item is found.
20
+ */
21
+ getItem<T = unknown>(cb: (item: IRegistryItem<T>) => boolean): IRegistryItem<T> | null;
22
+ getItems<T = unknown>(cb: (item: IRegistryItem<T>) => boolean): IRegistryItem<T>[];
23
+ }
24
+ export * from "./store/types";
package/types.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _types = require("./store/types");
7
+ Object.keys(_types).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _types[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _types[key];
14
+ }
15
+ });
16
+ });
17
+
18
+ //# sourceMappingURL=types.js.map
package/types.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_types","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["types.ts"],"sourcesContent":["import type { NonEmptyArray } from \"@webiny/api/types\";\n\nexport interface IRegistryRegisterParams<T = unknown> {\n item: T;\n app: string;\n tags: NonEmptyArray<string>;\n}\n\nexport interface IRegistryItem<T = unknown> {\n item: T;\n app: string;\n tags: NonEmptyArray<string>;\n}\n\nexport interface IRegistry {\n register<T = unknown>(params: IRegistryRegisterParams<T>): void;\n /**\n * Throws an error if more than one item is found or there is no item found.\n */\n getOneItem<T = unknown>(cb: (item: IRegistryItem<T>) => boolean): IRegistryItem<T>;\n /**\n * Throws an error if more than one item is found.\n */\n getItem<T = unknown>(cb: (item: IRegistryItem<T>) => boolean): IRegistryItem<T> | null;\n getItems<T = unknown>(cb: (item: IRegistryItem<T>) => boolean): IRegistryItem<T>[];\n}\n\nexport * from \"./store/types\";\n"],"mappings":";;;;;AA2BA,IAAAA,MAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}