prostgles-server 4.0.57 → 4.0.59
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/dist/DboBuilder/getColumns.d.ts.map +1 -1
- package/dist/DboBuilder/getColumns.js +1 -13
- package/dist/DboBuilder/getColumns.js.map +1 -1
- package/dist/DboBuilder/runSQL.js +2 -2
- package/dist/DboBuilder/runSQL.js.map +1 -1
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/PubSubManager/PubSubManager.d.ts +1 -1
- package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/PubSubManager.js +14 -1
- package/dist/PubSubManager/PubSubManager.js.map +1 -1
- package/lib/DboBuilder/getColumns.ts +1 -18
- package/lib/DboBuilder/runSQL.ts +2 -2
- package/lib/Prostgles.ts +3 -3
- package/lib/PubSubManager/PubSubManager.ts +14 -1
- package/package.json +2 -2
- package/tests/client/PID.txt +1 -1
- package/tests/client/package.json +2 -2
- package/tests/client/tsconfig.json +2 -1
- package/tests/isomorphic_queries.ts +11 -9
- package/tests/server/DBoGenerated.d.ts +1 -1
- package/tests/server/dboTypeCheck.ts +3 -3
- package/tests/server/index.ts +7 -6
- package/tests/server/package-lock.json +1 -1
- package/tests/server/package.json +3 -3
- package/tests/server/publishTypeCheck.ts +1 -1
- package/tests/server/tsconfig.json +3 -2
- package/tests/test.sh +2 -0
- package/dist/FileManager.d.ts +0 -143
- package/dist/FileManager.d.ts.map +0 -1
- package/dist/FileManager.js +0 -646
- package/dist/FileManager.js.map +0 -1
- package/dist/TableConfig.d.ts +0 -267
- package/dist/TableConfig.d.ts.map +0 -1
- package/dist/TableConfig.js +0 -463
- package/dist/TableConfig.js.map +0 -1
- package/dist/validation.d.ts +0 -126
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js +0 -405
- package/dist/validation.js.map +0 -1
- package/lib/AuthHandler.d.ts +0 -187
- package/lib/AuthHandler.d.ts.map +0 -1
- package/lib/AuthHandler.js +0 -478
- package/lib/DBEventsManager.d.ts +0 -38
- package/lib/DBEventsManager.d.ts.map +0 -1
- package/lib/DBEventsManager.js +0 -140
- package/lib/DBSchemaBuilder.d.ts +0 -13
- package/lib/DBSchemaBuilder.d.ts.map +0 -1
- package/lib/DBSchemaBuilder.js +0 -145
- package/lib/DboBuilder/QueryBuilder/Functions.d.ts +0 -64
- package/lib/DboBuilder/QueryBuilder/Functions.d.ts.map +0 -1
- package/lib/DboBuilder/QueryBuilder/Functions.js +0 -984
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.d.ts +0 -73
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +0 -1
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.js +0 -335
- package/lib/DboBuilder/QueryBuilder/makeSelectQuery.d.ts +0 -8
- package/lib/DboBuilder/QueryBuilder/makeSelectQuery.d.ts.map +0 -1
- package/lib/DboBuilder/QueryBuilder/makeSelectQuery.js +0 -227
- package/lib/DboBuilder/TableHandler.d.ts +0 -37
- package/lib/DboBuilder/TableHandler.d.ts.map +0 -1
- package/lib/DboBuilder/TableHandler.js +0 -213
- package/lib/DboBuilder/ViewHandler.d.ts +0 -119
- package/lib/DboBuilder/ViewHandler.d.ts.map +0 -1
- package/lib/DboBuilder/ViewHandler.js +0 -1023
- package/lib/DboBuilder/delete.d.ts +0 -6
- package/lib/DboBuilder/delete.d.ts.map +0 -1
- package/lib/DboBuilder/delete.js +0 -128
- package/lib/DboBuilder/find.d.ts +0 -8
- package/lib/DboBuilder/find.d.ts.map +0 -1
- package/lib/DboBuilder/find.js +0 -91
- package/lib/DboBuilder/getColumns.d.ts +0 -12
- package/lib/DboBuilder/getColumns.d.ts.map +0 -1
- package/lib/DboBuilder/getColumns.js +0 -92
- package/lib/DboBuilder/getCondition.d.ts +0 -22
- package/lib/DboBuilder/getCondition.d.ts.map +0 -1
- package/lib/DboBuilder/getCondition.js +0 -236
- package/lib/DboBuilder/getSubscribeRelatedTables.d.ts +0 -20
- package/lib/DboBuilder/getSubscribeRelatedTables.d.ts.map +0 -1
- package/lib/DboBuilder/getSubscribeRelatedTables.js +0 -152
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.d.ts +0 -3
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +0 -1
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.js +0 -207
- package/lib/DboBuilder/insert.d.ts +0 -6
- package/lib/DboBuilder/insert.d.ts.map +0 -1
- package/lib/DboBuilder/insert.js +0 -180
- package/lib/DboBuilder/insertDataParse.d.ts +0 -12
- package/lib/DboBuilder/insertDataParse.d.ts.map +0 -1
- package/lib/DboBuilder/insertDataParse.js +0 -253
- package/lib/DboBuilder/parseUpdateRules.d.ts +0 -18
- package/lib/DboBuilder/parseUpdateRules.d.ts.map +0 -1
- package/lib/DboBuilder/parseUpdateRules.js +0 -123
- package/lib/DboBuilder/runSQL.d.ts +0 -7
- package/lib/DboBuilder/runSQL.d.ts.map +0 -1
- package/lib/DboBuilder/runSQL.js +0 -135
- package/lib/DboBuilder/subscribe.d.ts +0 -20
- package/lib/DboBuilder/subscribe.d.ts.map +0 -1
- package/lib/DboBuilder/subscribe.js +0 -90
- package/lib/DboBuilder/update.d.ts +0 -6
- package/lib/DboBuilder/update.d.ts.map +0 -1
- package/lib/DboBuilder/update.js +0 -151
- package/lib/DboBuilder/uploadFile.d.ts +0 -7
- package/lib/DboBuilder/uploadFile.d.ts.map +0 -1
- package/lib/DboBuilder/uploadFile.js +0 -53
- package/lib/DboBuilder.d.ts +0 -306
- package/lib/DboBuilder.d.ts.map +0 -1
- package/lib/DboBuilder.js +0 -745
- package/lib/Event_Trigger_Tags.d.ts +0 -4
- package/lib/Event_Trigger_Tags.d.ts.map +0 -1
- package/lib/Event_Trigger_Tags.js +0 -116
- package/lib/FileManager/FileManager.d.ts +0 -135
- package/lib/FileManager/FileManager.d.ts.map +0 -1
- package/lib/FileManager/FileManager.js +0 -303
- package/lib/FileManager/initFileManager.d.ts +0 -4
- package/lib/FileManager/initFileManager.d.ts.map +0 -1
- package/lib/FileManager/initFileManager.js +0 -231
- package/lib/FileManager/parseFile.d.ts +0 -15
- package/lib/FileManager/parseFile.d.ts.map +0 -1
- package/lib/FileManager/parseFile.js +0 -58
- package/lib/FileManager/upload.d.ts +0 -6
- package/lib/FileManager/upload.d.ts.map +0 -1
- package/lib/FileManager/upload.js +0 -98
- package/lib/FileManager/uploadStream.d.ts +0 -5
- package/lib/FileManager/uploadStream.d.ts.map +0 -1
- package/lib/FileManager/uploadStream.js +0 -92
- package/lib/Filtering.d.ts +0 -15
- package/lib/Filtering.d.ts.map +0 -1
- package/lib/Filtering.js +0 -336
- package/lib/JSONBValidation/validate_jsonb_schema_sql.d.ts +0 -4
- package/lib/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +0 -1
- package/lib/JSONBValidation/validate_jsonb_schema_sql.js +0 -500
- package/lib/JSONBValidation/validation.d.ts +0 -9
- package/lib/JSONBValidation/validation.d.ts.map +0 -1
- package/lib/JSONBValidation/validation.js +0 -131
- package/lib/PostgresNotifListenManager.d.ts +0 -28
- package/lib/PostgresNotifListenManager.d.ts.map +0 -1
- package/lib/PostgresNotifListenManager.js +0 -134
- package/lib/Prostgles.d.ts +0 -289
- package/lib/Prostgles.d.ts.map +0 -1
- package/lib/Prostgles.js +0 -685
- package/lib/PubSubManager/PubSubManager.d.ts +0 -175
- package/lib/PubSubManager/PubSubManager.d.ts.map +0 -1
- package/lib/PubSubManager/PubSubManager.js +0 -452
- package/lib/PubSubManager/addSub.d.ts +0 -8
- package/lib/PubSubManager/addSub.d.ts.map +0 -1
- package/lib/PubSubManager/addSub.js +0 -166
- package/lib/PubSubManager/addSync.d.ts +0 -8
- package/lib/PubSubManager/addSync.d.ts.map +0 -1
- package/lib/PubSubManager/addSync.js +0 -109
- package/lib/PubSubManager/getInitQuery.d.ts +0 -9
- package/lib/PubSubManager/getInitQuery.d.ts.map +0 -1
- package/lib/PubSubManager/getInitQuery.js +0 -552
- package/lib/PubSubManager/initPubSubManager.d.ts +0 -3
- package/lib/PubSubManager/initPubSubManager.d.ts.map +0 -1
- package/lib/PubSubManager/initPubSubManager.js +0 -116
- package/lib/PubSubManager/notifListener.d.ts +0 -5
- package/lib/PubSubManager/notifListener.d.ts.map +0 -1
- package/lib/PubSubManager/notifListener.js +0 -100
- package/lib/PubSubManager/pushSubData.d.ts +0 -3
- package/lib/PubSubManager/pushSubData.d.ts.map +0 -1
- package/lib/PubSubManager/pushSubData.js +0 -51
- package/lib/PublishParser.d.ts +0 -284
- package/lib/PublishParser.d.ts.map +0 -1
- package/lib/PublishParser.js +0 -421
- package/lib/SchemaWatch.d.ts +0 -13
- package/lib/SchemaWatch.d.ts.map +0 -1
- package/lib/SchemaWatch.js +0 -35
- package/lib/SyncReplication.d.ts +0 -34
- package/lib/SyncReplication.d.ts.map +0 -1
- package/lib/SyncReplication.js +0 -412
- package/lib/TableConfig/TableConfig.d.ts +0 -284
- package/lib/TableConfig/TableConfig.d.ts.map +0 -1
- package/lib/TableConfig/TableConfig.js +0 -437
- package/lib/TableConfig/getColumnDefinitionQuery.d.ts +0 -27
- package/lib/TableConfig/getColumnDefinitionQuery.d.ts.map +0 -1
- package/lib/TableConfig/getColumnDefinitionQuery.js +0 -87
- package/lib/TableConfig/getConstraintDefinitionQueries.d.ts +0 -34
- package/lib/TableConfig/getConstraintDefinitionQueries.d.ts.map +0 -1
- package/lib/TableConfig/getConstraintDefinitionQueries.js +0 -65
- package/lib/TableConfig/getFutureTableSchema.d.ts +0 -15
- package/lib/TableConfig/getFutureTableSchema.d.ts.map +0 -1
- package/lib/TableConfig/getFutureTableSchema.js +0 -43
- package/lib/TableConfig/getTableColumnQueries.d.ts +0 -16
- package/lib/TableConfig/getTableColumnQueries.d.ts.map +0 -1
- package/lib/TableConfig/getTableColumnQueries.js +0 -107
- package/lib/index.d.ts +0 -5
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -7
- package/lib/shortestPath.d.ts +0 -10
- package/lib/shortestPath.d.ts.map +0 -1
- package/lib/shortestPath.js +0 -111
- package/lib/utils.d.ts +0 -3
- package/lib/utils.d.ts.map +0 -1
- package/lib/utils.js +0 -12
- package/tests/client/index.d.ts +0 -2
- package/tests/client/index.d.ts.map +0 -1
- package/tests/client/index.js +0 -80
- package/tests/client/index.js.map +0 -1
- package/tests/client_only_queries.d.ts +0 -4
- package/tests/client_only_queries.d.ts.map +0 -1
- package/tests/client_only_queries.js +0 -282
- package/tests/config_test/DBoGenerated.d.ts +0 -388
- package/tests/config_test/index.js +0 -174
- package/tests/config_test/index.js.map +0 -1
- package/tests/isomorphic_queries.d.ts +0 -9
- package/tests/isomorphic_queries.d.ts.map +0 -1
- package/tests/isomorphic_queries.js +0 -773
- package/tests/manual_test/DBoGenerated.d.ts +0 -398
- package/tests/manual_test/index.d.ts +0 -2
- package/tests/manual_test/index.d.ts.map +0 -1
- package/tests/manual_test/index.js +0 -65
- package/tests/server/dboTypeCheck.d.ts +0 -2
- package/tests/server/dboTypeCheck.d.ts.map +0 -1
- package/tests/server/dboTypeCheck.js +0 -27
- package/tests/server/index.d.ts +0 -2
- package/tests/server/index.d.ts.map +0 -1
- package/tests/server/index.js +0 -507
- package/tests/server/publishTypeCheck.d.ts +0 -2
- package/tests/server/publishTypeCheck.d.ts.map +0 -1
- package/tests/server/publishTypeCheck.js +0 -130
- package/tests/server_only_queries.d.ts +0 -2
- package/tests/server_only_queries.d.ts.map +0 -1
- package/tests/server_only_queries.js +0 -19
package/dist/TableConfig.js
DELETED
|
@@ -1,463 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CONSTRAINT_TYPES = exports.parseI18N = void 0;
|
|
4
|
-
const prostgles_types_1 = require("prostgles-types");
|
|
5
|
-
const DboBuilder_1 = require("./DboBuilder");
|
|
6
|
-
const PubSubManager_1 = require("./PubSubManager/PubSubManager");
|
|
7
|
-
const validate_jsonb_schema_sql_1 = require("./JSONBValidation/validate_jsonb_schema_sql");
|
|
8
|
-
const parseI18N = (params) => {
|
|
9
|
-
const { config, lang, defaultLang, defaultValue } = params;
|
|
10
|
-
if (config) {
|
|
11
|
-
if ((0, DboBuilder_1.isPlainObject)(config)) {
|
|
12
|
-
//@ts-ignore
|
|
13
|
-
return config[lang] ?? config[defaultLang];
|
|
14
|
-
}
|
|
15
|
-
else if (typeof config === "string") {
|
|
16
|
-
return config;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return defaultValue;
|
|
20
|
-
};
|
|
21
|
-
exports.parseI18N = parseI18N;
|
|
22
|
-
exports.CONSTRAINT_TYPES = ["PRIMARY KEY", "UNIQUE", "CHECK"]; // "FOREIGN KEY",
|
|
23
|
-
/**
|
|
24
|
-
* Will be run between initSQL and fileTable
|
|
25
|
-
*/
|
|
26
|
-
class TableConfigurator {
|
|
27
|
-
get dbo() {
|
|
28
|
-
if (!this.prostgles.dbo)
|
|
29
|
-
throw "this.prostgles.dbo missing";
|
|
30
|
-
return this.prostgles.dbo;
|
|
31
|
-
}
|
|
32
|
-
get db() {
|
|
33
|
-
if (!this.prostgles.db)
|
|
34
|
-
throw "this.prostgles.db missing";
|
|
35
|
-
return this.prostgles.db;
|
|
36
|
-
}
|
|
37
|
-
constructor(prostgles) {
|
|
38
|
-
this.getColumnConfig = (tableName, colName) => {
|
|
39
|
-
const tconf = this.config?.[tableName];
|
|
40
|
-
if (tconf && "columns" in tconf) {
|
|
41
|
-
return tconf.columns?.[colName];
|
|
42
|
-
}
|
|
43
|
-
return undefined;
|
|
44
|
-
};
|
|
45
|
-
this.getTableInfo = (params) => {
|
|
46
|
-
const tconf = this.config?.[params.tableName];
|
|
47
|
-
return {
|
|
48
|
-
label: (0, exports.parseI18N)({ config: tconf?.info?.label, lang: params.lang, defaultLang: "en", defaultValue: params.tableName })
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
this.getColInfo = (params) => {
|
|
52
|
-
const colConf = this.getColumnConfig(params.table, params.col);
|
|
53
|
-
let result = undefined;
|
|
54
|
-
if (colConf) {
|
|
55
|
-
if ((0, prostgles_types_1.isObject)(colConf)) {
|
|
56
|
-
const { jsonbSchema, jsonbSchemaType, info } = colConf;
|
|
57
|
-
result = {
|
|
58
|
-
...(result ?? {}),
|
|
59
|
-
...info,
|
|
60
|
-
...((jsonbSchema || jsonbSchemaType) && { jsonbSchema: { nullable: colConf.nullable, ...(jsonbSchema || { type: jsonbSchemaType }) } })
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* Get labels from TableConfig if specified
|
|
64
|
-
*/
|
|
65
|
-
if (colConf.label) {
|
|
66
|
-
const { lang } = params;
|
|
67
|
-
const lbl = colConf?.label;
|
|
68
|
-
if (["string", "object"].includes(typeof lbl)) {
|
|
69
|
-
if (typeof lbl === "string") {
|
|
70
|
-
result ?? (result = {});
|
|
71
|
-
result.label = lbl;
|
|
72
|
-
}
|
|
73
|
-
else if (lang && (lbl?.[lang] || lbl?.en)) {
|
|
74
|
-
result ?? (result = {});
|
|
75
|
-
result.label = (lbl?.[lang]) || lbl?.en;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
return result;
|
|
82
|
-
};
|
|
83
|
-
this.checkColVal = (params) => {
|
|
84
|
-
const conf = this.getColInfo(params);
|
|
85
|
-
if (conf) {
|
|
86
|
-
const { value } = params;
|
|
87
|
-
const { min, max } = conf;
|
|
88
|
-
if (min !== undefined && value !== undefined && value < min)
|
|
89
|
-
throw `${params.col} must be less than ${min}`;
|
|
90
|
-
if (max !== undefined && value !== undefined && value > max)
|
|
91
|
-
throw `${params.col} must be greater than ${max}`;
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
this.getJoinInfo = (sourceTable, targetTable) => {
|
|
95
|
-
if (this.config &&
|
|
96
|
-
sourceTable in this.config &&
|
|
97
|
-
this.config[sourceTable] &&
|
|
98
|
-
"columns" in this.config[sourceTable]) {
|
|
99
|
-
const td = this.config[sourceTable];
|
|
100
|
-
if ("columns" in td && td.columns?.[targetTable]) {
|
|
101
|
-
const cd = td.columns[targetTable];
|
|
102
|
-
if ((0, prostgles_types_1.isObject)(cd) && "joinDef" in cd) {
|
|
103
|
-
if (!cd.joinDef)
|
|
104
|
-
throw "cd.joinDef missing";
|
|
105
|
-
const { joinDef } = cd;
|
|
106
|
-
const res = {
|
|
107
|
-
expectOne: false,
|
|
108
|
-
paths: joinDef.map(({ sourceTable, targetTable: table, on }) => ({
|
|
109
|
-
source: sourceTable,
|
|
110
|
-
target: targetTable,
|
|
111
|
-
table,
|
|
112
|
-
on
|
|
113
|
-
})),
|
|
114
|
-
};
|
|
115
|
-
return res;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return undefined;
|
|
120
|
-
};
|
|
121
|
-
this.log = (...args) => {
|
|
122
|
-
if (this.prostgles.opts.DEBUG_MODE) {
|
|
123
|
-
console.log("TableConfig: \n", ...args);
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
this.config = prostgles.opts.tableConfig;
|
|
127
|
-
this.prostgles = prostgles;
|
|
128
|
-
}
|
|
129
|
-
async init() {
|
|
130
|
-
let queries = [];
|
|
131
|
-
if (!this.config || !this.prostgles.pgp)
|
|
132
|
-
throw "config or pgp missing";
|
|
133
|
-
const MAX_IDENTIFIER_LENGTH = +(await this.db.one("SHOW max_identifier_length;")).max_identifier_length;
|
|
134
|
-
if (!Number.isFinite(MAX_IDENTIFIER_LENGTH))
|
|
135
|
-
throw `Could not obtain a valid max_identifier_length`;
|
|
136
|
-
const asName = (v) => {
|
|
137
|
-
if (v.length > MAX_IDENTIFIER_LENGTH - 1) {
|
|
138
|
-
throw `The identifier name provided (${v}) is longer than the allowed limit (max_identifier_length - 1 = ${MAX_IDENTIFIER_LENGTH - 1} characters )\n Longest allowed: ${(0, prostgles_types_1.asName)(v.slice(0, MAX_IDENTIFIER_LENGTH - 1))} `;
|
|
139
|
-
}
|
|
140
|
-
return (0, prostgles_types_1.asName)(v);
|
|
141
|
-
};
|
|
142
|
-
/* Create lookup tables */
|
|
143
|
-
(0, prostgles_types_1.getKeys)(this.config).map(async (tableNameRaw) => {
|
|
144
|
-
const tableName = asName(tableNameRaw);
|
|
145
|
-
const tableConf = this.config[tableNameRaw];
|
|
146
|
-
const { dropIfExists = false, dropIfExistsCascade = false } = tableConf;
|
|
147
|
-
const isDropped = dropIfExists || dropIfExistsCascade;
|
|
148
|
-
if (dropIfExistsCascade) {
|
|
149
|
-
queries.push(`DROP TABLE IF EXISTS ${tableName} CASCADE;`);
|
|
150
|
-
}
|
|
151
|
-
else if (dropIfExists) {
|
|
152
|
-
queries.push(`DROP TABLE IF EXISTS ${tableName} ;`);
|
|
153
|
-
}
|
|
154
|
-
if ("isLookupTable" in tableConf && Object.keys(tableConf.isLookupTable?.values).length) {
|
|
155
|
-
const rows = Object.keys(tableConf.isLookupTable?.values).map(id => ({ id, ...(tableConf.isLookupTable?.values[id]) }));
|
|
156
|
-
if (isDropped || !this.dbo?.[tableNameRaw]) {
|
|
157
|
-
const columnNames = Object.keys(rows[0]).filter(k => k !== "id");
|
|
158
|
-
queries.push(`CREATE TABLE IF NOT EXISTS ${tableName} (
|
|
159
|
-
id TEXT PRIMARY KEY
|
|
160
|
-
${columnNames.length ? (", " + columnNames.map(k => asName(k) + " TEXT ").join(", ")) : ""}
|
|
161
|
-
);`);
|
|
162
|
-
rows.map(row => {
|
|
163
|
-
const values = this.prostgles.pgp.helpers.values(row);
|
|
164
|
-
queries.push(this.prostgles.pgp.as.format(`INSERT INTO ${tableName} (${["id", ...columnNames].map(t => asName(t)).join(", ")}) ` + " VALUES ${values:raw} ;", { values }));
|
|
165
|
-
});
|
|
166
|
-
// this.log("Created lookup table " + tableName)
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
if (queries.length) {
|
|
171
|
-
const q = queries.join("\n");
|
|
172
|
-
if (this.prostgles.opts.DEBUG_MODE) {
|
|
173
|
-
this.log("TableConfig: \n", q);
|
|
174
|
-
}
|
|
175
|
-
await this.db.multi(q);
|
|
176
|
-
await this.prostgles.refreshDBO();
|
|
177
|
-
}
|
|
178
|
-
queries = [];
|
|
179
|
-
/* Create columns */
|
|
180
|
-
await Promise.all((0, prostgles_types_1.getKeys)(this.config).map(async (tableName) => {
|
|
181
|
-
const tableConf = this.config[tableName];
|
|
182
|
-
if ("columns" in tableConf) {
|
|
183
|
-
const getColDef = async (name, colConf) => {
|
|
184
|
-
const colNameEsc = asName(name);
|
|
185
|
-
const getColTypeDef = (colConf, pgType) => {
|
|
186
|
-
const { nullable, defaultValue } = colConf;
|
|
187
|
-
return `${pgType} ${!nullable ? " NOT NULL " : ""} ${defaultValue ? ` DEFAULT ${(0, PubSubManager_1.asValue)(defaultValue)} ` : ""}`;
|
|
188
|
-
};
|
|
189
|
-
const jsonbSchema = (0, prostgles_types_1.isObject)(colConf) ? (("jsonbSchema" in colConf && colConf.jsonbSchema) ? { jsonbSchema: colConf.jsonbSchema, jsonbSchemaType: undefined } :
|
|
190
|
-
("jsonbSchemaType" in colConf && colConf.jsonbSchemaType) ? { jsonbSchema: undefined, jsonbSchemaType: colConf.jsonbSchemaType } :
|
|
191
|
-
undefined) :
|
|
192
|
-
undefined;
|
|
193
|
-
if ((0, prostgles_types_1.isObject)(colConf) && "references" in colConf && colConf.references) {
|
|
194
|
-
const { tableName: lookupTable, columnName: lookupCol = "id" } = colConf.references;
|
|
195
|
-
return ` ${colNameEsc} ${getColTypeDef(colConf.references, "TEXT")} REFERENCES ${lookupTable} (${lookupCol}) `;
|
|
196
|
-
}
|
|
197
|
-
else if (typeof colConf === "string" || "sqlDefinition" in colConf && colConf.sqlDefinition) {
|
|
198
|
-
return ` ${colNameEsc} ${typeof colConf === "string" ? colConf : colConf.sqlDefinition} `;
|
|
199
|
-
}
|
|
200
|
-
else if ((0, prostgles_types_1.isObject)(colConf) && "isText" in colConf && colConf.isText) {
|
|
201
|
-
let checks = "";
|
|
202
|
-
const cArr = [];
|
|
203
|
-
if (colConf.lowerCased) {
|
|
204
|
-
cArr.push(`${colNameEsc} = LOWER(${colNameEsc})`);
|
|
205
|
-
}
|
|
206
|
-
if (colConf.trimmed) {
|
|
207
|
-
cArr.push(`${colNameEsc} = BTRIM(${colNameEsc})`);
|
|
208
|
-
}
|
|
209
|
-
if (cArr.length) {
|
|
210
|
-
checks = `CHECK (${cArr.join(" AND ")})`;
|
|
211
|
-
}
|
|
212
|
-
return ` ${colNameEsc} ${getColTypeDef(colConf, "TEXT")} ${checks}`;
|
|
213
|
-
}
|
|
214
|
-
else if (jsonbSchema) {
|
|
215
|
-
const jsonbSchemaStr = (0, PubSubManager_1.asValue)({
|
|
216
|
-
...(0, prostgles_types_1.pickKeys)(colConf, ["enum", "nullable", "info"]),
|
|
217
|
-
...(jsonbSchema.jsonbSchemaType ? { type: jsonbSchema.jsonbSchemaType } : jsonbSchema.jsonbSchema)
|
|
218
|
-
}) + "::TEXT";
|
|
219
|
-
/** Validate default value against jsonbSchema */
|
|
220
|
-
const q = `SELECT ${validate_jsonb_schema_sql_1.VALIDATE_SCHEMA_FUNCNAME}(${jsonbSchemaStr}, ${(0, PubSubManager_1.asValue)(colConf.defaultValue) + "::JSONB"}, ARRAY[${(0, PubSubManager_1.asValue)(name)}]) as v`;
|
|
221
|
-
if (colConf.defaultValue) {
|
|
222
|
-
const failedDefault = (err) => {
|
|
223
|
-
return { msg: `Default value (${colConf.defaultValue}) for ${tableName}.${name} does not satisfy the jsonb constraint check: ${q}`, err };
|
|
224
|
-
};
|
|
225
|
-
try {
|
|
226
|
-
const row = await this.dbo.sql(q, {}, { returnType: "row" });
|
|
227
|
-
if (!row?.v) {
|
|
228
|
-
throw "Error";
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
catch (e) {
|
|
232
|
-
throw failedDefault(e);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
const namePreffix = 'prostgles_jsonb_';
|
|
236
|
-
const { val: nameEnding } = await this.db.one("SELECT MD5( ${table} || ${column} || ${schema}) as val", { table: tableName, column: name, schema: jsonbSchemaStr });
|
|
237
|
-
const constraintName = namePreffix + nameEnding;
|
|
238
|
-
const colConstraints = await this.db.manyOrNone(`
|
|
239
|
-
SELECT *
|
|
240
|
-
FROM (
|
|
241
|
-
SELECT distinct c.conname as name,
|
|
242
|
-
(SELECT r.relname from pg_class r where r.oid = c.conrelid) as "table",
|
|
243
|
-
(SELECT array_agg(attname::text) from pg_attribute
|
|
244
|
-
where attrelid = c.conrelid and ARRAY[attnum] <@ c.conkey) as cols
|
|
245
|
-
-- (SELECT array_agg(attname::text) from pg_attribute
|
|
246
|
-
-- where attrelid = c.confrelid and ARRAY[attnum] <@ c.confkey) as fcols,
|
|
247
|
-
-- (SELECT r.relname from pg_class r where r.oid = c.confrelid) as ftable
|
|
248
|
-
FROM pg_catalog.pg_constraint c
|
|
249
|
-
INNER JOIN pg_catalog.pg_class rel
|
|
250
|
-
ON rel.oid = c.conrelid
|
|
251
|
-
INNER JOIN pg_catalog.pg_namespace nsp
|
|
252
|
-
ON nsp.oid = connamespace
|
|
253
|
-
) t
|
|
254
|
-
WHERE TRUE
|
|
255
|
-
AND "table" = ${(0, PubSubManager_1.asValue)(tableName)} AND cols @> ARRAY[${(0, PubSubManager_1.asValue)(name)}]
|
|
256
|
-
`);
|
|
257
|
-
const existingNonMatchingConstraints = colConstraints.filter(c => c.name.startsWith(namePreffix) && c.name !== constraintName);
|
|
258
|
-
for await (const oldCons of existingNonMatchingConstraints) {
|
|
259
|
-
await this.db.any(`ALTER TABLE ${asName(tableName)} DROP CONSTRAINT ${asName(oldCons.name)}`);
|
|
260
|
-
}
|
|
261
|
-
return ` ${colNameEsc} ${getColTypeDef(colConf, "JSONB")}, CONSTRAINT ${asName(constraintName)} CHECK(${validate_jsonb_schema_sql_1.VALIDATE_SCHEMA_FUNCNAME}(${jsonbSchemaStr}, ${colNameEsc}, ARRAY[${(0, PubSubManager_1.asValue)(name)}]))`;
|
|
262
|
-
}
|
|
263
|
-
else if ("enum" in colConf) {
|
|
264
|
-
if (!colConf.enum?.length)
|
|
265
|
-
throw new Error("colConf.enum Must not be empty");
|
|
266
|
-
const type = colConf.enum.every(v => Number.isFinite(v)) ? "NUMERIC" : "TEXT";
|
|
267
|
-
const checks = colConf.enum.map(v => `${colNameEsc} = ${(0, PubSubManager_1.asValue)(v)}`).join(" OR ");
|
|
268
|
-
return ` ${colNameEsc} ${type} ${colConf.nullable ? "" : "NOT NULL"} ${"defaultValue" in colConf ? ` DEFAULT ${(0, PubSubManager_1.asValue)(colConf.defaultValue)}` : ""} CHECK(${checks})`;
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
throw "Unknown column config: " + JSON.stringify(colConf);
|
|
272
|
-
}
|
|
273
|
-
};
|
|
274
|
-
const colCreateLines = [];
|
|
275
|
-
const tableHandler = this.dbo[tableName];
|
|
276
|
-
if (tableConf.columns) {
|
|
277
|
-
const hasJSONBValidation = (0, prostgles_types_1.getKeys)(tableConf.columns).some(c => {
|
|
278
|
-
const cConf = tableConf.columns?.[c];
|
|
279
|
-
return cConf && (0, prostgles_types_1.isObject)(cConf) && (cConf.jsonbSchema || cConf.jsonbSchemaType);
|
|
280
|
-
});
|
|
281
|
-
/** Must install validation function */
|
|
282
|
-
if (hasJSONBValidation) {
|
|
283
|
-
try {
|
|
284
|
-
const fileContent = `
|
|
285
|
-
/* prevent duplicate key value violates unique constraint "pg_namespace_nspname_index" Key (nspname)=(prostgles) already exists.*/
|
|
286
|
-
LOCK TABLE pg_catalog.pg_namespace IN SHARE ROW EXCLUSIVE MODE;
|
|
287
|
-
CREATE SCHEMA IF NOT EXISTS prostgles;\n
|
|
288
|
-
${validate_jsonb_schema_sql_1.validate_jsonb_schema_sql}`;
|
|
289
|
-
await this.db.any(fileContent);
|
|
290
|
-
}
|
|
291
|
-
catch (err) {
|
|
292
|
-
console.error("Could not install the jsonb validation function due to error: ", err);
|
|
293
|
-
throw err;
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
const columns = (0, prostgles_types_1.getKeys)(tableConf.columns).filter(c => {
|
|
297
|
-
const colDef = tableConf.columns[c];
|
|
298
|
-
return typeof colDef === "string" || !("joinDef" in colDef);
|
|
299
|
-
});
|
|
300
|
-
for await (const colName of columns) {
|
|
301
|
-
const colConf = tableConf.columns[colName];
|
|
302
|
-
/* Add columns to create statement */
|
|
303
|
-
if (!tableHandler) {
|
|
304
|
-
colCreateLines.push(await getColDef(colName, colConf));
|
|
305
|
-
}
|
|
306
|
-
else if (tableHandler && !tableHandler.columns?.find(c => colName === c.name)) {
|
|
307
|
-
queries.push(`
|
|
308
|
-
ALTER TABLE ${asName(tableName)}
|
|
309
|
-
ADD COLUMN ${await getColDef(colName, colConf)};
|
|
310
|
-
`);
|
|
311
|
-
if ((0, prostgles_types_1.isObject)(colConf) && "references" in colConf && colConf.references) {
|
|
312
|
-
const { tableName: lookupTable, } = colConf.references;
|
|
313
|
-
this.log(`TableConfigurator: ${tableName}(${colName})` + " referenced lookup table " + lookupTable);
|
|
314
|
-
}
|
|
315
|
-
else {
|
|
316
|
-
this.log(`TableConfigurator: created/added column ${tableName}(${colName}) `);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
if (colCreateLines.length) {
|
|
322
|
-
queries.push([
|
|
323
|
-
`CREATE TABLE ${asName(tableName)} (`,
|
|
324
|
-
colCreateLines.join(", \n"),
|
|
325
|
-
`);`
|
|
326
|
-
].join("\n"));
|
|
327
|
-
this.log("TableConfigurator: Created table: \n" + queries.at(-1));
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
if ("constraints" in tableConf && tableConf.constraints) {
|
|
331
|
-
const constraints = await getTableConstraings(this.db, tableName);
|
|
332
|
-
const constraintNames = (0, prostgles_types_1.getKeys)(tableConf.constraints);
|
|
333
|
-
constraintNames.map(constraintName => {
|
|
334
|
-
const _cnstr = tableConf.constraints[constraintName];
|
|
335
|
-
const constraintDef = typeof _cnstr === "string" ? _cnstr : `${_cnstr.type} (${_cnstr.content})`;
|
|
336
|
-
const canDrop = (0, prostgles_types_1.isObject)(_cnstr) && _cnstr.dropIfExists;
|
|
337
|
-
/** Drop constraints with the same name */
|
|
338
|
-
const existingConstraint = constraints.some(c => c.conname === constraintName);
|
|
339
|
-
if (existingConstraint) {
|
|
340
|
-
if (canDrop)
|
|
341
|
-
queries.push(`ALTER TABLE ${asName(tableName)} DROP CONSTRAINT ${asName(constraintName)};`);
|
|
342
|
-
}
|
|
343
|
-
if (!existingConstraint || canDrop) {
|
|
344
|
-
queries.push(`ALTER TABLE ${asName(tableName)} ADD CONSTRAINT ${asName(constraintName)} ${constraintDef} ;`);
|
|
345
|
-
}
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
if ("indexes" in tableConf && tableConf.indexes) {
|
|
349
|
-
/*
|
|
350
|
-
CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON [ ONLY ] table_name [ USING method ]
|
|
351
|
-
( { column_name | ( expression ) } [ COLLATE collation ] [ opclass [ ( opclass_parameter = value [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
|
|
352
|
-
[ INCLUDE ( column_name [, ...] ) ]
|
|
353
|
-
[ NULLS [ NOT ] DISTINCT ]
|
|
354
|
-
[ WITH ( storage_parameter [= value] [, ... ] ) ]
|
|
355
|
-
[ TABLESPACE tablespace_name ]
|
|
356
|
-
[ WHERE predicate ]
|
|
357
|
-
*/
|
|
358
|
-
(0, prostgles_types_1.getKeys)(tableConf.indexes).map(indexName => {
|
|
359
|
-
const { replace, unique, concurrently, using, columns, where = "" } = tableConf.indexes[indexName];
|
|
360
|
-
if (replace || typeof replace !== "boolean" && tableConf.replaceUniqueIndexes) {
|
|
361
|
-
queries.push(`DROP INDEX IF EXISTS ${asName(indexName)} ;`);
|
|
362
|
-
}
|
|
363
|
-
queries.push([
|
|
364
|
-
"CREATE",
|
|
365
|
-
unique && "UNIQUE",
|
|
366
|
-
concurrently && "CONCURRENTLY",
|
|
367
|
-
`INDEX ${asName(indexName)} ON ${asName(tableName)}`,
|
|
368
|
-
using && ("USING " + using),
|
|
369
|
-
`(${columns})`,
|
|
370
|
-
where && `WHERE ${where}`
|
|
371
|
-
].filter(v => v).join(" ") + ";");
|
|
372
|
-
});
|
|
373
|
-
}
|
|
374
|
-
const { triggers, dropIfExists, dropIfExistsCascade } = tableConf;
|
|
375
|
-
if (triggers) {
|
|
376
|
-
const isDropped = dropIfExists || dropIfExistsCascade;
|
|
377
|
-
const existingTriggers = await this.dbo.sql(`
|
|
378
|
-
SELECT event_object_table
|
|
379
|
-
,trigger_name
|
|
380
|
-
FROM information_schema.triggers
|
|
381
|
-
WHERE event_object_table = ` + "${tableName}" + `
|
|
382
|
-
ORDER BY event_object_table
|
|
383
|
-
`, { tableName }, { returnType: "rows" });
|
|
384
|
-
// const existingTriggerFuncs = await this.dbo.sql!(`
|
|
385
|
-
// SELECT p.oid,proname,prosrc,u.usename
|
|
386
|
-
// FROM pg_proc p
|
|
387
|
-
// JOIN pg_user u ON u.usesysid = p.proowner
|
|
388
|
-
// WHERE prorettype = 2279;
|
|
389
|
-
// `, {}, { returnType: "rows" }) as { proname: string }[];
|
|
390
|
-
(0, prostgles_types_1.getKeys)(triggers).forEach(triggerFuncName => {
|
|
391
|
-
const trigger = triggers[triggerFuncName];
|
|
392
|
-
const funcNameParsed = asName(triggerFuncName);
|
|
393
|
-
queries.push(`
|
|
394
|
-
CREATE OR REPLACE FUNCTION ${funcNameParsed}()
|
|
395
|
-
RETURNS trigger
|
|
396
|
-
LANGUAGE plpgsql
|
|
397
|
-
AS
|
|
398
|
-
$$
|
|
399
|
-
|
|
400
|
-
${trigger.query}
|
|
401
|
-
|
|
402
|
-
$$;
|
|
403
|
-
`);
|
|
404
|
-
trigger.actions.forEach(action => {
|
|
405
|
-
const triggerActionName = triggerFuncName + "_" + action;
|
|
406
|
-
const triggerActionNameParsed = asName(triggerActionName);
|
|
407
|
-
if (isDropped) {
|
|
408
|
-
queries.push(`DROP TRIGGER IF EXISTS ${triggerActionNameParsed} ON ${tableName};`);
|
|
409
|
-
}
|
|
410
|
-
if (isDropped || !existingTriggers.some(t => t.trigger_name === triggerActionName)) {
|
|
411
|
-
const newTableName = action !== "delete" ? "NEW TABLE AS new_table" : "";
|
|
412
|
-
const oldTableName = action !== "insert" ? "OLD TABLE AS old_table" : "";
|
|
413
|
-
queries.push(`
|
|
414
|
-
CREATE TRIGGER ${triggerActionNameParsed}
|
|
415
|
-
${trigger.type} ${action} ON ${tableName}
|
|
416
|
-
REFERENCING ${newTableName} ${oldTableName}
|
|
417
|
-
FOR EACH ${trigger.forEach}
|
|
418
|
-
EXECUTE PROCEDURE ${funcNameParsed}();
|
|
419
|
-
`);
|
|
420
|
-
}
|
|
421
|
-
});
|
|
422
|
-
});
|
|
423
|
-
}
|
|
424
|
-
}));
|
|
425
|
-
if (queries.length) {
|
|
426
|
-
const q = queries.join("\n");
|
|
427
|
-
this.log("TableConfig: \n", q);
|
|
428
|
-
await this.db.multi(q).catch(err => {
|
|
429
|
-
if (err.position) {
|
|
430
|
-
const pos = +err.position;
|
|
431
|
-
if (Number.isInteger(pos)) {
|
|
432
|
-
return Promise.reject(err.toString() + "\n At:" + q.slice(pos - 50, pos + 50));
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
console.error("TableConfig error: ", err);
|
|
436
|
-
return Promise.reject(err);
|
|
437
|
-
});
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
exports.default = TableConfigurator;
|
|
442
|
-
async function columnExists(args) {
|
|
443
|
-
const { db, tableName, colName } = args;
|
|
444
|
-
return Boolean((await db.oneOrNone(`
|
|
445
|
-
SELECT column_name, table_name
|
|
446
|
-
FROM information_schema.columns
|
|
447
|
-
WHERE table_name=${(0, PubSubManager_1.asValue)(tableName)} and column_name=${(0, PubSubManager_1.asValue)(colName)}
|
|
448
|
-
LIMIT 1;
|
|
449
|
-
`))?.column_name);
|
|
450
|
-
}
|
|
451
|
-
function getTableConstraings(db, tableName) {
|
|
452
|
-
return db.any(`
|
|
453
|
-
SELECT con.*, pg_get_constraintdef(con.oid)
|
|
454
|
-
FROM pg_catalog.pg_constraint con
|
|
455
|
-
INNER JOIN pg_catalog.pg_class rel
|
|
456
|
-
ON rel.oid = con.conrelid
|
|
457
|
-
INNER JOIN pg_catalog.pg_namespace nsp
|
|
458
|
-
ON nsp.oid = connamespace
|
|
459
|
-
WHERE 1=1
|
|
460
|
-
AND nsp.nspname = current_schema
|
|
461
|
-
AND rel.relname = ` + "${tableName}", { tableName });
|
|
462
|
-
}
|
|
463
|
-
//# sourceMappingURL=TableConfig.js.map
|
package/dist/TableConfig.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TableConfig.js","sourceRoot":"","sources":["../lib/TableConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/validation.d.ts
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { AnyObject } from "prostgles-types";
|
|
2
|
-
import { BaseColumn, JSONBColumnDef, StrictUnion } from "./TableConfig";
|
|
3
|
-
type BaseOptions = {
|
|
4
|
-
/**
|
|
5
|
-
* False by default
|
|
6
|
-
*/
|
|
7
|
-
optional?: boolean;
|
|
8
|
-
/**
|
|
9
|
-
* False by default
|
|
10
|
-
*/
|
|
11
|
-
nullable?: boolean;
|
|
12
|
-
description?: string;
|
|
13
|
-
allowedValues?: any[];
|
|
14
|
-
title?: string;
|
|
15
|
-
};
|
|
16
|
-
declare const DATA_TYPES: readonly ["boolean", "number", "integer", "string", "any", ...("string[]" | "number[]" | "boolean[]" | "integer[]" | "any[]")[]];
|
|
17
|
-
type DataType = typeof DATA_TYPES[number];
|
|
18
|
-
export type OneOf = BaseOptions & {
|
|
19
|
-
type?: undefined;
|
|
20
|
-
oneOf: readonly ValidationSchema[];
|
|
21
|
-
arrayOf?: undefined;
|
|
22
|
-
enum?: undefined;
|
|
23
|
-
};
|
|
24
|
-
export type ArrayOf = BaseOptions & {
|
|
25
|
-
type?: undefined;
|
|
26
|
-
arrayOf: ValidationSchema;
|
|
27
|
-
oneOf?: undefined;
|
|
28
|
-
enum?: undefined;
|
|
29
|
-
};
|
|
30
|
-
type FieldTypeObj = BaseOptions & ({
|
|
31
|
-
type: DataType | ValidationSchema;
|
|
32
|
-
oneOf?: undefined;
|
|
33
|
-
arrayOf?: undefined;
|
|
34
|
-
enum?: undefined;
|
|
35
|
-
} | {
|
|
36
|
-
type?: undefined;
|
|
37
|
-
enum: readonly any[];
|
|
38
|
-
oneOf?: undefined;
|
|
39
|
-
arrayOf?: undefined;
|
|
40
|
-
} | OneOf | ArrayOf);
|
|
41
|
-
type FieldType = DataType | FieldTypeObj;
|
|
42
|
-
type GetType<T extends FieldType> = T extends {
|
|
43
|
-
type: ValidationSchema;
|
|
44
|
-
} ? SchemaObject<T["type"]> : T extends "number" | {
|
|
45
|
-
type: "number";
|
|
46
|
-
} ? number : T extends "boolean" | {
|
|
47
|
-
type: "boolean";
|
|
48
|
-
} ? boolean : T extends "integer" | {
|
|
49
|
-
type: "integer";
|
|
50
|
-
} ? number : T extends "string" | {
|
|
51
|
-
type: "string";
|
|
52
|
-
} ? string : T extends "any" | {
|
|
53
|
-
type: "any";
|
|
54
|
-
} ? any : T extends "number[]" | {
|
|
55
|
-
type: "number[]";
|
|
56
|
-
} ? number[] : T extends "boolean[]" | {
|
|
57
|
-
type: "boolean[]";
|
|
58
|
-
} ? boolean[] : T extends "integer[]" | {
|
|
59
|
-
type: "integer[]";
|
|
60
|
-
} ? number[] : T extends "string[]" | {
|
|
61
|
-
type: "string[]";
|
|
62
|
-
} ? string[] : T extends "any[]" | {
|
|
63
|
-
type: "any[]";
|
|
64
|
-
} ? any[] : T extends {
|
|
65
|
-
enum: readonly any[];
|
|
66
|
-
} ? T["enum"][number] : T extends {
|
|
67
|
-
oneOf: readonly ValidationSchema[];
|
|
68
|
-
} ? StrictUnion<SchemaObject<T["oneOf"][number]>> : T extends {
|
|
69
|
-
arrayOf: ValidationSchema;
|
|
70
|
-
} ? SchemaObject<T["arrayOf"]>[] : any;
|
|
71
|
-
type IsOptional<F extends FieldType> = F extends DataType ? false : F extends {
|
|
72
|
-
optional: true;
|
|
73
|
-
} ? true : false;
|
|
74
|
-
export type ValidationSchema = Record<string, FieldType>;
|
|
75
|
-
export type SchemaObject<S extends ValidationSchema> = ({
|
|
76
|
-
[K in keyof S as IsOptional<S[K]> extends true ? K : never]?: GetType<S[K]>;
|
|
77
|
-
} & {
|
|
78
|
-
[K in keyof S as IsOptional<S[K]> extends true ? never : K]: GetType<S[K]>;
|
|
79
|
-
});
|
|
80
|
-
export declare function validate<T>(obj: T, key: keyof T, rawFieldType: FieldType): boolean;
|
|
81
|
-
export declare function validateSchema<S extends ValidationSchema>(schema: S, obj: SchemaObject<S>, objName?: string, optional?: boolean): void;
|
|
82
|
-
export declare function getPGCheckConstraint(args: {
|
|
83
|
-
escapedFieldName: string;
|
|
84
|
-
schema: ValidationSchema | OneOf;
|
|
85
|
-
nullable: boolean;
|
|
86
|
-
isRootQuery?: boolean;
|
|
87
|
-
optional?: boolean;
|
|
88
|
-
}, depth: number): string;
|
|
89
|
-
type ColOpts = {
|
|
90
|
-
nullable?: boolean;
|
|
91
|
-
};
|
|
92
|
-
export declare function getSchemaTSTypes(schema: ValidationSchema, leading?: string, isOneOf?: boolean): string;
|
|
93
|
-
export declare function getJSONBSchemaTSTypes(schema: ValidationSchema | OneOf, colOpts: ColOpts, leading?: string, isOneOf?: boolean): string;
|
|
94
|
-
declare namespace JSTypes {
|
|
95
|
-
type Base = {
|
|
96
|
-
$id?: string;
|
|
97
|
-
$schema?: string;
|
|
98
|
-
title?: string;
|
|
99
|
-
description?: string;
|
|
100
|
-
required?: boolean;
|
|
101
|
-
};
|
|
102
|
-
export type Any = {};
|
|
103
|
-
export type Object<T extends AnyObject = AnyObject> = Base & {
|
|
104
|
-
type: "object";
|
|
105
|
-
properties: Record<keyof T, Schema>;
|
|
106
|
-
};
|
|
107
|
-
export type Enum = Base & {
|
|
108
|
-
type: "string" | "number";
|
|
109
|
-
enum: (string | number)[];
|
|
110
|
-
};
|
|
111
|
-
export type Array = Base & {
|
|
112
|
-
type: "array";
|
|
113
|
-
items: (string | number)[];
|
|
114
|
-
};
|
|
115
|
-
export type OneOf = {
|
|
116
|
-
oneOf: (Any | Object | Enum | Array)[];
|
|
117
|
-
};
|
|
118
|
-
export type Schema = Any | Object | Enum | Array | OneOf;
|
|
119
|
-
export {};
|
|
120
|
-
}
|
|
121
|
-
type JSONSchema = JSTypes.Schema;
|
|
122
|
-
export declare function getJSONBSchemaAsJSONSchema(tableName: string, colName: string, columnConfig: BaseColumn<{
|
|
123
|
-
en: 1;
|
|
124
|
-
}> & JSONBColumnDef): JSONSchema;
|
|
125
|
-
export {};
|
|
126
|
-
//# sourceMappingURL=validation.d.ts.map
|
package/dist/validation.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../lib/validation.ts"],"names":[],"mappings":"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"}
|