prostgles-server 4.2.467 → 4.2.469
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/DboBuilder.d.ts +24 -23
- package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/DboBuilder.js +4 -8
- package/dist/DboBuilder/DboBuilder.js.map +1 -1
- package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
- package/dist/DboBuilder/QueryStreamer.js +2 -5
- package/dist/DboBuilder/QueryStreamer.js.map +1 -1
- package/dist/DboBuilder/TableHandler/DataValidator.d.ts +2 -2
- package/dist/DboBuilder/TableHandler/DataValidator.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/DataValidator.js +2 -0
- package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insert.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insert.js +4 -0
- package/dist/DboBuilder/TableHandler/insert/insert.js.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +3 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
- package/dist/DboBuilder/TableHandler/update.js +1 -1
- package/dist/DboBuilder/TableHandler/update.js.map +1 -1
- package/dist/DboBuilder/runSql/runSQL.d.ts +20 -1
- package/dist/DboBuilder/runSql/runSQL.d.ts.map +1 -1
- package/dist/DboBuilder/runSql/runSQL.js +5 -11
- package/dist/DboBuilder/runSql/runSQL.js.map +1 -1
- package/dist/DboBuilder/runSql/runSqlUtils.d.ts +7 -7
- package/dist/DboBuilder/runSql/runSqlUtils.d.ts.map +1 -1
- package/dist/DboBuilder/runSql/runSqlUtils.js +9 -6
- package/dist/DboBuilder/runSql/runSqlUtils.js.map +1 -1
- package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
- package/dist/DboBuilder/uploadFile.js +2 -0
- package/dist/DboBuilder/uploadFile.js.map +1 -1
- package/dist/Filtering.d.ts +1 -1
- package/dist/PublishParser/publishTypesAndUtils.d.ts +12 -6
- package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
- package/dist/TableConfig/TableConfig.d.ts +3 -3
- package/dist/TableConfig/TableConfig.d.ts.map +1 -1
- package/dist/TableConfig/TableConfig.js.map +1 -1
- package/dist/TableConfig/getCreateSchemaQueries.d.ts +2 -2
- package/dist/TableConfig/getCreateSchemaQueries.d.ts.map +1 -1
- package/dist/TableConfig/getTableConfigSchemaQueries.d.ts +2 -2
- package/dist/TableConfig/getTableConfigSchemaQueries.d.ts.map +1 -1
- package/lib/DboBuilder/DboBuilder.ts +6 -32
- package/lib/DboBuilder/QueryStreamer.ts +2 -8
- package/lib/DboBuilder/TableHandler/DataValidator.ts +4 -2
- package/lib/DboBuilder/TableHandler/insert/insert.ts +4 -0
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +5 -2
- package/lib/DboBuilder/TableHandler/update.ts +1 -1
- package/lib/DboBuilder/runSql/runSQL.ts +5 -15
- package/lib/DboBuilder/runSql/runSqlUtils.ts +13 -10
- package/lib/DboBuilder/uploadFile.ts +7 -5
- package/lib/PublishParser/publishTypesAndUtils.ts +16 -6
- package/lib/TableConfig/TableConfig.ts +6 -3
- package/package.json +1 -1
|
@@ -3,11 +3,11 @@ import { postgresToTsType, type PG_COLUMN_UDT_DATA_TYPE } from "prostgles-types"
|
|
|
3
3
|
import type { DB } from "../../Prostgles";
|
|
4
4
|
|
|
5
5
|
export const getDbTypes = async (db: DB) => {
|
|
6
|
-
const
|
|
6
|
+
const dataTypes = await db.any<{
|
|
7
7
|
oid: number;
|
|
8
8
|
typname: PG_COLUMN_UDT_DATA_TYPE;
|
|
9
9
|
}>("SELECT oid, typname FROM pg_type");
|
|
10
|
-
const
|
|
10
|
+
const userTables = await db.any<{
|
|
11
11
|
relid: number;
|
|
12
12
|
relname: string;
|
|
13
13
|
schemaname: string;
|
|
@@ -29,7 +29,9 @@ export const getDbTypes = async (db: DB) => {
|
|
|
29
29
|
ON t.relid = c.table_oid
|
|
30
30
|
GROUP BY relid, relname, schemaname
|
|
31
31
|
`);
|
|
32
|
-
const
|
|
32
|
+
const dataTypesMap = new Map(dataTypes.map((dt) => [Number(dt.oid), dt]));
|
|
33
|
+
const userTablesMap = new Map(userTables.map((t) => [Number(t.relid), t]));
|
|
34
|
+
const userTableColumns = await db.any<{
|
|
33
35
|
relid: number;
|
|
34
36
|
schemaname: string;
|
|
35
37
|
relname: string;
|
|
@@ -42,19 +44,20 @@ export const getDbTypes = async (db: DB) => {
|
|
|
42
44
|
INNER JOIN pg_catalog.pg_statio_user_tables t
|
|
43
45
|
ON c.table_schema = t.schemaname AND c.table_name = t.relname
|
|
44
46
|
`);
|
|
45
|
-
|
|
47
|
+
const userTableColumnsMap = new Map(
|
|
48
|
+
userTableColumns.map((c) => [[c.relid, c.ordinal_position].join("-"), c]),
|
|
49
|
+
);
|
|
50
|
+
return { dataTypesMap, userTablesMap, userTableColumnsMap };
|
|
46
51
|
};
|
|
47
52
|
|
|
48
53
|
export const getDetailedFieldInfo = (
|
|
49
|
-
{
|
|
54
|
+
{ dataTypesMap, userTablesMap, userTableColumnsMap }: Awaited<ReturnType<typeof getDbTypes>>,
|
|
50
55
|
fields: pg.IColumn[],
|
|
51
56
|
) => {
|
|
52
57
|
return fields.map((f) => {
|
|
53
|
-
const dataType =
|
|
54
|
-
table =
|
|
55
|
-
column =
|
|
56
|
-
(c) => +c.relid === +f.tableID && c.ordinal_position === f.columnID,
|
|
57
|
-
),
|
|
58
|
+
const dataType = dataTypesMap.get(+f.dataTypeID)?.typname ?? "text",
|
|
59
|
+
table = userTablesMap.get(+f.tableID),
|
|
60
|
+
column = userTableColumnsMap.get([f.tableID, f.columnID].join("-")),
|
|
58
61
|
tsDataType = postgresToTsType(dataType);
|
|
59
62
|
|
|
60
63
|
return {
|
|
@@ -7,11 +7,11 @@ import type { TableHandler } from "./TableHandler/TableHandler";
|
|
|
7
7
|
export const isFile = (row: any): row is { data: Buffer; name: string } => {
|
|
8
8
|
return Boolean(
|
|
9
9
|
row &&
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
isObject(row) &&
|
|
11
|
+
getKeys(row).sort().join() === ["name", "data"].sort().join() &&
|
|
12
|
+
row.data &&
|
|
13
|
+
(typeof row.data === "string" || Buffer.isBuffer(row.data)) &&
|
|
14
|
+
typeof row.name === "string",
|
|
15
15
|
);
|
|
16
16
|
};
|
|
17
17
|
|
|
@@ -66,6 +66,8 @@ export async function uploadFile(
|
|
|
66
66
|
row: media,
|
|
67
67
|
dbx: this.getFinalDbo(localParams),
|
|
68
68
|
localParams,
|
|
69
|
+
command: "insert",
|
|
70
|
+
data: media,
|
|
69
71
|
});
|
|
70
72
|
const missingKeys = parsedMediaKeys.filter((k) => !parsedMedia[k]);
|
|
71
73
|
if (missingKeys.length) {
|
|
@@ -177,12 +177,22 @@ export type UpdateRequestData<R extends AnyObject = AnyObject> =
|
|
|
177
177
|
| UpdateRequestDataOne<R>
|
|
178
178
|
| UpdateRequestDataBatch<R>;
|
|
179
179
|
|
|
180
|
-
export type
|
|
180
|
+
export type ValidateRowArgsCommon<R = AnyObject, DBX = DBHandlerServer> = {
|
|
181
181
|
row: R;
|
|
182
182
|
dbx: DBX;
|
|
183
183
|
tx: pgPromise.ITask<{}> | DB;
|
|
184
184
|
localParams: LocalParams;
|
|
185
|
-
}
|
|
185
|
+
} & (
|
|
186
|
+
| {
|
|
187
|
+
command: "insert";
|
|
188
|
+
data: R | R[];
|
|
189
|
+
}
|
|
190
|
+
| {
|
|
191
|
+
command: "update";
|
|
192
|
+
data: R | Partial<R>;
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
|
|
186
196
|
export type ValidateUpdateRowArgs<U = Partial<AnyObject>, F = Filter, DBX = DBHandlerServer> = {
|
|
187
197
|
update: U;
|
|
188
198
|
filter: F;
|
|
@@ -190,13 +200,13 @@ export type ValidateUpdateRowArgs<U = Partial<AnyObject>, F = Filter, DBX = DBHa
|
|
|
190
200
|
localParams: LocalParams;
|
|
191
201
|
};
|
|
192
202
|
export type ValidateRow<R extends AnyObject = AnyObject, S = void> = (
|
|
193
|
-
args:
|
|
203
|
+
args: ValidateRowArgsCommon<R, DBOFullyTyped<S>>,
|
|
194
204
|
) => R | Promise<R>;
|
|
195
205
|
export type PostValidateRow<R extends AnyObject = AnyObject, S = void> = (
|
|
196
|
-
args:
|
|
206
|
+
args: ValidateRowArgsCommon<R, DBOFullyTyped<S>>,
|
|
197
207
|
) => void | Promise<void>;
|
|
198
|
-
export type PostValidateRowBasic = (args:
|
|
199
|
-
export type ValidateRowBasic = (args:
|
|
208
|
+
export type PostValidateRowBasic = (args: ValidateRowArgsCommon) => void | Promise<void>;
|
|
209
|
+
export type ValidateRowBasic = (args: ValidateRowArgsCommon) => AnyObject | Promise<AnyObject>;
|
|
200
210
|
export type ValidateUpdateRow<R extends AnyObject = AnyObject, S extends DBSchema | void = void> = (
|
|
201
211
|
args: ValidateUpdateRowArgs<Partial<R>, FullFilter<R, S>, DBOFullyTyped<S>>,
|
|
202
212
|
) => Partial<R> | Promise<Partial<R>>;
|
|
@@ -12,7 +12,7 @@ import type { JoinInfo, LocalParams } from "../DboBuilder/DboBuilder";
|
|
|
12
12
|
import type { TableHandler } from "../DboBuilder/TableHandler/TableHandler";
|
|
13
13
|
import { uploadFile } from "../DboBuilder/uploadFile";
|
|
14
14
|
import type { DB, DBHandlerServer, Prostgles } from "../Prostgles";
|
|
15
|
-
import type { InsertRule,
|
|
15
|
+
import type { InsertRule, ValidateRowArgsCommon } from "../PublishParser/PublishParser";
|
|
16
16
|
import { initTableConfig } from "./initTableConfig";
|
|
17
17
|
|
|
18
18
|
type ColExtraInfo = {
|
|
@@ -317,7 +317,7 @@ export type TableDefinition<LANG_IDS> = {
|
|
|
317
317
|
};
|
|
318
318
|
};
|
|
319
319
|
|
|
320
|
-
type GetPreInsertRowArgs = Omit<
|
|
320
|
+
type GetPreInsertRowArgs = Omit<ValidateRowArgsCommon, "localParams"> & {
|
|
321
321
|
// preValidate: InsertRule["preValidate"];
|
|
322
322
|
validate: InsertRule["validate"];
|
|
323
323
|
localParams: LocalParams | undefined;
|
|
@@ -486,7 +486,10 @@ export default class TableConfigurator {
|
|
|
486
486
|
|
|
487
487
|
getPreInsertRow = async (
|
|
488
488
|
tableHandler: TableHandler,
|
|
489
|
-
args: Pick<
|
|
489
|
+
args: Pick<
|
|
490
|
+
GetPreInsertRowArgs,
|
|
491
|
+
"localParams" | "row" | "validate" | "dbx" | "tx" | "command" | "data"
|
|
492
|
+
>,
|
|
490
493
|
): Promise<AnyObject> => {
|
|
491
494
|
const tableHook = this.config[tableHandler.name]?.hooks?.getPreInsertRow;
|
|
492
495
|
if (tableHandler.is_media) {
|