prostgles-server 4.1.93 → 4.1.94
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/.github/workflows/main.yml +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.d.ts +53 -0
- package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -0
- package/dist/DboBuilder/TableHandler/TableHandler.js +202 -0
- package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -0
- package/dist/DboBuilder/TableHandler/insert.d.ts +6 -0
- package/dist/DboBuilder/TableHandler/insert.d.ts.map +1 -0
- package/dist/DboBuilder/TableHandler/insert.js +122 -0
- package/dist/DboBuilder/TableHandler/insert.js.map +1 -0
- package/dist/DboBuilder/TableHandler/insertTest.d.ts +17 -0
- package/dist/DboBuilder/TableHandler/insertTest.d.ts.map +1 -0
- package/dist/DboBuilder/TableHandler/insertTest.js +73 -0
- package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -0
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts +24 -0
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -0
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +97 -0
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -0
- package/dist/DboBuilder/TableHandler/update.d.ts +6 -0
- package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -0
- package/dist/DboBuilder/TableHandler/update.js +133 -0
- package/dist/DboBuilder/TableHandler/update.js.map +1 -0
- package/dist/DboBuilder/TableHandler/updateBatch.d.ts +6 -0
- package/dist/DboBuilder/TableHandler/updateBatch.d.ts.map +1 -0
- package/dist/DboBuilder/TableHandler/updateBatch.js +31 -0
- package/dist/DboBuilder/TableHandler/updateBatch.js.map +1 -0
- package/dist/DboBuilder/ViewHandler/ColSet.d.ts +4 -4
- package/dist/DboBuilder/ViewHandler/ColSet.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ColSet.js +18 -10
- package/dist/DboBuilder/ViewHandler/ColSet.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +15 -9
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.js +16 -14
- package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/delete.d.ts +1 -1
- package/dist/DboBuilder/delete.d.ts.map +1 -1
- package/dist/DboBuilder/delete.js +5 -9
- package/dist/DboBuilder/delete.js.map +1 -1
- package/dist/DboBuilder/find.d.ts +1 -1
- package/dist/DboBuilder/find.d.ts.map +1 -1
- package/dist/DboBuilder/find.js +2 -2
- package/dist/DboBuilder/find.js.map +1 -1
- package/dist/DboBuilder/getColumns.d.ts +1 -1
- package/dist/DboBuilder/getColumns.d.ts.map +1 -1
- package/dist/DboBuilder/insertDataParse.d.ts +1 -1
- package/dist/DboBuilder/insertDataParse.d.ts.map +1 -1
- package/dist/DboBuilder/insertDataParse.js +5 -5
- package/dist/DboBuilder/insertDataParse.js.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.d.ts +1 -1
- package/dist/DboBuilder/parseUpdateRules.d.ts.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.js +2 -2
- package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
- package/dist/DboBuilder/subscribe.d.ts.map +1 -1
- package/dist/DboBuilder/subscribe.js +1 -2
- package/dist/DboBuilder/subscribe.js.map +1 -1
- package/dist/DboBuilder/uploadFile.d.ts +3 -3
- package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
- package/dist/DboBuilder/uploadFile.js +1 -1
- package/dist/DboBuilder/uploadFile.js.map +1 -1
- package/dist/DboBuilder.d.ts +5 -5
- package/dist/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder.js +13 -16
- package/dist/DboBuilder.js.map +1 -1
- package/dist/Logging.d.ts +1 -1
- package/dist/Logging.d.ts.map +1 -1
- package/dist/PublishParser.d.ts +26 -11
- package/dist/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser.js +24 -10
- package/dist/PublishParser.js.map +1 -1
- package/dist/SyncReplication.d.ts.map +1 -1
- package/dist/SyncReplication.js.map +1 -1
- package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +1 -1
- package/lib/DboBuilder/{TableHandler.ts → TableHandler/TableHandler.ts} +27 -49
- package/lib/DboBuilder/TableHandler/insert.ts +142 -0
- package/lib/DboBuilder/TableHandler/insertTest.ts +79 -0
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +125 -0
- package/lib/DboBuilder/{update.ts → TableHandler/update.ts} +36 -59
- package/lib/DboBuilder/TableHandler/updateBatch.ts +39 -0
- package/lib/DboBuilder/ViewHandler/ColSet.ts +23 -15
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +34 -26
- package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +1 -1
- package/lib/DboBuilder/delete.ts +5 -10
- package/lib/DboBuilder/find.ts +3 -3
- package/lib/DboBuilder/getColumns.ts +1 -1
- package/lib/DboBuilder/insertDataParse.ts +7 -8
- package/lib/DboBuilder/parseUpdateRules.ts +7 -7
- package/lib/DboBuilder/subscribe.ts +1 -2
- package/lib/DboBuilder/uploadFile.ts +5 -5
- package/lib/DboBuilder.ts +31 -34
- package/lib/FileManager/initFileManager.ts +1 -1
- package/lib/Logging.ts +1 -1
- package/lib/PublishParser.ts +48 -24
- package/lib/SyncReplication.ts +3 -2
- package/package.json +4 -4
- package/tests/client/PID.txt +1 -1
- package/tests/client_only_queries.ts +3 -0
- package/tests/isomorphic_queries.ts +16 -19
- package/tests/server/DBoGenerated.d.ts +0 -56
- package/tests/server/index.ts +6 -5
- package/tests/server/package-lock.json +7 -7
- package/tsconfig.json +0 -7
- package/lib/DboBuilder/insert.ts +0 -205
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNewQuery.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getNewQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"getNewQuery.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getNewQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAiG,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE7I,OAAO,EAAE,QAAQ,EAAmC,MAAM,gBAAgB,CAAC;AA0D3E,wBAAsB,WAAW,CAC/B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAA2C,EACvD,aAAa,kBAAO,EACpB,UAAU,EAAE,SAAS,GAAG,SAAS,EACjC,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,OAAO,CAAC,QAAQ,CAAC,CAwJnB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import pgPromise from "pg-promise";
|
|
2
|
+
import { AnyObject, DeleteParams, FieldFilter, InsertParams, Select, UpdateParams } from "prostgles-types";
|
|
3
|
+
import { DboBuilder, Filter, LocalParams, TableHandlers, TableSchema } from "../../DboBuilder";
|
|
4
|
+
import { DB } from "../../Prostgles";
|
|
5
|
+
import { TableRule } from "../../PublishParser";
|
|
6
|
+
import { SelectItem } from "../QueryBuilder/QueryBuilder";
|
|
7
|
+
import { JoinPaths, ViewHandler } from "../ViewHandler/ViewHandler";
|
|
8
|
+
type ValidatedParams = {
|
|
9
|
+
row: AnyObject;
|
|
10
|
+
forcedData?: AnyObject;
|
|
11
|
+
allowedFields?: FieldFilter;
|
|
12
|
+
tableRules?: TableRule;
|
|
13
|
+
fixIssues: boolean;
|
|
14
|
+
};
|
|
15
|
+
export declare class TableHandler extends ViewHandler {
|
|
16
|
+
constructor(db: DB, tableOrViewInfo: TableSchema, dboBuilder: DboBuilder, tx?: {
|
|
17
|
+
t: pgPromise.ITask<{}>;
|
|
18
|
+
dbTX: TableHandlers;
|
|
19
|
+
}, joinPaths?: JoinPaths);
|
|
20
|
+
getFinalDBtx: (localParams: LocalParams | undefined) => TableHandlers | undefined;
|
|
21
|
+
getFinalDbo: (localParams: LocalParams | undefined) => TableHandlers;
|
|
22
|
+
parseUpdateRules: (filter: Filter, newData: AnyObject, params?: UpdateParams | undefined, tableRules?: TableRule | undefined, localParams?: LocalParams | undefined) => Promise<{
|
|
23
|
+
fields: string[];
|
|
24
|
+
validateRow?: import("../../PublishParser").ValidateRow | undefined;
|
|
25
|
+
finalUpdateFilter: AnyObject;
|
|
26
|
+
forcedData?: AnyObject | undefined;
|
|
27
|
+
forcedFilter?: AnyObject | undefined;
|
|
28
|
+
returningFields: FieldFilter;
|
|
29
|
+
filterFields?: FieldFilter | undefined;
|
|
30
|
+
}>;
|
|
31
|
+
update: (filter: Filter, _newData: AnyObject, params?: UpdateParams | undefined, tableRules?: TableRule | undefined, localParams?: LocalParams | undefined) => Promise<void | AnyObject>;
|
|
32
|
+
updateBatch: (updates: [Filter, AnyObject][], params?: UpdateParams | undefined, tableRules?: TableRule | undefined, localParams?: LocalParams | undefined) => Promise<any>;
|
|
33
|
+
validateNewData({ row, forcedData, allowedFields, tableRules, fixIssues }: ValidatedParams): {
|
|
34
|
+
data: AnyObject;
|
|
35
|
+
allowedCols: string[];
|
|
36
|
+
};
|
|
37
|
+
insert(rowOrRows: (AnyObject | AnyObject[]), param2?: InsertParams, param3_unused?: undefined, tableRules?: TableRule, _localParams?: LocalParams): Promise<any | any[] | boolean>;
|
|
38
|
+
prepareReturning: (returning: Select | undefined, allowedFields: string[]) => Promise<SelectItem[]>;
|
|
39
|
+
makeReturnQuery(items?: SelectItem[]): string;
|
|
40
|
+
delete(filter?: Filter, params?: DeleteParams, param3_unused?: undefined, table_rules?: TableRule, localParams?: LocalParams): Promise<any>;
|
|
41
|
+
remove(filter: Filter, params?: UpdateParams, param3_unused?: undefined, tableRules?: TableRule, localParams?: LocalParams): Promise<any>;
|
|
42
|
+
upsert(filter: Filter, newData: AnyObject, params?: UpdateParams, table_rules?: TableRule, localParams?: LocalParams): Promise<any>;
|
|
43
|
+
sync(filter: Filter, params: {
|
|
44
|
+
select?: FieldFilter;
|
|
45
|
+
}, param3_unused: undefined, table_rules: TableRule, localParams: LocalParams): Promise<{
|
|
46
|
+
channelName: string | undefined;
|
|
47
|
+
id_fields: string[];
|
|
48
|
+
synced_field: string;
|
|
49
|
+
}>;
|
|
50
|
+
}
|
|
51
|
+
export declare const getSelectItemQuery: (items: SelectItem[]) => string;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=TableHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableHandler.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/TableHandler.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAU,YAAY,EAAE,WAAW,EAAW,YAAY,EAAY,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtI,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAc,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAY,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAI1D,OAAO,EAAE,UAAU,EAAqB,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAMpE,KAAK,eAAe,GAAG;IACrB,GAAG,EAAE,SAAS,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAA;AAED,qBAAa,YAAa,SAAQ,WAAW;gBAE/B,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE;QAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,aAAa,CAAA;KAAC,EAAE,SAAS,CAAC,EAAE,SAAS;IASnJ,YAAY,gBAAiB,WAAW,GAAG,SAAS,+BAEnD;IACD,WAAW,gBAAiB,WAAW,GAAG,SAAS,mBAElD;IAGD,gBAAgB;;;;;;;;OAA+B;IAE/C,MAAM,mLAAqB;IAC3B,WAAW,iKAA0B;IAErC,eAAe,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAiB,EAAE,EAAE,eAAe;;;;IA2B5F,MAAM,CACV,SAAS,EAAE,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,EAC3D,aAAa,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,WAAW,GAC5E,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAIjC,gBAAgB,cAAqB,MAAM,GAAG,SAAS,iBAAiB,MAAM,EAAE,KAAG,QAAQ,UAAU,EAAE,CAAC,CAkBvG;IAED,eAAe,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE;IAK9B,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAIjJ,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW;IAIpH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IA4BnI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW;;;;;CAmGxI;AAED,eAAO,MAAM,kBAAkB,UAAW,UAAU,EAAE,WAAuE,CAAA"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSelectItemQuery = exports.TableHandler = void 0;
|
|
4
|
+
const prostgles_types_1 = require("prostgles-types");
|
|
5
|
+
const DboBuilder_1 = require("../../DboBuilder");
|
|
6
|
+
const delete_1 = require("../delete");
|
|
7
|
+
const parseUpdateRules_1 = require("../parseUpdateRules");
|
|
8
|
+
const Functions_1 = require("../QueryBuilder/Functions");
|
|
9
|
+
const QueryBuilder_1 = require("../QueryBuilder/QueryBuilder");
|
|
10
|
+
const ViewHandler_1 = require("../ViewHandler/ViewHandler");
|
|
11
|
+
const insert_1 = require("./insert");
|
|
12
|
+
const update_1 = require("./update");
|
|
13
|
+
const updateBatch_1 = require("./updateBatch");
|
|
14
|
+
class TableHandler extends ViewHandler_1.ViewHandler {
|
|
15
|
+
constructor(db, tableOrViewInfo, dboBuilder, tx, joinPaths) {
|
|
16
|
+
super(db, tableOrViewInfo, dboBuilder, tx, joinPaths);
|
|
17
|
+
this.remove = this.delete;
|
|
18
|
+
this.is_view = false;
|
|
19
|
+
this.is_media = dboBuilder.prostgles.isMedia(this.name);
|
|
20
|
+
}
|
|
21
|
+
getFinalDBtx = (localParams) => {
|
|
22
|
+
return localParams?.tx?.dbTX ?? this.tx?.dbTX;
|
|
23
|
+
};
|
|
24
|
+
getFinalDbo = (localParams) => {
|
|
25
|
+
return this.getFinalDBtx(localParams) ?? this.dboBuilder.dbo;
|
|
26
|
+
};
|
|
27
|
+
parseUpdateRules = parseUpdateRules_1.parseUpdateRules.bind(this);
|
|
28
|
+
update = update_1.update.bind(this);
|
|
29
|
+
updateBatch = updateBatch_1.updateBatch.bind(this);
|
|
30
|
+
validateNewData({ row, forcedData, allowedFields, tableRules, fixIssues = false }) {
|
|
31
|
+
const synced_field = (tableRules ?? {})?.sync?.synced_field;
|
|
32
|
+
/* Update synced_field if sync is on and missing */
|
|
33
|
+
if (synced_field && !row[synced_field]) {
|
|
34
|
+
row[synced_field] = Date.now();
|
|
35
|
+
}
|
|
36
|
+
const data = this.prepareFieldValues(row, forcedData, allowedFields, fixIssues);
|
|
37
|
+
const dataKeys = (0, prostgles_types_1.getKeys)(data);
|
|
38
|
+
dataKeys.map(col => {
|
|
39
|
+
this.dboBuilder.prostgles?.tableConfigurator?.checkColVal({ table: this.name, col, value: data[col] });
|
|
40
|
+
const colConfig = this.dboBuilder.prostgles?.tableConfigurator?.getColumnConfig(this.name, col);
|
|
41
|
+
if (colConfig && (0, prostgles_types_1.isObject)(colConfig) && "isText" in colConfig && data[col]) {
|
|
42
|
+
if (colConfig.lowerCased) {
|
|
43
|
+
data[col] = data[col].toString().toLowerCase();
|
|
44
|
+
}
|
|
45
|
+
if (colConfig.trimmed) {
|
|
46
|
+
data[col] = data[col].toString().trim();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return { data, allowedCols: this.columns.filter(c => dataKeys.includes(c.name)).map(c => c.name) };
|
|
51
|
+
}
|
|
52
|
+
async insert(rowOrRows, param2, param3_unused, tableRules, _localParams) {
|
|
53
|
+
return insert_1.insert.bind(this)(rowOrRows, param2, param3_unused, tableRules, _localParams);
|
|
54
|
+
}
|
|
55
|
+
prepareReturning = async (returning, allowedFields) => {
|
|
56
|
+
const result = [];
|
|
57
|
+
if (returning) {
|
|
58
|
+
const sBuilder = new QueryBuilder_1.SelectItemBuilder({
|
|
59
|
+
allFields: this.column_names.slice(0),
|
|
60
|
+
allowedFields,
|
|
61
|
+
allowedOrderByFields: allowedFields,
|
|
62
|
+
computedFields: Functions_1.COMPUTED_FIELDS,
|
|
63
|
+
functions: Functions_1.FUNCTIONS.filter(f => f.type === "function" && f.singleColArg),
|
|
64
|
+
isView: this.is_view,
|
|
65
|
+
columns: this.columns,
|
|
66
|
+
});
|
|
67
|
+
await sBuilder.parseUserSelect(returning);
|
|
68
|
+
return sBuilder.select;
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
};
|
|
72
|
+
makeReturnQuery(items) {
|
|
73
|
+
if (items?.length)
|
|
74
|
+
return " RETURNING " + (0, exports.getSelectItemQuery)(items);
|
|
75
|
+
return "";
|
|
76
|
+
}
|
|
77
|
+
async delete(filter, params, param3_unused, table_rules, localParams) {
|
|
78
|
+
return delete_1._delete.bind(this)(filter, params, param3_unused, table_rules, localParams);
|
|
79
|
+
}
|
|
80
|
+
remove(filter, params, param3_unused, tableRules, localParams) {
|
|
81
|
+
return this.delete(filter, params, param3_unused, tableRules, localParams);
|
|
82
|
+
}
|
|
83
|
+
async upsert(filter, newData, params, table_rules, localParams) {
|
|
84
|
+
try {
|
|
85
|
+
await this._log({ command: "upsert", localParams, data: { filter, newData, params } });
|
|
86
|
+
const _upsert = async function (tblH) {
|
|
87
|
+
return tblH.find(filter, { select: "", limit: 1 }, undefined, table_rules, localParams)
|
|
88
|
+
.then(exists => {
|
|
89
|
+
if (exists && exists.length) {
|
|
90
|
+
return tblH.update(filter, newData, params, table_rules, localParams);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
return tblH.insert({ ...newData, ...filter }, params, undefined, table_rules, localParams);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
/* Do it within a transaction to ensure consisency */
|
|
98
|
+
if (!this.tx) {
|
|
99
|
+
return this.dboBuilder.getTX(dbTX => _upsert(dbTX[this.name]));
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return _upsert(this);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
if (localParams && localParams.testRule)
|
|
107
|
+
throw e;
|
|
108
|
+
throw (0, DboBuilder_1.parseError)(e, `dbo.${this.name}.upsert()`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/* External request. Cannot sync from server */
|
|
112
|
+
async sync(filter, params, param3_unused, table_rules, localParams) {
|
|
113
|
+
try {
|
|
114
|
+
await this._log({ command: "sync", localParams, data: { filter, params } });
|
|
115
|
+
if (!localParams)
|
|
116
|
+
throw "Sync not allowed within the server code";
|
|
117
|
+
const { socket } = localParams;
|
|
118
|
+
if (!socket)
|
|
119
|
+
throw "socket missing";
|
|
120
|
+
if (!table_rules || !table_rules.sync || !table_rules.select)
|
|
121
|
+
throw "sync or select table rules missing";
|
|
122
|
+
if (this.tx)
|
|
123
|
+
throw "Sync not allowed within transactions";
|
|
124
|
+
const ALLOWED_PARAMS = ["select"];
|
|
125
|
+
const invalidParams = Object.keys(params || {}).filter(k => !ALLOWED_PARAMS.includes(k));
|
|
126
|
+
if (invalidParams.length)
|
|
127
|
+
throw "Invalid or dissallowed params found: " + invalidParams.join(", ");
|
|
128
|
+
const { synced_field, allow_delete } = table_rules.sync;
|
|
129
|
+
if (!table_rules.sync.id_fields.length || !synced_field) {
|
|
130
|
+
const err = "INTERNAL ERROR: id_fields OR synced_field missing from publish";
|
|
131
|
+
console.error(err);
|
|
132
|
+
throw err;
|
|
133
|
+
}
|
|
134
|
+
const id_fields = this.parseFieldFilter(table_rules.sync.id_fields, false);
|
|
135
|
+
const syncFields = [...id_fields, synced_field];
|
|
136
|
+
const allowedSelect = this.parseFieldFilter(table_rules?.select.fields ?? false);
|
|
137
|
+
if (syncFields.find(f => !allowedSelect.includes(f))) {
|
|
138
|
+
throw `INTERNAL ERROR: sync field missing from publish.${this.name}.select.fields`;
|
|
139
|
+
}
|
|
140
|
+
const select = this.getAllowedSelectFields(params?.select ?? "*", allowedSelect, false);
|
|
141
|
+
if (!select.length)
|
|
142
|
+
throw "Empty select not allowed";
|
|
143
|
+
/* Add sync fields if missing */
|
|
144
|
+
syncFields.map(sf => {
|
|
145
|
+
if (!select.includes(sf))
|
|
146
|
+
select.push(sf);
|
|
147
|
+
});
|
|
148
|
+
/* Step 1: parse command and params */
|
|
149
|
+
return this.find(filter, { select, limit: 0 }, undefined, table_rules, localParams)
|
|
150
|
+
.then(async (_isValid) => {
|
|
151
|
+
const { filterFields, forcedFilter } = table_rules?.select || {};
|
|
152
|
+
const condition = (await this.prepareWhere({ filter, forcedFilter, filterFields, addKeywords: false, localParams, tableRule: table_rules })).where;
|
|
153
|
+
// let final_filter = getFindFilter(filter, table_rules);
|
|
154
|
+
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
155
|
+
return pubSubManager.addSync({
|
|
156
|
+
table_info: this.tableOrViewInfo,
|
|
157
|
+
condition,
|
|
158
|
+
id_fields, synced_field,
|
|
159
|
+
allow_delete,
|
|
160
|
+
socket,
|
|
161
|
+
table_rules,
|
|
162
|
+
filter: { ...filter },
|
|
163
|
+
params: { select }
|
|
164
|
+
}).then(channelName => ({ channelName, id_fields, synced_field }));
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
catch (e) {
|
|
168
|
+
if (localParams && localParams.testRule)
|
|
169
|
+
throw e;
|
|
170
|
+
throw (0, DboBuilder_1.parseError)(e, `dbo.${this.name}.sync()`);
|
|
171
|
+
}
|
|
172
|
+
/*
|
|
173
|
+
REPLICATION
|
|
174
|
+
|
|
175
|
+
1 Sync proccess (NO DELETES ALLOWED):
|
|
176
|
+
|
|
177
|
+
Client sends:
|
|
178
|
+
"sync-request"
|
|
179
|
+
{ min_id, max_id, count, max_synced }
|
|
180
|
+
|
|
181
|
+
Server sends:
|
|
182
|
+
"sync-pull"
|
|
183
|
+
{ from_synced }
|
|
184
|
+
|
|
185
|
+
Client sends:
|
|
186
|
+
"sync-push"
|
|
187
|
+
{ data } -> WHERE synced >= from_synced
|
|
188
|
+
|
|
189
|
+
Server upserts:
|
|
190
|
+
WHERE not exists synced = synced AND id = id
|
|
191
|
+
UNTIL
|
|
192
|
+
|
|
193
|
+
Server sends
|
|
194
|
+
"sync-push"
|
|
195
|
+
{ data } -> WHERE synced >= from_synced
|
|
196
|
+
*/
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
exports.TableHandler = TableHandler;
|
|
200
|
+
const getSelectItemQuery = (items) => items.map(s => s.getQuery() + " AS " + (0, prostgles_types_1.asName)(s.alias)).join(", ");
|
|
201
|
+
exports.getSelectItemQuery = getSelectItemQuery;
|
|
202
|
+
//# sourceMappingURL=TableHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableHandler.js","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/TableHandler.ts"],"names":[],"mappings":";;;AACA,qDAAsI;AACtI,iDAA2G;AAG3G,sCAAoC;AACpC,0DAAuD;AACvD,yDAAuE;AACvE,+DAA6E;AAC7E,4DAAoE;AACpE,qCAAkC;AAClC,qCAAkC;AAClC,+CAA4C;AAW5C,MAAa,YAAa,SAAQ,yBAAW;IAE3C,YAAY,EAAM,EAAE,eAA4B,EAAE,UAAsB,EAAE,EAAkD,EAAE,SAAqB;QACjJ,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzD,CAAC;IAED,YAAY,GAAG,CAAC,WAAoC,EAAE,EAAE;QACtD,OAAO,WAAW,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;IAChD,CAAC,CAAA;IACD,WAAW,GAAG,CAAC,WAAoC,EAAE,EAAE;QACrD,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;IAC/D,CAAC,CAAA;IAGD,gBAAgB,GAAG,mCAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/C,MAAM,GAAG,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,WAAW,GAAG,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAErC,eAAe,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,GAAG,KAAK,EAAmB;QAChG,MAAM,YAAY,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC;QAE5D,mDAAmD;QACnD,IAAI,YAAY,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACtC,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;SAChC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,IAAA,yBAAO,EAAC,IAAI,CAAC,CAAC;QAE/B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvG,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,iBAAiB,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAChG,IAAI,SAAS,IAAI,IAAA,0BAAQ,EAAC,SAAS,CAAC,IAAI,QAAQ,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC1E,IAAI,SAAS,CAAC,UAAU,EAAE;oBACxB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAA;iBAC/C;gBACD,IAAI,SAAS,CAAC,OAAO,EAAE;oBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;iBACxC;aACF;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAA;IACpG,CAAC;IAED,KAAK,CAAC,MAAM,CACV,SAAoC,EAAE,MAAqB,EAC3D,aAAyB,EAAE,UAAsB,EAAE,YAA0B;QAE7E,OAAO,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;IACtF,CAAC;IAED,gBAAgB,GAAG,KAAK,EAAE,SAA6B,EAAE,aAAuB,EAAyB,EAAE;QACzG,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,SAAS,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,gCAAiB,CAAC;gBACrC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBACrC,aAAa;gBACb,oBAAoB,EAAE,aAAa;gBACnC,cAAc,EAAE,2BAAe;gBAC/B,SAAS,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC;gBACzE,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAE1C,OAAO,QAAQ,CAAC,MAAM,CAAC;SACxB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAA;IAED,eAAe,CAAC,KAAoB;QAClC,IAAI,KAAK,EAAE,MAAM;YAAE,OAAO,aAAa,GAAG,IAAA,0BAAkB,EAAC,KAAK,CAAC,CAAC;QACpE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAe,EAAE,MAAqB,EAAE,aAAyB,EAAE,WAAuB,EAAE,WAAyB;QAChI,OAAO,gBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,MAAqB,EAAE,aAAyB,EAAE,UAAsB,EAAE,WAAyB;QACxH,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,OAAkB,EAAE,MAAqB,EAAE,WAAuB,EAAE,WAAyB;QACxH,IAAI;YACF,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YACvF,MAAM,OAAO,GAAG,KAAK,WAAW,IAAkB;gBAChD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC;qBACpF,IAAI,CAAC,MAAM,CAAC,EAAE;oBACb,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;wBAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;qBACvE;yBAAM;wBACL,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;qBAC5F;gBACH,CAAC,CAAC,CAAC;YACP,CAAC,CAAA;YAED,qDAAqD;YACrD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBACZ,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAiB,CAAC,CAAC,CAAA;aAC/E;iBAAM;gBACL,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;aACtB;SAEF;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ;gBAAE,MAAM,CAAC,CAAC;YACjD,MAAM,IAAA,uBAAU,EAAC,CAAC,EAAE,OAAO,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC;SAClD;IACH,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,MAAgC,EAAE,aAAwB,EAAE,WAAsB,EAAE,WAAwB;QAErI,IAAI;YACF,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAE5E,IAAI,CAAC,WAAW;gBAAE,MAAM,yCAAyC,CAAC;YAClE,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;YAC/B,IAAI,CAAC,MAAM;gBAAE,MAAM,gBAAgB,CAAC;YAGpC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM;gBAAE,MAAM,oCAAoC,CAAC;YAEzG,IAAI,IAAI,CAAC,EAAE;gBAAE,MAAM,sCAAsC,CAAC;YAE1D,MAAM,cAAc,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,IAAI,aAAa,CAAC,MAAM;gBAAE,MAAM,uCAAuC,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAGnG,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAa,WAAW,CAAC,IAAI,CAAC;YAElE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;gBACvD,MAAM,GAAG,GAAG,gEAAgE,CAAC;gBAC7E,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,MAAM,GAAG,CAAC;aACX;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC3E,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,EAAE,YAAY,CAAC,CAAC;YAEhD,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;YACjF,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpD,MAAM,mDAAmD,IAAI,CAAC,IAAI,gBAAgB,CAAC;aACpF;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CACxC,MAAM,EAAE,MAAM,IAAI,GAAG,EACrB,aAAa,EACb,KAAK,CACN,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,MAAM,0BAA0B,CAAC;YAErD,gCAAgC;YAChC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,sCAAsC;YACtC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC;iBAChF,IAAI,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE;gBAErB,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,MAAM,IAAI,EAAE,CAAC;gBACjE,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBAEnJ,yDAAyD;gBACzD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;gBAC/D,OAAO,aAAa,CAAC,OAAO,CAAC;oBAC3B,UAAU,EAAE,IAAI,CAAC,eAAe;oBAChC,SAAS;oBACT,SAAS,EAAE,YAAY;oBACvB,YAAY;oBACZ,MAAM;oBACN,WAAW;oBACX,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;oBACrB,MAAM,EAAE,EAAE,MAAM,EAAE;iBACnB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;SAEN;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ;gBAAE,MAAM,CAAC,CAAC;YACjD,MAAM,IAAA,uBAAU,EAAC,CAAC,EAAE,OAAO,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;SAChD;QAED;;;;;;;;;;;;;;;;;;;;;;;;cAwBM;IACR,CAAC;CAEF;AA1ND,oCA0NC;AAEM,MAAM,kBAAkB,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAA,wBAAM,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAAhH,QAAA,kBAAkB,sBAA8F"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AnyObject, InsertParams } from "prostgles-types";
|
|
2
|
+
import { LocalParams } from "../../DboBuilder";
|
|
3
|
+
import { TableRule } from "../../PublishParser";
|
|
4
|
+
import { TableHandler } from "./TableHandler";
|
|
5
|
+
export declare function insert(this: TableHandler, rowOrRows?: AnyObject | AnyObject[], insertParams?: InsertParams, param3_unused?: undefined, tableRules?: TableRule, localParams?: LocalParams): Promise<any | any[] | boolean>;
|
|
6
|
+
//# sourceMappingURL=insert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/insert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,GAAE,SAAS,GAAG,SAAS,EAAO,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,CA+FnO"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.insert = void 0;
|
|
4
|
+
const prostgles_types_1 = require("prostgles-types");
|
|
5
|
+
const DboBuilder_1 = require("../../DboBuilder");
|
|
6
|
+
const insertDataParse_1 = require("../insertDataParse");
|
|
7
|
+
const insertTest_1 = require("./insertTest");
|
|
8
|
+
const runInsertUpdateQuery_1 = require("./runInsertUpdateQuery");
|
|
9
|
+
async function insert(rowOrRows = {}, insertParams, param3_unused, tableRules, localParams) {
|
|
10
|
+
const ACTION = "insert";
|
|
11
|
+
try {
|
|
12
|
+
await this._log({ command: "insert", localParams, data: { rowOrRows, param2: insertParams } });
|
|
13
|
+
const { fixIssues = false } = insertParams || {};
|
|
14
|
+
const { returnQuery = false } = localParams || {};
|
|
15
|
+
const finalDBtx = this.getFinalDBtx(localParams);
|
|
16
|
+
const rule = tableRules?.[ACTION];
|
|
17
|
+
const { postValidate, checkFilter, validate } = rule ?? {};
|
|
18
|
+
/** Post validate and checkFilter require a transaction dbo handler */
|
|
19
|
+
if (postValidate || checkFilter) {
|
|
20
|
+
if (!finalDBtx) {
|
|
21
|
+
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.[ACTION]?.(rowOrRows, insertParams, param3_unused, tableRules, localParams));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const { testOnly, fields, forcedData, returningFields } = await insertTest_1.insertTest.bind(this)({ tableRules, localParams });
|
|
25
|
+
if (testOnly) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
const { conflict_query } = validateInsertParams(insertParams);
|
|
29
|
+
/**
|
|
30
|
+
* If media it will: upload file and continue insert
|
|
31
|
+
* If nested insert it will: make separate inserts and not continue main insert
|
|
32
|
+
*/
|
|
33
|
+
const mediaOrNestedInsert = await insertDataParse_1.insertDataParse.bind(this)(rowOrRows, insertParams, param3_unused, tableRules, localParams);
|
|
34
|
+
const { data, insertResult } = mediaOrNestedInsert;
|
|
35
|
+
if ("insertResult" in mediaOrNestedInsert) {
|
|
36
|
+
return insertResult;
|
|
37
|
+
}
|
|
38
|
+
const getInsertQuery = async (_rows) => {
|
|
39
|
+
const validatedData = await Promise.all(_rows.map(async (_row) => {
|
|
40
|
+
const row = { ..._row };
|
|
41
|
+
if (!(0, prostgles_types_1.isObject)(row)) {
|
|
42
|
+
console.trace(row);
|
|
43
|
+
throw "\ninvalid insert data provided -> " + JSON.stringify(row);
|
|
44
|
+
}
|
|
45
|
+
const { data: validatedRow, allowedCols } = this.validateNewData({ row, forcedData, allowedFields: fields, tableRules, fixIssues });
|
|
46
|
+
return { validatedRow, allowedCols };
|
|
47
|
+
}));
|
|
48
|
+
const validatedRows = validatedData.map(d => d.validatedRow);
|
|
49
|
+
const allowedCols = Array.from(new Set(validatedData.flatMap(d => d.allowedCols)));
|
|
50
|
+
const dbTx = finalDBtx || this.dboBuilder.dbo;
|
|
51
|
+
const query = await this.colSet.getInsertQuery(validatedRows, allowedCols, dbTx, validate);
|
|
52
|
+
return query + conflict_query;
|
|
53
|
+
};
|
|
54
|
+
let query = "";
|
|
55
|
+
if (Array.isArray(data)) {
|
|
56
|
+
if (!data.length) {
|
|
57
|
+
throw "Empty insert. Provide data";
|
|
58
|
+
}
|
|
59
|
+
query = await getInsertQuery(data);
|
|
60
|
+
// if (returningQuery) queryType = "many";
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
query = await getInsertQuery([data ?? {}]);
|
|
64
|
+
// if (returningQuery) queryType = "one";
|
|
65
|
+
}
|
|
66
|
+
const queryWithoutUserRLS = query;
|
|
67
|
+
const queryWithRLS = (0, DboBuilder_1.withUserRLS)(localParams, query);
|
|
68
|
+
if (returnQuery)
|
|
69
|
+
return queryWithRLS;
|
|
70
|
+
if (this.dboBuilder.prostgles.opts.DEBUG_MODE) {
|
|
71
|
+
console.log(this.tx?.t.ctx?.start, "insert in " + this.name, data);
|
|
72
|
+
}
|
|
73
|
+
return (0, runInsertUpdateQuery_1.runInsertUpdateQuery)({
|
|
74
|
+
rule, localParams,
|
|
75
|
+
queryWithoutUserRLS,
|
|
76
|
+
tableHandler: this,
|
|
77
|
+
returningFields,
|
|
78
|
+
data: rowOrRows,
|
|
79
|
+
fields,
|
|
80
|
+
params: insertParams,
|
|
81
|
+
type: "insert"
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
if (localParams?.testRule)
|
|
86
|
+
throw e;
|
|
87
|
+
throw (0, DboBuilder_1.parseError)(e, `dbo.${this.name}.${ACTION}()`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.insert = insert;
|
|
91
|
+
const validateInsertParams = (params) => {
|
|
92
|
+
const { onConflictDoNothing, returnType, returning } = params ?? {};
|
|
93
|
+
let conflict_query = "";
|
|
94
|
+
if (typeof onConflictDoNothing === "boolean" && onConflictDoNothing) {
|
|
95
|
+
conflict_query = " ON CONFLICT DO NOTHING ";
|
|
96
|
+
}
|
|
97
|
+
const allowedReturnTypes = ["row", "value", "values", "statement", undefined];
|
|
98
|
+
if (!allowedReturnTypes.includes(returnType)) {
|
|
99
|
+
throw `Invalid return type ${returnType}. Expecting one of: ${allowedReturnTypes}`;
|
|
100
|
+
}
|
|
101
|
+
if (returnType && returnType !== "statement" && !returning) {
|
|
102
|
+
throw `Must specify returning when using a non statement returnType: ${returnType}`;
|
|
103
|
+
}
|
|
104
|
+
if (params) {
|
|
105
|
+
const good_paramsObj = { returning: 1, returnType: 1, fixIssues: 1, onConflictDoNothing: 1 };
|
|
106
|
+
const good_params = Object.keys(good_paramsObj);
|
|
107
|
+
const bad_params = Object.keys(params).filter(k => !good_params.includes(k));
|
|
108
|
+
if (bad_params && bad_params.length)
|
|
109
|
+
throw "Invalid params: " + bad_params.join(", ") + " \n Expecting: " + good_params.join(", ");
|
|
110
|
+
}
|
|
111
|
+
return { conflict_query };
|
|
112
|
+
};
|
|
113
|
+
// const removeBuffers = (o: any) => {
|
|
114
|
+
// if(isPlainObject(o)){
|
|
115
|
+
// return JSON.stringify(getKeys(o).reduce((a, k) => {
|
|
116
|
+
// const value = o[k]
|
|
117
|
+
// return { ...a, [k]: Buffer.isBuffer(value)? `Buffer[${value.byteLength}][...REMOVED]` : value
|
|
118
|
+
// }
|
|
119
|
+
// }, {}));
|
|
120
|
+
// }
|
|
121
|
+
// }
|
|
122
|
+
//# sourceMappingURL=insert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/insert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AnyObject, FieldFilter, FullFilter } from "prostgles-types";
|
|
2
|
+
import { LocalParams } from "../../DboBuilder";
|
|
3
|
+
import { TableRule } from "../../PublishParser";
|
|
4
|
+
import { TableHandler } from "./TableHandler";
|
|
5
|
+
type InsertTestArgs = {
|
|
6
|
+
tableRules: TableRule | undefined;
|
|
7
|
+
localParams: LocalParams | undefined;
|
|
8
|
+
};
|
|
9
|
+
export declare function insertTest(this: TableHandler, { localParams, tableRules }: InsertTestArgs): Promise<{
|
|
10
|
+
returningFields: FieldFilter | undefined;
|
|
11
|
+
fields: FieldFilter | undefined;
|
|
12
|
+
forcedData: AnyObject | undefined;
|
|
13
|
+
checkFilter: FullFilter<AnyObject, void> | undefined;
|
|
14
|
+
testOnly: boolean;
|
|
15
|
+
}>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=insertTest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insertTest.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/insertTest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAU,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAO,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;CACtC,CAAA;AACD,wBAAsB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,cAAc;;;;;;GAoE/F"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.insertTest = void 0;
|
|
4
|
+
const prostgles_types_1 = require("prostgles-types");
|
|
5
|
+
const DboBuilder_1 = require("../../DboBuilder");
|
|
6
|
+
const PubSubManager_1 = require("../../PubSubManager/PubSubManager");
|
|
7
|
+
async function insertTest({ localParams, tableRules }) {
|
|
8
|
+
const { testRule } = localParams || {};
|
|
9
|
+
const ACTION = "insert";
|
|
10
|
+
let returningFields;
|
|
11
|
+
let forcedData;
|
|
12
|
+
let fields;
|
|
13
|
+
let checkFilter;
|
|
14
|
+
let testOnly = false;
|
|
15
|
+
if (tableRules) {
|
|
16
|
+
if (!tableRules[ACTION])
|
|
17
|
+
throw `${ACTION} rules missing for ${this.name}`;
|
|
18
|
+
returningFields = tableRules[ACTION].returningFields;
|
|
19
|
+
forcedData = tableRules[ACTION].forcedData;
|
|
20
|
+
checkFilter = tableRules[ACTION].checkFilter;
|
|
21
|
+
fields = tableRules[ACTION].fields;
|
|
22
|
+
/* If no returning fields specified then take select fields as returning or the allowed insert fields */
|
|
23
|
+
if (!returningFields)
|
|
24
|
+
returningFields = tableRules?.select?.fields || tableRules?.insert.fields;
|
|
25
|
+
if (!fields)
|
|
26
|
+
throw ` invalid insert rule for ${this.name} -> fields missing `;
|
|
27
|
+
/* Safely test publish rules */
|
|
28
|
+
if (testRule) {
|
|
29
|
+
// if(this.is_media && tableRules.insert.preValidate) throw "Media table cannot have a preValidate. It already is used internally by prostgles for file upload";
|
|
30
|
+
await this.validateViewRules({ fields, returningFields, forcedFilter: forcedData, rule: "insert" });
|
|
31
|
+
if (checkFilter) {
|
|
32
|
+
try {
|
|
33
|
+
await this.find(checkFilter, { limit: 0 });
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
throw `Invalid checkFilter provided for ${this.name}. Error: ${JSON.stringify(e)}`;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (forcedData) {
|
|
40
|
+
const keys = Object.keys(forcedData);
|
|
41
|
+
if (keys.length) {
|
|
42
|
+
const dataCols = keys.filter(k => this.column_names.includes(k));
|
|
43
|
+
const nestedInsertCols = keys.filter(k => !this.column_names.includes(k) && this.dboBuilder.dbo[k]?.insert);
|
|
44
|
+
if (nestedInsertCols.length) {
|
|
45
|
+
throw `Nested insert not supported for forcedData rule: ${nestedInsertCols}`;
|
|
46
|
+
}
|
|
47
|
+
const badCols = keys.filter(k => !dataCols.includes(k) && !nestedInsertCols.includes(k));
|
|
48
|
+
if (badCols.length) {
|
|
49
|
+
throw `Invalid columns found in forced filter: ${badCols.join(", ")}`;
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const values = "(" + dataCols.map(k => (0, PubSubManager_1.asValue)(forcedData[k]) + "::" + this.columns.find(c => c.name === k).udt_name).join(", ") + ")", colNames = dataCols.map(k => (0, prostgles_types_1.asName)(k)).join(",");
|
|
53
|
+
const query = DboBuilder_1.pgp.as.format("EXPLAIN INSERT INTO " + this.escapedName + " (${colNames:raw}) SELECT * FROM ( VALUES ${values:raw} ) t WHERE FALSE;", { colNames, values });
|
|
54
|
+
await this.db.any(query);
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
throw "\nissue with forcedData: \nVALUE: " + JSON.stringify(forcedData, null, 2) + "\nERROR: " + e;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
testOnly = true;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
returningFields,
|
|
66
|
+
fields,
|
|
67
|
+
forcedData,
|
|
68
|
+
checkFilter,
|
|
69
|
+
testOnly
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
exports.insertTest = insertTest;
|
|
73
|
+
//# sourceMappingURL=insertTest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insertTest.js","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/insertTest.ts"],"names":[],"mappings":";;;AAAA,qDAA6E;AAC7E,iDAAoD;AAEpD,qEAA4D;AAOrD,KAAK,UAAU,UAAU,CAAqB,EAAE,WAAW,EAAE,UAAU,EAAkB;IAC9F,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,IAAI,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAG,QAAQ,CAAC;IAExB,IAAI,eAAwC,CAAC;IAC7C,IAAI,UAAiC,CAAC;IACtC,IAAI,MAA+B,CAAC;IACpC,IAAI,WAAoD,CAAC;IACzD,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,UAAU,EAAE;QACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,MAAM,GAAG,MAAM,sBAAsB,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1E,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC;QACrD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;QAC3C,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC;QAC7C,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAEnC,wGAAwG;QACxG,IAAI,CAAC,eAAe;YAAE,eAAe,GAAG,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;QAEhG,IAAI,CAAC,MAAM;YAAE,MAAM,4BAA4B,IAAI,CAAC,IAAI,qBAAqB,CAAC;QAE9E,+BAA+B;QAC/B,IAAI,QAAQ,EAAE;YACZ,gKAAgK;YAChK,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpG,IAAG,WAAW,EAAC;gBACb,IAAI;oBACF,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC5C;gBAAC,OAAO,CAAC,EAAC;oBACT,MAAM,oCAAoC,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;iBACnF;aACF;YACD,IAAI,UAAU,EAAE;gBACd,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrC,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjE,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC5G,IAAG,gBAAgB,CAAC,MAAM,EAAC;wBACzB,MAAM,oDAAoD,gBAAgB,EAAE,CAAC;qBAC9E;oBACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzF,IAAG,OAAO,CAAC,MAAM,EAAC;wBAChB,MAAM,2CAA2C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;qBACvE;oBACD,IAAI;wBACF,MAAM,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,uBAAO,EAAC,UAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EACtI,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,wBAAM,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACpD,MAAM,KAAK,GAAG,gBAAG,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,GAAG,0EAA0E,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;wBACzK,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;qBAC1B;oBAAC,OAAO,CAAC,EAAE;wBACV,MAAM,oCAAoC,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC;qBACpG;iBACF;aACF;YAED,QAAQ,GAAG,IAAI,CAAC;SACjB;KACF;IAED,OAAO;QACL,eAAe;QACf,MAAM;QACN,UAAU;QACV,WAAW;QACX,QAAQ;KACT,CAAA;AACH,CAAC;AApED,gCAoEC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AnyObject, FieldFilter, InsertParams, UpdateParams } from "prostgles-types";
|
|
2
|
+
import { LocalParams } from "../../DboBuilder";
|
|
3
|
+
import { InsertRule, UpdateRule } from "../../PublishParser";
|
|
4
|
+
import { TableHandler } from "./TableHandler";
|
|
5
|
+
type RunInsertUpdateQueryArgs = {
|
|
6
|
+
tableHandler: TableHandler;
|
|
7
|
+
queryWithoutUserRLS: string;
|
|
8
|
+
localParams: LocalParams | undefined;
|
|
9
|
+
fields: FieldFilter | undefined;
|
|
10
|
+
returningFields: FieldFilter | undefined;
|
|
11
|
+
} & ({
|
|
12
|
+
type: "insert";
|
|
13
|
+
params: InsertParams | undefined;
|
|
14
|
+
rule: InsertRule | undefined;
|
|
15
|
+
data: AnyObject | AnyObject[];
|
|
16
|
+
} | {
|
|
17
|
+
type: "update";
|
|
18
|
+
params: UpdateParams | undefined;
|
|
19
|
+
rule: UpdateRule | undefined;
|
|
20
|
+
data: undefined;
|
|
21
|
+
});
|
|
22
|
+
export declare const runInsertUpdateQuery: ({ tableHandler, queryWithoutUserRLS, rule, localParams, fields, returningFields, params, data, type }: RunInsertUpdateQueryArgs) => Promise<AnyObject | AnyObject[] | undefined>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=runInsertUpdateQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runInsertUpdateQuery.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAU,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAqC,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAElE,KAAK,wBAAwB,GAAG;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC,eAAe,EAAE,WAAW,GAAG,SAAS,CAAC;CAC1C,GAAG,CAAC;IACH,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;IAChC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;CAC/B,GAAG;IACF,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;IAChC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC,CAAC;AAEH,eAAO,MAAM,oBAAoB,0GAAiH,wBAAwB,iDAoGzK,CAAA"}
|