@proteinjs/db 1.17.1 → 1.18.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/CHANGELOG.md +11 -0
- package/LICENSE +21 -0
- package/dist/generated/index.js +3 -3
- package/dist/generated/index.js.map +1 -1
- package/dist/src/Db.d.ts.map +1 -1
- package/dist/src/Db.js +35 -5
- package/dist/src/Db.js.map +1 -1
- package/dist/src/Table.d.ts +1 -1
- package/dist/src/Table.d.ts.map +1 -1
- package/generated/index.ts +16 -19
- package/package.json +3 -2
- package/src/Db.ts +25 -4
- package/src/Table.ts +1 -1
package/src/Db.ts
CHANGED
|
@@ -167,7 +167,7 @@ export class Db<R extends Record = Record> implements DbService<R> {
|
|
|
167
167
|
let recordCopy = Object.assign({}, record);
|
|
168
168
|
await addUpdateFieldValues(table, recordCopy);
|
|
169
169
|
const qb = new QueryBuilderFactory().getQueryBuilder(table, query);
|
|
170
|
-
await this.addColumnQueries(table, qb);
|
|
170
|
+
await this.addColumnQueries(table, qb, 'write');
|
|
171
171
|
if (!query) {
|
|
172
172
|
qb.condition({ field: 'id', operator: '=', value: recordCopy.id as T[keyof T] });
|
|
173
173
|
}
|
|
@@ -193,8 +193,23 @@ export class Db<R extends Record = Record> implements DbService<R> {
|
|
|
193
193
|
this.auth.canDelete(table);
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
+
const _query = async <T extends R>(table: Table<T>, query: Query<T>) => {
|
|
197
|
+
const qb = new QueryBuilderFactory().getQueryBuilder(table, query);
|
|
198
|
+
await this.addColumnQueries(table, qb, 'delete');
|
|
199
|
+
|
|
200
|
+
const generateQuery = (config: DbDriverQueryStatementConfig) =>
|
|
201
|
+
qb.toSql(this.statementConfigFactory.getStatementConfig(config));
|
|
202
|
+
const serializedRecords = await this.dbDriver.runQuery(generateQuery, this.currentTransaction);
|
|
203
|
+
const recordSerializer = new RecordSerializer(table);
|
|
204
|
+
const records = await Promise.all(
|
|
205
|
+
serializedRecords.map(async (serializedRecord) => recordSerializer.deserialize(serializedRecord))
|
|
206
|
+
);
|
|
207
|
+
await this.preloadReferences(records);
|
|
208
|
+
return records;
|
|
209
|
+
};
|
|
210
|
+
|
|
196
211
|
const qb = new QueryBuilderFactory().getQueryBuilder(table, query);
|
|
197
|
-
const recordsToDelete = await
|
|
212
|
+
const recordsToDelete = await _query(table, qb);
|
|
198
213
|
if (recordsToDelete.length == 0) {
|
|
199
214
|
return 0;
|
|
200
215
|
}
|
|
@@ -268,7 +283,9 @@ export class Db<R extends Record = Record> implements DbService<R> {
|
|
|
268
283
|
}
|
|
269
284
|
|
|
270
285
|
const qb = new QueryBuilderFactory().getQueryBuilder(table, query);
|
|
286
|
+
|
|
271
287
|
await this.addColumnQueries(table, qb);
|
|
288
|
+
|
|
272
289
|
const generateQuery = (config: DbDriverQueryStatementConfig) =>
|
|
273
290
|
qb.toSql(this.statementConfigFactory.getStatementConfig(config));
|
|
274
291
|
const serializedRecords = await this.dbDriver.runQuery(generateQuery, this.currentTransaction);
|
|
@@ -318,11 +335,15 @@ export class Db<R extends Record = Record> implements DbService<R> {
|
|
|
318
335
|
return result[0]['count'];
|
|
319
336
|
}
|
|
320
337
|
|
|
321
|
-
private async addColumnQueries<T extends R>(
|
|
338
|
+
private async addColumnQueries<T extends R>(
|
|
339
|
+
table: Table<T>,
|
|
340
|
+
qb: QueryBuilder<T>,
|
|
341
|
+
operation: 'read' | 'write' | 'delete' = 'read'
|
|
342
|
+
) {
|
|
322
343
|
for (const columnPropertyName in table.columns) {
|
|
323
344
|
const column = (table.columns as any)[columnPropertyName] as Column<any, any>;
|
|
324
345
|
if (column.options?.addToQuery) {
|
|
325
|
-
await column.options.addToQuery(qb, this.runAsSystem);
|
|
346
|
+
await column.options.addToQuery(qb, this.runAsSystem, operation);
|
|
326
347
|
}
|
|
327
348
|
}
|
|
328
349
|
}
|
package/src/Table.ts
CHANGED
|
@@ -153,7 +153,7 @@ export type ColumnOptions = {
|
|
|
153
153
|
/** Value stored on update */
|
|
154
154
|
updateValue?: (table: Table<any>, updateObj: any) => Promise<any>;
|
|
155
155
|
/** Add conditions to query; called on every query of this table */
|
|
156
|
-
addToQuery?: (qb: QueryBuilder, runAsSystem: boolean) => Promise<void>;
|
|
156
|
+
addToQuery?: (qb: QueryBuilder, runAsSystem: boolean, operation: 'read' | 'write' | 'delete') => Promise<void>;
|
|
157
157
|
onBeforeInsert?: (insertObj: any & Record, runAsSystem: boolean) => Promise<void>;
|
|
158
158
|
ui?: {
|
|
159
159
|
hidden?: boolean;
|