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.
Files changed (54) hide show
  1. package/dist/DboBuilder/DboBuilder.d.ts +24 -23
  2. package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
  3. package/dist/DboBuilder/DboBuilder.js +4 -8
  4. package/dist/DboBuilder/DboBuilder.js.map +1 -1
  5. package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
  6. package/dist/DboBuilder/QueryStreamer.js +2 -5
  7. package/dist/DboBuilder/QueryStreamer.js.map +1 -1
  8. package/dist/DboBuilder/TableHandler/DataValidator.d.ts +2 -2
  9. package/dist/DboBuilder/TableHandler/DataValidator.d.ts.map +1 -1
  10. package/dist/DboBuilder/TableHandler/DataValidator.js +2 -0
  11. package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
  12. package/dist/DboBuilder/TableHandler/insert/insert.d.ts.map +1 -1
  13. package/dist/DboBuilder/TableHandler/insert/insert.js +4 -0
  14. package/dist/DboBuilder/TableHandler/insert/insert.js.map +1 -1
  15. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts +1 -1
  16. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
  17. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +3 -1
  18. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
  19. package/dist/DboBuilder/TableHandler/update.js +1 -1
  20. package/dist/DboBuilder/TableHandler/update.js.map +1 -1
  21. package/dist/DboBuilder/runSql/runSQL.d.ts +20 -1
  22. package/dist/DboBuilder/runSql/runSQL.d.ts.map +1 -1
  23. package/dist/DboBuilder/runSql/runSQL.js +5 -11
  24. package/dist/DboBuilder/runSql/runSQL.js.map +1 -1
  25. package/dist/DboBuilder/runSql/runSqlUtils.d.ts +7 -7
  26. package/dist/DboBuilder/runSql/runSqlUtils.d.ts.map +1 -1
  27. package/dist/DboBuilder/runSql/runSqlUtils.js +9 -6
  28. package/dist/DboBuilder/runSql/runSqlUtils.js.map +1 -1
  29. package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
  30. package/dist/DboBuilder/uploadFile.js +2 -0
  31. package/dist/DboBuilder/uploadFile.js.map +1 -1
  32. package/dist/Filtering.d.ts +1 -1
  33. package/dist/PublishParser/publishTypesAndUtils.d.ts +12 -6
  34. package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
  35. package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
  36. package/dist/TableConfig/TableConfig.d.ts +3 -3
  37. package/dist/TableConfig/TableConfig.d.ts.map +1 -1
  38. package/dist/TableConfig/TableConfig.js.map +1 -1
  39. package/dist/TableConfig/getCreateSchemaQueries.d.ts +2 -2
  40. package/dist/TableConfig/getCreateSchemaQueries.d.ts.map +1 -1
  41. package/dist/TableConfig/getTableConfigSchemaQueries.d.ts +2 -2
  42. package/dist/TableConfig/getTableConfigSchemaQueries.d.ts.map +1 -1
  43. package/lib/DboBuilder/DboBuilder.ts +6 -32
  44. package/lib/DboBuilder/QueryStreamer.ts +2 -8
  45. package/lib/DboBuilder/TableHandler/DataValidator.ts +4 -2
  46. package/lib/DboBuilder/TableHandler/insert/insert.ts +4 -0
  47. package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +5 -2
  48. package/lib/DboBuilder/TableHandler/update.ts +1 -1
  49. package/lib/DboBuilder/runSql/runSQL.ts +5 -15
  50. package/lib/DboBuilder/runSql/runSqlUtils.ts +13 -10
  51. package/lib/DboBuilder/uploadFile.ts +7 -5
  52. package/lib/PublishParser/publishTypesAndUtils.ts +16 -6
  53. package/lib/TableConfig/TableConfig.ts +6 -3
  54. 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 DATA_TYPES = await db.any<{
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 USER_TABLES = await db.any<{
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 USER_TABLE_COLUMNS = await db.any<{
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
- return { DATA_TYPES, USER_TABLES, USER_TABLE_COLUMNS };
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
- { DATA_TYPES, USER_TABLES, USER_TABLE_COLUMNS }: Awaited<ReturnType<typeof getDbTypes>>,
54
+ { dataTypesMap, userTablesMap, userTableColumnsMap }: Awaited<ReturnType<typeof getDbTypes>>,
50
55
  fields: pg.IColumn[],
51
56
  ) => {
52
57
  return fields.map((f) => {
53
- const dataType = DATA_TYPES.find((dt) => +dt.oid === +f.dataTypeID)?.typname ?? "text",
54
- table = USER_TABLES.find((t) => +t.relid === +f.tableID),
55
- column = USER_TABLE_COLUMNS.find(
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
- 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",
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 ValidateRowArgs<R = AnyObject, DBX = DBHandlerServer> = {
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: ValidateRowArgs<R, DBOFullyTyped<S>>,
203
+ args: ValidateRowArgsCommon<R, DBOFullyTyped<S>>,
194
204
  ) => R | Promise<R>;
195
205
  export type PostValidateRow<R extends AnyObject = AnyObject, S = void> = (
196
- args: ValidateRowArgs<R, DBOFullyTyped<S>>,
206
+ args: ValidateRowArgsCommon<R, DBOFullyTyped<S>>,
197
207
  ) => void | Promise<void>;
198
- export type PostValidateRowBasic = (args: ValidateRowArgs) => void | Promise<void>;
199
- export type ValidateRowBasic = (args: ValidateRowArgs) => AnyObject | Promise<AnyObject>;
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, ValidateRowArgs } from "../PublishParser/PublishParser";
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<ValidateRowArgs, "localParams"> & {
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<GetPreInsertRowArgs, "localParams" | "row" | "validate" | "dbx" | "tx">,
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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "4.2.467",
3
+ "version": "4.2.469",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",