prostgles-server 4.2.567 → 4.2.569
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/Auth/AuthTypes.d.ts +5 -5
- package/dist/Auth/AuthTypes.d.ts.map +1 -1
- package/dist/Auth/AuthTypes.js.map +1 -1
- package/dist/Auth/endpoints/setCatchAllRequestHandler.d.ts.map +1 -1
- package/dist/Auth/endpoints/setCatchAllRequestHandler.js +2 -2
- package/dist/Auth/endpoints/setCatchAllRequestHandler.js.map +1 -1
- package/dist/DBSchemaBuilder/getColumnTypescriptDefinition.d.ts +1 -1
- package/dist/DBSchemaBuilder/getColumnTypescriptDefinition.d.ts.map +1 -1
- package/dist/DBSchemaBuilder/getDBGeneratedSchema.d.ts +1 -1
- package/dist/DBSchemaBuilder/getDBGeneratedSchema.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +4 -4
- package/dist/DboBuilder/DboBuilder.js.map +1 -1
- package/dist/DboBuilder/DboBuilderTypes.d.ts +2 -18
- package/dist/DboBuilder/DboBuilderTypes.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilderTypes.js.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.d.ts +15 -5
- package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.js +4 -3
- package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
- package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/delete.js +17 -14
- package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insert.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insert.js +3 -12
- package/dist/DboBuilder/TableHandler/insert/insert.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insertNestedRecords.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insertNestedRecords.js +10 -15
- package/dist/DboBuilder/TableHandler/insert/insertNestedRecords.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insertRowWithNestedRecords.js +1 -1
- package/dist/DboBuilder/TableHandler/insert/insertRowWithNestedRecords.js.map +1 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts +8 -6
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js +30 -48
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js.map +1 -1
- package/dist/DboBuilder/TableHandler/update.d.ts +1 -1
- package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/update.js +8 -18
- package/dist/DboBuilder/TableHandler/update.js.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.d.ts +2 -3
- package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.js +8 -28
- package/dist/DboBuilder/TableHandler/updateFile.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +2 -2
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.d.ts +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.js +12 -1
- package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
- package/dist/DboBuilder/getColumns.d.ts.map +1 -1
- package/dist/DboBuilder/getColumns.js +29 -4
- package/dist/DboBuilder/getColumns.js.map +1 -1
- package/dist/DboBuilder/schema/getTablesForSchemaPostgresSQL.d.ts +2 -2
- package/dist/DboBuilder/uploadFile.d.ts +5 -6
- package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
- package/dist/DboBuilder/uploadFile.js +28 -42
- package/dist/DboBuilder/uploadFile.js.map +1 -1
- package/dist/FileManager/FileManager.d.ts +22 -78
- package/dist/FileManager/FileManager.d.ts.map +1 -1
- package/dist/FileManager/FileManager.js +1 -219
- package/dist/FileManager/FileManager.js.map +1 -1
- package/dist/FileManager/getFileTableConfig.d.ts +26 -0
- package/dist/FileManager/getFileTableConfig.d.ts.map +1 -0
- package/dist/FileManager/getFileTableConfig.js +115 -0
- package/dist/FileManager/getFileTableConfig.js.map +1 -0
- package/dist/FileManager/getLocalStorageClient.d.ts +3 -0
- package/dist/FileManager/getLocalStorageClient.d.ts.map +1 -0
- package/dist/FileManager/getLocalStorageClient.js +105 -0
- package/dist/FileManager/getLocalStorageClient.js.map +1 -0
- package/dist/FileManager/getValidatedFileType.d.ts +2 -2
- package/dist/FileManager/getValidatedFileType.d.ts.map +1 -1
- package/dist/FileManager/getValidatedFileType.js +7 -9
- package/dist/FileManager/getValidatedFileType.js.map +1 -1
- package/dist/FileManager/setupFileServeHandler.d.ts +9 -0
- package/dist/FileManager/setupFileServeHandler.d.ts.map +1 -0
- package/dist/FileManager/setupFileServeHandler.js +114 -0
- package/dist/FileManager/setupFileServeHandler.js.map +1 -0
- package/dist/Filtering/Filtering.d.ts +1 -1
- package/dist/Logging.d.ts +1 -1
- package/dist/Logging.d.ts.map +1 -1
- package/dist/Prostgles.d.ts +52 -6
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/Prostgles.js +8 -47
- package/dist/Prostgles.js.map +1 -1
- package/dist/ProstglesTypes.d.ts +23 -21
- package/dist/ProstglesTypes.d.ts.map +1 -1
- package/dist/ProstglesTypes.js.map +1 -1
- package/dist/PubSubManager/notifListener.d.ts.map +1 -1
- package/dist/PubSubManager/notifListener.js +0 -1
- package/dist/PubSubManager/notifListener.js.map +1 -1
- package/dist/PublishParser/getDBSchemaTable.d.ts +2 -2
- package/dist/PublishParser/getDBSchemaTable.d.ts.map +1 -1
- package/dist/PublishParser/getDBSchemaTable.js +5 -3
- package/dist/PublishParser/getDBSchemaTable.js.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
- package/dist/PublishParser/getSchemaFromPublish.js +2 -2
- package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.d.ts +1 -0
- package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
- package/dist/RestApi.d.ts +1 -5
- package/dist/RestApi.d.ts.map +1 -1
- package/dist/RestApi.js +10 -5
- package/dist/RestApi.js.map +1 -1
- package/dist/TableConfig/{TableConfig.d.ts → TableConfigTypes.d.ts} +19 -64
- package/dist/TableConfig/TableConfigTypes.d.ts.map +1 -0
- package/dist/TableConfig/TableConfigTypes.js +3 -0
- package/dist/TableConfig/TableConfigTypes.js.map +1 -0
- package/dist/TableConfig/TableConfigurator.d.ts +104 -0
- package/dist/TableConfig/TableConfigurator.d.ts.map +1 -0
- package/dist/TableConfig/{TableConfig.js → TableConfigurator.js} +31 -44
- package/dist/TableConfig/TableConfigurator.js.map +1 -0
- package/dist/TableConfig/applyTableConfig.d.ts.map +1 -1
- package/dist/TableConfig/applyTableConfig.js +0 -1
- package/dist/TableConfig/applyTableConfig.js.map +1 -1
- package/dist/TableConfig/getColumnConfig.d.ts +1 -1
- package/dist/TableConfig/getColumnConfig.d.ts.map +1 -1
- package/dist/TableConfig/getColumnSQLDefinitionQuery.d.ts +1 -1
- package/dist/TableConfig/getColumnSQLDefinitionQuery.d.ts.map +1 -1
- package/dist/TableConfig/getColumnSQLDefinitionQuery.js +1 -1
- package/dist/TableConfig/getColumnSQLDefinitionQuery.js.map +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.d.ts +1 -1
- package/dist/TableConfig/getConstraintDefinitionQueries.d.ts.map +1 -1
- package/dist/TableConfig/getCreateSchemaQueries.d.ts +26 -8
- package/dist/TableConfig/getCreateSchemaQueries.d.ts.map +1 -1
- package/dist/TableConfig/getSchemaDiffQueries.d.ts.map +1 -1
- package/dist/TableConfig/getSchemaDiffQueries.js +12 -8
- package/dist/TableConfig/getSchemaDiffQueries.js.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.d.ts +1 -1
- package/dist/TableConfig/getTableColumnQueries.d.ts.map +1 -1
- package/dist/TableConfig/getTableColumnQueries.js +19 -19
- package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
- package/dist/TableConfig/getTableConfigSchemaQueries.d.ts +26 -10
- package/dist/TableConfig/getTableConfigSchemaQueries.d.ts.map +1 -1
- package/dist/TableConfig/getTableConfigSchemaQueries.js +8 -10
- package/dist/TableConfig/getTableConfigSchemaQueries.js.map +1 -1
- package/dist/TableConfig/indexes/getIndexesQueries.d.ts +1 -1
- package/dist/TableConfig/indexes/getIndexesQueries.d.ts.map +1 -1
- package/dist/TableConfig/initTableConfig.d.ts +1 -1
- package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
- package/dist/TableConfig/initTableConfig.js +6 -3
- package/dist/TableConfig/initTableConfig.js.map +1 -1
- package/dist/WebsocketAPI/getClientSchema.d.ts.map +1 -1
- package/dist/WebsocketAPI/getClientSchema.js +6 -1
- package/dist/WebsocketAPI/getClientSchema.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/initProstgles.d.ts.map +1 -1
- package/dist/initProstgles.js +2 -5
- package/dist/initProstgles.js.map +1 -1
- package/dist/runClientRequest.js +1 -1
- package/dist/runClientRequest.js.map +1 -1
- package/dist/updateConfiguration.d.ts.map +1 -1
- package/dist/updateConfiguration.js +0 -3
- package/dist/updateConfiguration.js.map +1 -1
- package/eslint.config.mjs +0 -3
- package/lib/Auth/AuthTypes.ts +6 -7
- package/lib/Auth/endpoints/setCatchAllRequestHandler.ts +6 -2
- package/lib/DBSchemaBuilder/getColumnTypescriptDefinition.ts +1 -1
- package/lib/DBSchemaBuilder/getDBGeneratedSchema.ts +1 -1
- package/lib/DboBuilder/DboBuilder.ts +4 -4
- package/lib/DboBuilder/DboBuilderTypes.ts +7 -20
- package/lib/DboBuilder/TableHandler/TableHandler.ts +7 -4
- package/lib/DboBuilder/TableHandler/delete.ts +23 -17
- package/lib/DboBuilder/TableHandler/insert/insert.ts +3 -12
- package/lib/DboBuilder/TableHandler/insert/insertNestedRecords.ts +13 -17
- package/lib/DboBuilder/TableHandler/insert/insertRowWithNestedRecords.ts +1 -1
- package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +41 -54
- package/lib/DboBuilder/TableHandler/update.ts +8 -19
- package/lib/DboBuilder/TableHandler/updateFile.ts +20 -42
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +1 -1
- package/lib/DboBuilder/ViewHandler/getInfo.ts +19 -2
- package/lib/DboBuilder/getColumns.ts +40 -4
- package/lib/DboBuilder/uploadFile.ts +34 -50
- package/lib/FileManager/FileManager.ts +23 -249
- package/lib/FileManager/getFileTableConfig.ts +142 -0
- package/lib/FileManager/getLocalStorageClient.ts +118 -0
- package/lib/FileManager/getValidatedFileType.ts +14 -22
- package/lib/FileManager/setupFileServeHandler.ts +102 -0
- package/lib/Logging.ts +0 -3
- package/lib/Prostgles.ts +9 -44
- package/lib/ProstglesTypes.ts +34 -23
- package/lib/PubSubManager/notifListener.ts +0 -2
- package/lib/PublishParser/getDBSchemaTable.ts +6 -3
- package/lib/PublishParser/getSchemaFromPublish.ts +2 -1
- package/lib/PublishParser/publishTypesAndUtils.ts +1 -0
- package/lib/RestApi.ts +12 -12
- package/lib/TableConfig/{TableConfig.ts → TableConfigTypes.ts} +18 -217
- package/lib/TableConfig/TableConfigurator.ts +191 -0
- package/lib/TableConfig/applyTableConfig.ts +2 -3
- package/lib/TableConfig/getColumnConfig.ts +2 -2
- package/lib/TableConfig/getColumnSQLDefinitionQuery.ts +2 -2
- package/lib/TableConfig/getConstraintDefinitionQueries.ts +1 -1
- package/lib/TableConfig/getCreateSchemaQueries.ts +1 -1
- package/lib/TableConfig/getSchemaDiffQueries.ts +14 -11
- package/lib/TableConfig/getTableColumnQueries.ts +22 -20
- package/lib/TableConfig/getTableConfigSchemaQueries.ts +20 -22
- package/lib/TableConfig/indexes/getIndexesQueries.ts +1 -1
- package/lib/TableConfig/initTableConfig.ts +7 -6
- package/lib/WebsocketAPI/getClientSchema.ts +7 -1
- package/lib/index.ts +3 -2
- package/lib/initProstgles.ts +2 -6
- package/lib/runClientRequest.ts +1 -1
- package/lib/updateConfiguration.ts +0 -3
- package/package.json +2 -3
- package/dist/FileManager/initFileManager.d.ts +0 -18
- package/dist/FileManager/initFileManager.d.ts.map +0 -1
- package/dist/FileManager/initFileManager.js +0 -257
- package/dist/FileManager/initFileManager.js.map +0 -1
- package/dist/FileManager/upload.d.ts +0 -4
- package/dist/FileManager/upload.d.ts.map +0 -1
- package/dist/FileManager/upload.js +0 -90
- package/dist/FileManager/upload.js.map +0 -1
- package/dist/FileManager/uploadStream.d.ts +0 -4
- package/dist/FileManager/uploadStream.d.ts.map +0 -1
- package/dist/FileManager/uploadStream.js +0 -100
- package/dist/FileManager/uploadStream.js.map +0 -1
- package/dist/TableConfig/TableConfig.d.ts.map +0 -1
- package/dist/TableConfig/TableConfig.js.map +0 -1
- package/lib/FileManager/initFileManager.ts +0 -254
- package/lib/FileManager/upload.ts +0 -59
- package/lib/FileManager/uploadStream.ts +0 -76
|
@@ -3,7 +3,7 @@ import { CREATE_VALIDATE_SCHEMA_FUNCTION_SQL } from "../JSONBSchemaValidation/va
|
|
|
3
3
|
import type { DB, DBHandlerServer } from "../Prostgles";
|
|
4
4
|
import { getColumnSQLDefinitionQuery, getTableColumns } from "./getColumnSQLDefinitionQuery";
|
|
5
5
|
import { getFutureTableSchema } from "./getFutureTableSchema";
|
|
6
|
-
import type { TableConfig } from "./
|
|
6
|
+
import type { TableConfig } from "./TableConfigTypes";
|
|
7
7
|
|
|
8
8
|
type Args = {
|
|
9
9
|
db: DB;
|
|
@@ -30,7 +30,7 @@ export const getTableColumnQueries = async ({
|
|
|
30
30
|
isCreate: boolean;
|
|
31
31
|
}
|
|
32
32
|
> => {
|
|
33
|
-
|
|
33
|
+
const newColumnDefinitions: string[] = [];
|
|
34
34
|
const droppedColNames: string[] = [];
|
|
35
35
|
const alteredColQueries: string[] = [];
|
|
36
36
|
let fullQuery = "";
|
|
@@ -62,7 +62,7 @@ export const getTableColumnQueries = async ({
|
|
|
62
62
|
return typeof colDef === "string" || !("joinDef" in colDef);
|
|
63
63
|
});
|
|
64
64
|
|
|
65
|
-
const
|
|
65
|
+
const columnDefinitions: { name: string; def: string }[] = [];
|
|
66
66
|
|
|
67
67
|
for (const [colName, colConf] of columns) {
|
|
68
68
|
/* Get column definition */
|
|
@@ -73,25 +73,25 @@ export const getTableColumnQueries = async ({
|
|
|
73
73
|
table: tableName,
|
|
74
74
|
});
|
|
75
75
|
if (colDef) {
|
|
76
|
-
|
|
76
|
+
columnDefinitions.push({ name: colName.toString(), def: colDef });
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
-
const columnDefs =
|
|
79
|
+
const columnDefs = columnDefinitions.map((c) => c.def);
|
|
80
80
|
|
|
81
|
-
if (!
|
|
81
|
+
if (!columnDefinitions.length) {
|
|
82
82
|
return undefined;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
const
|
|
85
|
+
const alterTableQuery = `ALTER TABLE ${asName(tableName)}`;
|
|
86
86
|
if (!tableHandler) {
|
|
87
|
-
|
|
87
|
+
columnDefinitions.map((c) => newColumnDefinitions.push(c.def));
|
|
88
88
|
} else {
|
|
89
89
|
const currCols = await getTableColumns({ db, table: tableName });
|
|
90
90
|
|
|
91
91
|
/** Add new columns */
|
|
92
|
-
|
|
92
|
+
columnDefinitions
|
|
93
93
|
.filter((nc) => !tableHandler.columns.some((c) => nc.name === c.name))
|
|
94
|
-
.
|
|
94
|
+
.forEach((c) => newColumnDefinitions.push(c.def));
|
|
95
95
|
|
|
96
96
|
/** Altered/Dropped columns */
|
|
97
97
|
const { cols: futureCols } = await getFutureTableSchema({
|
|
@@ -106,14 +106,14 @@ export const getTableColumnQueries = async ({
|
|
|
106
106
|
droppedColNames.push(c.column_name);
|
|
107
107
|
} else if (newCol.nullable !== c.nullable) {
|
|
108
108
|
alteredColQueries.push(
|
|
109
|
-
`${
|
|
109
|
+
`${alterTableQuery} ALTER COLUMN ${asName(c.column_name)} ${newCol.nullable ? "DROP" : "SET"} NOT NULL;`,
|
|
110
110
|
);
|
|
111
111
|
} else if (newCol.udt_name !== c.udt_name) {
|
|
112
112
|
alteredColQueries.push(
|
|
113
|
-
`${
|
|
113
|
+
`${alterTableQuery} ALTER COLUMN ${asName(c.column_name)} TYPE ${newCol.udt_name} USING ${asName(c.column_name)}::${newCol.udt_name};`,
|
|
114
114
|
);
|
|
115
115
|
} else if (newCol.column_default !== c.column_default) {
|
|
116
|
-
const colConfig =
|
|
116
|
+
const colConfig = columnDefinitions.find((cd) => cd.name === c.column_name);
|
|
117
117
|
if (
|
|
118
118
|
["serial", "bigserial"].some((t) => colConfig?.def.toLowerCase().includes(` ${t}`)) &&
|
|
119
119
|
c.column_default?.toLowerCase().includes("nextval")
|
|
@@ -121,7 +121,7 @@ export const getTableColumnQueries = async ({
|
|
|
121
121
|
/** Ignore SERIAL/BIGSERIAL <> nextval mismatch */
|
|
122
122
|
} else {
|
|
123
123
|
alteredColQueries.push(
|
|
124
|
-
`${
|
|
124
|
+
`${alterTableQuery} ALTER COLUMN ${asName(c.column_name)} ${newCol.column_default === null ? "DROP DEFAULT" : `SET DEFAULT ${newCol.column_default}`};`,
|
|
125
125
|
);
|
|
126
126
|
}
|
|
127
127
|
}
|
|
@@ -130,10 +130,10 @@ export const getTableColumnQueries = async ({
|
|
|
130
130
|
|
|
131
131
|
if (!tableHandler || tableConf.dropIfExists || tableConf.dropIfExistsCascade) {
|
|
132
132
|
isCreate = true;
|
|
133
|
-
const
|
|
133
|
+
const dropTableQuery = `DROP TABLE IF EXISTS ${asName(tableName)}`;
|
|
134
134
|
fullQuery = [
|
|
135
|
-
...(tableConf.dropIfExists ? [`${
|
|
136
|
-
: tableConf.dropIfExistsCascade ? [`${
|
|
135
|
+
...(tableConf.dropIfExists ? [`${dropTableQuery};`]
|
|
136
|
+
: tableConf.dropIfExistsCascade ? [`${dropTableQuery} CASCADE;`]
|
|
137
137
|
: []),
|
|
138
138
|
`CREATE TABLE ${asName(tableName)} (`,
|
|
139
139
|
columnDefs.join(", \n"),
|
|
@@ -141,8 +141,10 @@ export const getTableColumnQueries = async ({
|
|
|
141
141
|
].join("\n");
|
|
142
142
|
} else {
|
|
143
143
|
fullQuery = [
|
|
144
|
-
...droppedColNames.map((c) => `${
|
|
145
|
-
...
|
|
144
|
+
// ...droppedColNames.map((c) => `${alterTableQuery} DROP COLUMN ${asName(c)};`),
|
|
145
|
+
...newColumnDefinitions.map(
|
|
146
|
+
(columnDefinition) => `${alterTableQuery} ADD COLUMN ${columnDefinition};`,
|
|
147
|
+
),
|
|
146
148
|
...alteredColQueries,
|
|
147
149
|
].join("\n");
|
|
148
150
|
}
|
|
@@ -151,6 +153,6 @@ export const getTableColumnQueries = async ({
|
|
|
151
153
|
fullQuery,
|
|
152
154
|
columnDefs,
|
|
153
155
|
isCreate,
|
|
154
|
-
newColumnDefs,
|
|
156
|
+
newColumnDefs: newColumnDefinitions,
|
|
155
157
|
};
|
|
156
158
|
};
|
|
@@ -1,32 +1,31 @@
|
|
|
1
1
|
import { as } from "pg-promise";
|
|
2
2
|
import { isDefined } from "prostgles-types";
|
|
3
|
-
import { getFileManagerSchema } from "../FileManager/initFileManager";
|
|
4
3
|
import type { DB } from "../initProstgles";
|
|
5
4
|
import { getColumnSQLDefinitionQuery } from "./getColumnSQLDefinitionQuery";
|
|
6
5
|
import { getConstraintDefinitionQueries } from "./getConstraintDefinitionQueries";
|
|
7
6
|
import { tableConfigWithMigrations, type SchemaRelatedOptions } from "./getCreateSchemaQueries";
|
|
8
|
-
import type { TableConfig } from "./
|
|
7
|
+
import type { TableConfig } from "./TableConfigTypes";
|
|
9
8
|
import type { getSchemaUtils } from "./tableConfigSchemaUtils";
|
|
10
9
|
|
|
11
10
|
export const getTableConfigSchemaQueries = async (
|
|
12
11
|
opts: SchemaRelatedOptions,
|
|
13
|
-
{ asName, db }: Pick<Awaited<ReturnType<typeof getSchemaUtils>>, "asName" | "db"
|
|
12
|
+
{ asName, db }: Pick<Awaited<ReturnType<typeof getSchemaUtils>>, "asName" | "db">,
|
|
14
13
|
) => {
|
|
15
|
-
const fileTableSchema =
|
|
16
|
-
const fileTableSchemaQuery = fileTableSchema?.queries.join("\n") ?? "";
|
|
17
|
-
const migrations = await tableConfigWithMigrations(db, opts,
|
|
14
|
+
// const fileTableSchema = getFileTableConfig(opts);
|
|
15
|
+
// const fileTableSchemaQuery = fileTableSchema?.queries.join("\n") ?? "";
|
|
16
|
+
const migrations = await tableConfigWithMigrations(db, opts, "");
|
|
18
17
|
|
|
19
18
|
const config: TableConfig = migrations.config ?? {};
|
|
20
19
|
|
|
21
20
|
const uniqueColumnAndTableNames = Array.from(
|
|
22
21
|
new Set(
|
|
23
|
-
Object.entries(config).flatMap(([
|
|
22
|
+
Object.entries(config).flatMap(([tableName, tableConf]) => {
|
|
24
23
|
if ("columns" in tableConf && tableConf.columns) {
|
|
25
|
-
return [
|
|
24
|
+
return [tableName, ...Object.keys(tableConf.columns)];
|
|
26
25
|
}
|
|
27
|
-
return [
|
|
28
|
-
})
|
|
29
|
-
)
|
|
26
|
+
return [tableName];
|
|
27
|
+
}),
|
|
28
|
+
),
|
|
30
29
|
);
|
|
31
30
|
|
|
32
31
|
/** Avoid using double quotes when not required to ensure the jsonb validation checks do not include unnecessary quotes */
|
|
@@ -34,10 +33,10 @@ export const getTableConfigSchemaQueries = async (
|
|
|
34
33
|
escapedTableNameMapObj: Record<string, string>;
|
|
35
34
|
}>(
|
|
36
35
|
`
|
|
37
|
-
SELECT jsonb_object_agg(
|
|
38
|
-
FROM unnest(ARRAY[\${keys:csv}]) as
|
|
36
|
+
SELECT jsonb_object_agg(table_name, quote_ident(table_name)) as "escapedTableNameMapObj"
|
|
37
|
+
FROM unnest(ARRAY[\${keys:csv}]) as table_name
|
|
39
38
|
`,
|
|
40
|
-
{ keys: uniqueColumnAndTableNames.concat("prevent_empty_array_error") }
|
|
39
|
+
{ keys: uniqueColumnAndTableNames.concat("prevent_empty_array_error") },
|
|
41
40
|
);
|
|
42
41
|
|
|
43
42
|
let triggerQueries: string[] = [];
|
|
@@ -55,7 +54,7 @@ export const getTableConfigSchemaQueries = async (
|
|
|
55
54
|
tableConf,
|
|
56
55
|
asName,
|
|
57
56
|
escapedTableNameMapObj,
|
|
58
|
-
db
|
|
57
|
+
db,
|
|
59
58
|
);
|
|
60
59
|
if (_tableQueries) {
|
|
61
60
|
tableQueries = [...tableQueries, ..._tableQueries.queries];
|
|
@@ -77,7 +76,6 @@ export const getTableConfigSchemaQueries = async (
|
|
|
77
76
|
|
|
78
77
|
return {
|
|
79
78
|
dropTableQueries,
|
|
80
|
-
fileTableSchemaQuery,
|
|
81
79
|
tableQueries,
|
|
82
80
|
constraintQueries,
|
|
83
81
|
indexQueries,
|
|
@@ -91,7 +89,7 @@ const getTableQueries = async (
|
|
|
91
89
|
tableConf: TableConfig[string],
|
|
92
90
|
asName: (v: string) => string,
|
|
93
91
|
escapedTableNameMapObj: Record<string, string>,
|
|
94
|
-
db: DB
|
|
92
|
+
db: DB,
|
|
95
93
|
) => {
|
|
96
94
|
if ("isLookupTable" in tableConf && Object.keys(tableConf.isLookupTable.values).length) {
|
|
97
95
|
const { isLookupTable } = tableConf;
|
|
@@ -100,7 +98,7 @@ const getTableQueries = async (
|
|
|
100
98
|
([id, otherColumns]) => ({
|
|
101
99
|
id,
|
|
102
100
|
...otherColumns,
|
|
103
|
-
})
|
|
101
|
+
}),
|
|
104
102
|
);
|
|
105
103
|
|
|
106
104
|
const allColumns = Object.keys(rows[0]!);
|
|
@@ -122,7 +120,7 @@ const getTableQueries = async (
|
|
|
122
120
|
return as.format(
|
|
123
121
|
`INSERT INTO ${tableName} (${allColumns.map((t) => asName(t)).join(", ")}) ` +
|
|
124
122
|
" VALUES (${values:csv}) ON CONFLICT DO NOTHING;",
|
|
125
|
-
{ values }
|
|
123
|
+
{ values },
|
|
126
124
|
);
|
|
127
125
|
});
|
|
128
126
|
const queries = [createQuery, ...dataQuerys];
|
|
@@ -169,7 +167,7 @@ const getConstraintQueries = (tableName: string, tableConf: TableConfig[string])
|
|
|
169
167
|
const getIndexQueries = (
|
|
170
168
|
tableName: string,
|
|
171
169
|
tableConf: TableConfig[string],
|
|
172
|
-
asName: (v: string) => string
|
|
170
|
+
asName: (v: string) => string,
|
|
173
171
|
) => {
|
|
174
172
|
if ("indexes" in tableConf && tableConf.indexes) {
|
|
175
173
|
/*
|
|
@@ -199,7 +197,7 @@ const getIndexQueries = (
|
|
|
199
197
|
return [`DROP INDEX IF EXISTS ${asName(indexName)};`, query];
|
|
200
198
|
}
|
|
201
199
|
return [query];
|
|
202
|
-
}
|
|
200
|
+
},
|
|
203
201
|
);
|
|
204
202
|
}
|
|
205
203
|
return [];
|
|
@@ -207,7 +205,7 @@ const getIndexQueries = (
|
|
|
207
205
|
const getTriggerQueries = (
|
|
208
206
|
tableName: string,
|
|
209
207
|
tableConfig: TableConfig[string],
|
|
210
|
-
asName: (v: string) => string
|
|
208
|
+
asName: (v: string) => string,
|
|
211
209
|
) => {
|
|
212
210
|
const { triggers } = tableConfig;
|
|
213
211
|
if (!triggers) return [];
|
|
@@ -4,7 +4,7 @@ import type { DB } from "../../initProstgles";
|
|
|
4
4
|
import { asValue } from "../../PubSubManager/PubSubManagerUtils";
|
|
5
5
|
import { executeSqlWithRollback } from "../getFutureTableSchema";
|
|
6
6
|
import { getPGIndexes } from "../getPGIndexes";
|
|
7
|
-
import type { TableConfig } from "../
|
|
7
|
+
import type { TableConfig } from "../TableConfigTypes";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Keep Postgres indexes in sync with table configuration
|
|
@@ -5,15 +5,13 @@ import {
|
|
|
5
5
|
log,
|
|
6
6
|
} from "../PubSubManager/PubSubManagerUtils";
|
|
7
7
|
import type { OnReadyCallbackBasic } from "../initProstgles";
|
|
8
|
-
import type TableConfigurator from "./TableConfig";
|
|
9
|
-
import { getConstraintDefinitionQueries } from "./getConstraintDefinitionQueries";
|
|
10
8
|
import { fetchTableConstraints } from "./fetchTableConstraints";
|
|
9
|
+
import { getConstraintDefinitionQueries } from "./getConstraintDefinitionQueries";
|
|
11
10
|
import { getFutureTableSchema } from "./getFutureTableSchema";
|
|
12
|
-
import { getPGIndexes } from "./getPGIndexes";
|
|
13
11
|
import { getTableColumnQueries } from "./getTableColumnQueries";
|
|
14
|
-
import { runMigrations } from "./runMigrations";
|
|
15
|
-
import { md5 } from "prostgles-types/dist/md5";
|
|
16
12
|
import { getIndexesQueries } from "./indexes/getIndexesQueries";
|
|
13
|
+
import { runMigrations } from "./runMigrations";
|
|
14
|
+
import type { TableConfigurator } from "./TableConfigurator";
|
|
17
15
|
|
|
18
16
|
export const initTableConfig = async function (this: TableConfigurator) {
|
|
19
17
|
this.initialising = true;
|
|
@@ -86,8 +84,9 @@ export const initTableConfig = async function (this: TableConfigurator) {
|
|
|
86
84
|
const MAX_IDENTIFIER_LENGTH = +(
|
|
87
85
|
await this.db.one<{ max_identifier_length: number }>("SHOW max_identifier_length;")
|
|
88
86
|
).max_identifier_length;
|
|
89
|
-
if (!Number.isFinite(MAX_IDENTIFIER_LENGTH))
|
|
87
|
+
if (!Number.isFinite(MAX_IDENTIFIER_LENGTH)) {
|
|
90
88
|
throw `Could not obtain a valid max_identifier_length`;
|
|
89
|
+
}
|
|
91
90
|
const asName = (v: string) => {
|
|
92
91
|
if (v.length > MAX_IDENTIFIER_LENGTH) {
|
|
93
92
|
throw `The identifier name provided (${v}) is longer than the allowed limit (max_identifier_length = ${MAX_IDENTIFIER_LENGTH} characters )\n Longest allowed: ${_asName(v.slice(0, MAX_IDENTIFIER_LENGTH))} `;
|
|
@@ -351,4 +350,6 @@ export const initTableConfig = async function (this: TableConfigurator) {
|
|
|
351
350
|
|
|
352
351
|
await this.prostgles.refreshDBO();
|
|
353
352
|
await this.setTableOnMounts();
|
|
353
|
+
/** Needed in case some onMounts change schema */
|
|
354
|
+
await this.prostgles.refreshDBO();
|
|
354
355
|
};
|
|
@@ -42,7 +42,13 @@ export async function getClientSchema(
|
|
|
42
42
|
const tablesWithSelectRules = new Set(
|
|
43
43
|
fullSchema?.tables.filter((t) => t.publishInfo.select).map((t) => t.name) ?? [],
|
|
44
44
|
);
|
|
45
|
-
const { tables = []
|
|
45
|
+
const { tables: rawTables = [] } = fullSchema ?? {};
|
|
46
|
+
const { tableSchemaErrors = {} } = fullSchema ?? {};
|
|
47
|
+
const { modifyClientSchema } = this.opts;
|
|
48
|
+
const tables =
|
|
49
|
+
modifyClientSchema ?
|
|
50
|
+
await Promise.all(rawTables.map(async (t) => modifyClientSchema(t, userData)))
|
|
51
|
+
: rawTables;
|
|
46
52
|
const joinTables2: string[][] = [];
|
|
47
53
|
if (this.opts.joins) {
|
|
48
54
|
const _joinTables2 = this.dboBuilder
|
package/lib/index.ts
CHANGED
|
@@ -16,9 +16,10 @@ export * from "./Auth/AuthTypes";
|
|
|
16
16
|
export type { PublishParams } from "./PublishParser/publishTypesAndUtils";
|
|
17
17
|
export type { DBOFullyTyped } from "./DBSchemaBuilder/DBSchemaBuilder";
|
|
18
18
|
export type { DBHandlerServer } from "./Prostgles";
|
|
19
|
-
export type { CloudClient, LocalConfig } from "./FileManager/FileManager";
|
|
19
|
+
export type { StorageClient as CloudClient, LocalConfig } from "./FileManager/FileManager";
|
|
20
|
+
export * from "./FileManager/getLocalStorageClient";
|
|
20
21
|
export type { DB } from "./initProstgles";
|
|
21
|
-
export type * from "./TableConfig/
|
|
22
|
+
export type * from "./TableConfig/TableConfigTypes";
|
|
22
23
|
export * from "./Auth/utils/upsertNamedExpressMiddleware";
|
|
23
24
|
export type { RequestWithUser } from "./Auth/middleware/userContextMiddleware";
|
|
24
25
|
export default prostgles;
|
package/lib/initProstgles.ts
CHANGED
|
@@ -111,10 +111,7 @@ export const initProstgles = async function (
|
|
|
111
111
|
reason: OnInitReason,
|
|
112
112
|
): Promise<InitResult> {
|
|
113
113
|
this.loaded = false;
|
|
114
|
-
const expressApp =
|
|
115
|
-
this.opts.fileTable?.expressApp ??
|
|
116
|
-
this.opts.restApi?.expressApp ??
|
|
117
|
-
this.opts.auth?.loginSignupConfig?.app;
|
|
114
|
+
const expressApp = this.opts.expressApp ?? this.opts.auth?.loginSignupConfig?.app;
|
|
118
115
|
|
|
119
116
|
/** Crucial in ensuring the runtime version of express works as expected */
|
|
120
117
|
if (expressApp) {
|
|
@@ -193,7 +190,7 @@ export const initProstgles = async function (
|
|
|
193
190
|
await runSQLFile(this);
|
|
194
191
|
await this.refreshDBO();
|
|
195
192
|
await this.initTableConfig(reason);
|
|
196
|
-
await this.
|
|
193
|
+
await this.refreshDBO();
|
|
197
194
|
this.initRestApi();
|
|
198
195
|
|
|
199
196
|
this.schemaWatch = await SchemaWatch.create(this.dboBuilder);
|
|
@@ -274,7 +271,6 @@ export const initProstgles = async function (
|
|
|
274
271
|
this.opts.io.engine.close();
|
|
275
272
|
}
|
|
276
273
|
}
|
|
277
|
-
this.fileManager?.destroy();
|
|
278
274
|
await this.dboBuilder.destroy();
|
|
279
275
|
this.authHandler.destroy();
|
|
280
276
|
await this.tableConfigurator?.destroy();
|
package/lib/runClientRequest.ts
CHANGED
|
@@ -24,9 +24,6 @@ export const updateConfiguration = async <DBSchema, UserSchema extends SessionUs
|
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
if (includes(optionsThatChanged, "fileTable")) {
|
|
28
|
-
await prgl.initFileTable();
|
|
29
|
-
}
|
|
30
27
|
if (includes(optionsThatChanged, "restApi")) {
|
|
31
28
|
prgl.initRestApi();
|
|
32
29
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prostgles-server",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.569",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"pg": "^8.21.0",
|
|
58
58
|
"pg-cursor": "^2.21.0",
|
|
59
59
|
"pg-promise": "^12.7.0",
|
|
60
|
-
"prostgles-types": "^4.0.
|
|
60
|
+
"prostgles-types": "^4.0.273"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@eslint/js": "^9.22.0",
|
|
@@ -69,7 +69,6 @@
|
|
|
69
69
|
"@types/pg-cursor": "^2.7.2",
|
|
70
70
|
"@types/sharp": "^0.30.5",
|
|
71
71
|
"eslint": "^9.39.5",
|
|
72
|
-
"eslint-plugin-security": "^3.0.1",
|
|
73
72
|
"prettier": "^3.9.5",
|
|
74
73
|
"socket.io": "^4.8.3",
|
|
75
74
|
"typescript": "^5.9.3",
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { Prostgles } from "../Prostgles";
|
|
2
|
-
import type { SchemaRelatedOptions } from "../TableConfig/getCreateSchemaQueries";
|
|
3
|
-
import type { FileManager } from "./FileManager";
|
|
4
|
-
export declare const getFileManagerSchema: ({ fileTable, tableConfig, }: Pick<SchemaRelatedOptions, "fileTable" | "tableConfig">) => {
|
|
5
|
-
fileTable: import("../ProstglesTypes").FileTableConfig;
|
|
6
|
-
fileTableName: string;
|
|
7
|
-
fileTableQuery: string;
|
|
8
|
-
referencedTables: {
|
|
9
|
-
[tableName: string]: {
|
|
10
|
-
type: "column";
|
|
11
|
-
referenceColumns: Record<string, import("prostgles-types").FileColumnConfig>;
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
referencedTablesQueries: string[];
|
|
15
|
-
queries: string[];
|
|
16
|
-
} | undefined;
|
|
17
|
-
export declare function initFileManager(this: FileManager, prg: Prostgles): Promise<void>;
|
|
18
|
-
//# sourceMappingURL=initFileManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"initFileManager.d.ts","sourceRoot":"","sources":["../../lib/FileManager/initFileManager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAElF,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,eAAe,CAAC;AAI9D,eAAO,MAAM,oBAAoB,GAAI,6BAGlC,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,aAAa,CAAC;;;;;;;;;;;;aAsDzD,CAAC;AAEF,wBAAsB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,iBAqLtE"}
|