prostgles-server 3.0.87 → 3.0.89

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 (212) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.json +30 -0
  3. package/dist/DBEventsManager.js +1 -1
  4. package/dist/DBEventsManager.js.map +1 -1
  5. package/dist/DBSchemaBuilder.d.ts.map +1 -1
  6. package/dist/DBSchemaBuilder.js +6 -6
  7. package/dist/DBSchemaBuilder.js.map +1 -1
  8. package/dist/DboBuilder/QueryBuilder/Functions.js +9 -9
  9. package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
  10. package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
  11. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +8 -7
  12. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
  13. package/dist/DboBuilder/QueryBuilder/makeSelectQuery.d.ts.map +1 -1
  14. package/dist/DboBuilder/QueryBuilder/makeSelectQuery.js +4 -4
  15. package/dist/DboBuilder/QueryBuilder/makeSelectQuery.js.map +1 -1
  16. package/dist/DboBuilder/TableHandler.d.ts.map +1 -1
  17. package/dist/DboBuilder/TableHandler.js +18 -20
  18. package/dist/DboBuilder/TableHandler.js.map +1 -1
  19. package/dist/DboBuilder/ViewHandler.d.ts +0 -10
  20. package/dist/DboBuilder/ViewHandler.d.ts.map +1 -1
  21. package/dist/DboBuilder/ViewHandler.js +50 -63
  22. package/dist/DboBuilder/ViewHandler.js.map +1 -1
  23. package/dist/DboBuilder/delete.js +0 -1
  24. package/dist/DboBuilder/delete.js.map +1 -1
  25. package/dist/DboBuilder/getColumns.js +5 -4
  26. package/dist/DboBuilder/getColumns.js.map +1 -1
  27. package/dist/DboBuilder/getCondition.d.ts.map +1 -1
  28. package/dist/DboBuilder/getCondition.js +6 -6
  29. package/dist/DboBuilder/getCondition.js.map +1 -1
  30. package/dist/DboBuilder/insert.js +15 -16
  31. package/dist/DboBuilder/insert.js.map +1 -1
  32. package/dist/DboBuilder/insertDataParse.d.ts.map +1 -1
  33. package/dist/DboBuilder/insertDataParse.js +9 -10
  34. package/dist/DboBuilder/insertDataParse.js.map +1 -1
  35. package/dist/DboBuilder/parseUpdateRules.js +2 -2
  36. package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
  37. package/dist/DboBuilder/runSQL.d.ts.map +1 -1
  38. package/dist/DboBuilder/runSQL.js +5 -5
  39. package/dist/DboBuilder/runSQL.js.map +1 -1
  40. package/dist/DboBuilder/subscribe.js +3 -3
  41. package/dist/DboBuilder/subscribe.js.map +1 -1
  42. package/dist/DboBuilder/update.js +5 -6
  43. package/dist/DboBuilder/update.js.map +1 -1
  44. package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
  45. package/dist/DboBuilder/uploadFile.js +1 -1
  46. package/dist/DboBuilder/uploadFile.js.map +1 -1
  47. package/dist/DboBuilder.d.ts.map +1 -1
  48. package/dist/DboBuilder.js +13 -14
  49. package/dist/DboBuilder.js.map +1 -1
  50. package/dist/FileManager.d.ts.map +1 -1
  51. package/dist/FileManager.js +3 -5
  52. package/dist/FileManager.js.map +1 -1
  53. package/dist/Filtering.js +7 -7
  54. package/dist/Filtering.js.map +1 -1
  55. package/dist/JSONBValidation/validate_jsonb_schema_sql.d.ts +3 -0
  56. package/dist/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +1 -0
  57. package/dist/JSONBValidation/validate_jsonb_schema_sql.js +295 -0
  58. package/dist/JSONBValidation/validate_jsonb_schema_sql.js.map +1 -0
  59. package/dist/JSONBValidation/validation.d.ts +108 -0
  60. package/dist/JSONBValidation/validation.d.ts.map +1 -0
  61. package/dist/JSONBValidation/validation.js +222 -0
  62. package/dist/JSONBValidation/validation.js.map +1 -0
  63. package/dist/PostgresNotifListenManager.js +1 -1
  64. package/dist/PostgresNotifListenManager.js.map +1 -1
  65. package/dist/Prostgles.d.ts.map +1 -1
  66. package/dist/Prostgles.js +20 -20
  67. package/dist/Prostgles.js.map +1 -1
  68. package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
  69. package/dist/PubSubManager/initPubSubManager.js +10 -7
  70. package/dist/PubSubManager/initPubSubManager.js.map +1 -1
  71. package/dist/PublishParser.d.ts.map +1 -1
  72. package/dist/PublishParser.js +122 -125
  73. package/dist/PublishParser.js.map +1 -1
  74. package/dist/SyncReplication.d.ts.map +1 -1
  75. package/dist/SyncReplication.js +19 -16
  76. package/dist/SyncReplication.js.map +1 -1
  77. package/dist/TableConfig.d.ts +9 -5
  78. package/dist/TableConfig.d.ts.map +1 -1
  79. package/dist/TableConfig.js +33 -12
  80. package/dist/TableConfig.js.map +1 -1
  81. package/dist/index.js +1 -1
  82. package/dist/index.js.map +1 -1
  83. package/dist/shortestPath.js +11 -11
  84. package/dist/shortestPath.js.map +1 -1
  85. package/dist/validation.d.ts +50 -24
  86. package/dist/validation.d.ts.map +1 -1
  87. package/dist/validation.js +177 -53
  88. package/dist/validation.js.map +1 -1
  89. package/lib/AuthHandler.d.ts +11 -11
  90. package/lib/AuthHandler.d.ts.map +1 -1
  91. package/lib/DBEventsManager.js +1 -1
  92. package/lib/DBEventsManager.ts +1 -1
  93. package/lib/DBSchemaBuilder.d.ts +3 -3
  94. package/lib/DBSchemaBuilder.d.ts.map +1 -1
  95. package/lib/DBSchemaBuilder.js +6 -6
  96. package/lib/DBSchemaBuilder.ts +10 -12
  97. package/lib/DboBuilder/QueryBuilder/Functions.d.ts +3 -3
  98. package/lib/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
  99. package/lib/DboBuilder/QueryBuilder/Functions.js +9 -9
  100. package/lib/DboBuilder/QueryBuilder/Functions.ts +13 -13
  101. package/lib/DboBuilder/QueryBuilder/QueryBuilder.d.ts +3 -3
  102. package/lib/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
  103. package/lib/DboBuilder/QueryBuilder/QueryBuilder.js +8 -7
  104. package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +12 -12
  105. package/lib/DboBuilder/QueryBuilder/makeSelectQuery.d.ts.map +1 -1
  106. package/lib/DboBuilder/QueryBuilder/makeSelectQuery.js +4 -4
  107. package/lib/DboBuilder/QueryBuilder/makeSelectQuery.ts +5 -5
  108. package/lib/DboBuilder/TableHandler.d.ts +1 -1
  109. package/lib/DboBuilder/TableHandler.d.ts.map +1 -1
  110. package/lib/DboBuilder/TableHandler.js +18 -20
  111. package/lib/DboBuilder/TableHandler.ts +21 -20
  112. package/lib/DboBuilder/ViewHandler.d.ts +1 -11
  113. package/lib/DboBuilder/ViewHandler.d.ts.map +1 -1
  114. package/lib/DboBuilder/ViewHandler.js +50 -63
  115. package/lib/DboBuilder/ViewHandler.ts +68 -97
  116. package/lib/DboBuilder/delete.js +0 -1
  117. package/lib/DboBuilder/delete.ts +1 -1
  118. package/lib/DboBuilder/getColumns.js +5 -4
  119. package/lib/DboBuilder/getColumns.ts +5 -5
  120. package/lib/DboBuilder/getCondition.d.ts.map +1 -1
  121. package/lib/DboBuilder/getCondition.js +6 -6
  122. package/lib/DboBuilder/getCondition.ts +7 -7
  123. package/lib/DboBuilder/insert.js +15 -16
  124. package/lib/DboBuilder/insert.ts +18 -18
  125. package/lib/DboBuilder/insertDataParse.d.ts.map +1 -1
  126. package/lib/DboBuilder/insertDataParse.js +9 -10
  127. package/lib/DboBuilder/insertDataParse.ts +42 -43
  128. package/lib/DboBuilder/parseUpdateRules.js +2 -2
  129. package/lib/DboBuilder/parseUpdateRules.ts +2 -2
  130. package/lib/DboBuilder/runSQL.d.ts.map +1 -1
  131. package/lib/DboBuilder/runSQL.js +5 -5
  132. package/lib/DboBuilder/runSQL.ts +6 -6
  133. package/lib/DboBuilder/subscribe.d.ts +1 -1
  134. package/lib/DboBuilder/subscribe.d.ts.map +1 -1
  135. package/lib/DboBuilder/subscribe.js +3 -3
  136. package/lib/DboBuilder/subscribe.ts +3 -3
  137. package/lib/DboBuilder/update.js +5 -6
  138. package/lib/DboBuilder/update.ts +6 -6
  139. package/lib/DboBuilder/uploadFile.d.ts.map +1 -1
  140. package/lib/DboBuilder/uploadFile.js +1 -1
  141. package/lib/DboBuilder/uploadFile.ts +2 -2
  142. package/lib/DboBuilder.d.ts +22 -22
  143. package/lib/DboBuilder.d.ts.map +1 -1
  144. package/lib/DboBuilder.js +13 -14
  145. package/lib/DboBuilder.ts +19 -19
  146. package/lib/FileManager.d.ts +6 -6
  147. package/lib/FileManager.d.ts.map +1 -1
  148. package/lib/FileManager.js +3 -5
  149. package/lib/FileManager.ts +7 -6
  150. package/lib/Filtering.d.ts +1 -1
  151. package/lib/Filtering.d.ts.map +1 -1
  152. package/lib/Filtering.js +7 -7
  153. package/lib/Filtering.ts +7 -7
  154. package/lib/JSONBValidation/validate_jsonb_schema_sql.d.ts +3 -0
  155. package/lib/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +1 -0
  156. package/lib/JSONBValidation/validate_jsonb_schema_sql.js +294 -0
  157. package/lib/JSONBValidation/validate_jsonb_schema_sql.ts +293 -0
  158. package/lib/JSONBValidation/validation.d.ts +108 -0
  159. package/lib/JSONBValidation/validation.d.ts.map +1 -0
  160. package/lib/JSONBValidation/validation.js +221 -0
  161. package/lib/JSONBValidation/validation.ts +332 -0
  162. package/lib/PostgresNotifListenManager.d.ts +1 -1
  163. package/lib/PostgresNotifListenManager.d.ts.map +1 -1
  164. package/lib/PostgresNotifListenManager.js +1 -1
  165. package/lib/PostgresNotifListenManager.ts +1 -1
  166. package/lib/Prostgles.d.ts +14 -14
  167. package/lib/Prostgles.d.ts.map +1 -1
  168. package/lib/Prostgles.js +20 -20
  169. package/lib/Prostgles.ts +22 -21
  170. package/lib/PubSubManager/PubSubManager.d.ts +7 -7
  171. package/lib/PubSubManager/PubSubManager.d.ts.map +1 -1
  172. package/lib/PubSubManager/initPubSubManager.d.ts.map +1 -1
  173. package/lib/PubSubManager/initPubSubManager.js +10 -7
  174. package/lib/PubSubManager/initPubSubManager.ts +12 -7
  175. package/lib/PublishParser.d.ts +32 -32
  176. package/lib/PublishParser.d.ts.map +1 -1
  177. package/lib/PublishParser.js +121 -124
  178. package/lib/PublishParser.ts +125 -127
  179. package/lib/SchemaWatch.d.ts +1 -1
  180. package/lib/SchemaWatch.d.ts.map +1 -1
  181. package/lib/SyncReplication.d.ts +5 -5
  182. package/lib/SyncReplication.d.ts.map +1 -1
  183. package/lib/SyncReplication.js +19 -16
  184. package/lib/SyncReplication.ts +470 -471
  185. package/lib/TableConfig.d.ts +28 -24
  186. package/lib/TableConfig.d.ts.map +1 -1
  187. package/lib/TableConfig.js +33 -12
  188. package/lib/TableConfig.ts +55 -21
  189. package/lib/index.js +1 -1
  190. package/lib/index.ts +1 -1
  191. package/lib/shortestPath.d.ts +1 -1
  192. package/lib/shortestPath.d.ts.map +1 -1
  193. package/lib/shortestPath.js +11 -11
  194. package/lib/shortestPath.ts +11 -11
  195. package/package.json +10 -6
  196. package/tests/client/PID.txt +1 -1
  197. package/tests/client/package-lock.json +53 -31
  198. package/tests/client/package.json +4 -1
  199. package/tests/isomorphic_queries.d.ts +4 -1
  200. package/tests/isomorphic_queries.d.ts.map +1 -1
  201. package/tests/isomorphic_queries.js +38 -30
  202. package/tests/isomorphic_queries.ts +40 -33
  203. package/tests/server/DBoGenerated.d.ts +1 -1
  204. package/tests/server/index.js +8 -7
  205. package/tests/server/index.ts +10 -8
  206. package/tests/server/package-lock.json +76 -58
  207. package/tests/server/package.json +2 -2
  208. package/tests/server/server.ts +2 -3
  209. package/lib/validation.d.ts +0 -100
  210. package/lib/validation.d.ts.map +0 -1
  211. package/lib/validation.js +0 -280
  212. package/lib/validation.ts +0 -360
@@ -3,11 +3,11 @@ import prostgles from ".";
3
3
  import { Auth } from "./AuthHandler";
4
4
  import { DBHandlerServer, DboBuilder, escapeTSNames, postgresToTsType } from "./DboBuilder";
5
5
  import { PublishAllOrNothing, PublishParams, PublishTableRule, PublishViewRule, } from "./PublishParser";
6
- import { getJSONBSchemaTSTypes } from "./validation";
6
+ import { getJSONBSchemaTSTypes, JSONB } from "./JSONBValidation/validation";
7
7
 
8
8
 
9
9
  export const getDBSchema = (dboBuilder: DboBuilder): string => {
10
- let tables: string[] = [];
10
+ const tables: string[] = [];
11
11
 
12
12
 
13
13
  /** Tables and columns are sorted to avoid infinite loops due to changing order */
@@ -17,9 +17,10 @@ export const getDBSchema = (dboBuilder: DboBuilder): string => {
17
17
  let type: string = (c.is_nullable? "null | " : "") + postgresToTsType(c.udt_name) + ";"
18
18
  const colConf = dboBuilder.prostgles.tableConfigurator?.getColumnConfig(tov.name, c.name);
19
19
  if(colConf){
20
- if(isObject(colConf) && "jsonbSchema" in colConf){
21
- if(!colConf.jsonbSchema) throw "colConf.jsonbSchema missing"
22
- type = getJSONBSchemaTSTypes(colConf.jsonbSchema, { nullable: colConf.nullable }, " ");
20
+ if(isObject(colConf) && (colConf.jsonbSchema || colConf.jsonbSchemaType)){
21
+ const schema: JSONB.JSONBSchema = colConf.jsonbSchema? colConf.jsonbSchema : { ...colConf, type: colConf.jsonbSchemaType }
22
+ // if(!colConf.jsonbSchema) throw "colConf.jsonbSchema missing";
23
+ type = getJSONBSchemaTSTypes(schema, { nullable: colConf.nullable }, " ");
23
24
  } else if(isObject(colConf) && "enum" in colConf){
24
25
  if(!colConf.enum) throw "colConf.enum missing"
25
26
  const types = colConf.enum.map(t => typeof t === "number"? t : JSON.stringify(t));
@@ -60,9 +61,6 @@ export type DBOFullyTyped<Schema = void> = Schema extends DBSchema? (
60
61
  ) :
61
62
  DBHandlerServer;
62
63
 
63
-
64
-
65
-
66
64
  export type PublishFullyTyped<Schema = void> = Schema extends DBSchema? (
67
65
  | PublishAllOrNothing
68
66
  | {
@@ -101,7 +99,7 @@ export type PublishFullyTyped<Schema = void> = Schema extends DBSchema? (
101
99
  publish: async (params) => {
102
100
  const row = await params.dbo.dwadwa.find?.({});
103
101
 
104
- return "*" as "*"
102
+ return "*" as const
105
103
  },
106
104
  onReady: (dbo) => {
107
105
  dbo.tdwa.find!()
@@ -151,7 +149,7 @@ export type PublishFullyTyped<Schema = void> = Schema extends DBSchema? (
151
149
  const r = {
152
150
  tbl1: {
153
151
  select: {
154
- fields: "*" as "*",
152
+ fields: "*" as const,
155
153
  forcedFilter: { col1: 32, col2: "" }
156
154
  },
157
155
  getColumns: true,
@@ -162,7 +160,7 @@ export type PublishFullyTyped<Schema = void> = Schema extends DBSchema? (
162
160
  },
163
161
  tbl2: {
164
162
  delete: {
165
- filterFields: "*" as "*",
163
+ filterFields: "*" as const,
166
164
  forcedFilter: {col1: 2}
167
165
  }
168
166
  }
@@ -181,7 +179,7 @@ export type PublishFullyTyped<Schema = void> = Schema extends DBSchema? (
181
179
  },
182
180
  tbl2: {
183
181
  delete: {
184
- filterFields: "*" as "*",
182
+ filterFields: "*" as const,
185
183
  forcedFilter: { col1: 2 }
186
184
  }
187
185
  }
@@ -5,14 +5,14 @@ export declare const parseFunction: (funcData: {
5
5
  functions: FunctionSpec[];
6
6
  allowedFields: string[];
7
7
  }) => FunctionSpec;
8
- declare type GetQueryArgs = {
8
+ type GetQueryArgs = {
9
9
  allColumns: ColumnInfo[];
10
10
  allowedFields: string[];
11
11
  args: any[];
12
12
  tableAlias?: string;
13
13
  ctidField?: string;
14
14
  };
15
- export declare type FieldSpec = {
15
+ export type FieldSpec = {
16
16
  name: string;
17
17
  type: "column" | "computed";
18
18
  /**
@@ -20,7 +20,7 @@ export declare type FieldSpec = {
20
20
  */
21
21
  getQuery: (params: Omit<GetQueryArgs, "args">) => string;
22
22
  };
23
- export declare type FunctionSpec = {
23
+ export type FunctionSpec = {
24
24
  name: string;
25
25
  description?: string;
26
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Functions.d.ts","sourceRoot":"","sources":["Functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,UAAU,EAAqB,uBAAuB,EAAuC,MAAM,iBAAiB,CAAC;AAKtI,eAAO,MAAM,aAAa,aAAc;IAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IAAE,SAAS,EAAE,YAAY,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAC;CAAE,KAAG,YA0C5I,CAAA;AAGD,aAAK,YAAY,GAAG;IAClB,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oBAAY,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B;;OAEG;IACH,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;CAC1D,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;OAEG;IAGH;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,UAAU,CAAC;IAC9C;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,MAAM,EAAE,CAAC;IAC3C;;OAEG;IACH,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAC;IAE3C,UAAU,CAAC,EAAE,uBAAuB,CAAC;CACtC,CAAC;AA8VF;;EAEE;AACF,eAAO,MAAM,SAAS,EAAE,YAAY,EAwjBnC,CAAC;AAGF,eAAO,MAAM,eAAe,EAAE,SAAS,EA8BtC,CAAC"}
1
+ {"version":3,"file":"Functions.d.ts","sourceRoot":"","sources":["Functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,UAAU,EAAqB,uBAAuB,EAAuC,MAAM,iBAAiB,CAAC;AAKtI,eAAO,MAAM,aAAa,aAAc;IAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IAAE,SAAS,EAAE,YAAY,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAC;CAAE,KAAG,YA0C5I,CAAA;AAGD,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B;;OAEG;IACH,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;OAEG;IAGH;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,UAAU,CAAC;IAC9C;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,MAAM,EAAE,CAAC;IAC3C;;OAEG;IACH,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAC;IAE3C,UAAU,CAAC,EAAE,uBAAuB,CAAC;CACtC,CAAC;AA8VF;;EAEE;AACF,eAAO,MAAM,SAAS,EAAE,YAAY,EAwjBnC,CAAC;AAGF,eAAO,MAAM,eAAe,EAAE,SAAS,EA8BtC,CAAC"}
@@ -137,7 +137,7 @@ const FTS_Funcs =
137
137
  getQuery: ({ allColumns, args, tableAlias }) => {
138
138
  const col = (0, prostgles_types_1.asName)(args[0]);
139
139
  let qVal = args[1], qType = "to_tsquery";
140
- let _type = type ? (asValue(type) + ",") : "";
140
+ const _type = type ? (asValue(type) + ",") : "";
141
141
  const searchTypes = prostgles_types_1.TextFilter_FullTextSearchFilterKeys;
142
142
  /* { to_tsquery: 'search term' } */
143
143
  if ((0, DboBuilder_1.isPlainObject)(qVal)) {
@@ -308,9 +308,9 @@ PostGIS_Funcs = PostGIS_Funcs.concat([
308
308
  if (otherArgs.length)
309
309
  secondArg = ", " + otherArgs.map(arg => asValue(arg)).join(", ");
310
310
  const escTabelName = (0, QueryBuilder_1.asNameAlias)(colName, tableAlias) + "::geometry";
311
- let result = DboBuilder_1.pgp.as.format(fname + "(" + escTabelName + secondArg + (fname === "ST_AsGeoJSON" ? ")::jsonb" : ")"));
311
+ const result = DboBuilder_1.pgp.as.format(fname + "(" + escTabelName + secondArg + (fname === "ST_AsGeoJSON" ? ")::jsonb" : ")"));
312
312
  if (["ST_Centroid", "ST_SnapToGrid", "ST_Simplify"].includes(fname)) {
313
- let r = `ST_AsGeoJSON(${result})::jsonb`;
313
+ const r = `ST_AsGeoJSON(${result})::jsonb`;
314
314
  return r;
315
315
  }
316
316
  return result;
@@ -547,7 +547,7 @@ exports.FUNCTIONS = [
547
547
  minute: "hour",
548
548
  second: "minute"
549
549
  };
550
- let res = `(date_trunc(${asValue(prevInt[unit] || "hour")}, ${col}) + date_part(${asValue(unit, "::text")}, ${col})::int / ${val} * interval ${asValue(val + " " + unit)})`;
550
+ const res = `(date_trunc(${asValue(prevInt[unit] || "hour")}, ${col}) + date_part(${asValue(unit, "::text")}, ${col})::int / ${val} * interval ${asValue(val + " " + unit)})`;
551
551
  // console.log(res);
552
552
  return res;
553
553
  }
@@ -721,7 +721,7 @@ exports.FUNCTIONS = [
721
721
  const cols = ViewHandler_1.ViewHandler._parseFieldFilter(args[0], false, allowedFields);
722
722
  let term = args[1];
723
723
  const rawTerm = args[1];
724
- let { edgeTruncate, noFields = false, returnType, matchCase = false } = args[2] || {};
724
+ const { edgeTruncate, noFields = false, returnType, matchCase = false } = args[2] || {};
725
725
  if (!(0, prostgles_types_1.isEmpty)(args[2])) {
726
726
  const keys = Object.keys(args[2]);
727
727
  const validKeys = ["edgeTruncate", "noFields", "returnType", "matchCase"];
@@ -766,7 +766,7 @@ exports.FUNCTIONS = [
766
766
  END
767
767
  `;
768
768
  };
769
- let colRaw = "( " + cols.map(c => `${noFields ? "" : (asValue(c + ": ") + " || ")} COALESCE(${(0, QueryBuilder_1.asNameAlias)(c, tableAlias)}::TEXT, '')`).join(" || ', ' || ") + " )";
769
+ const colRaw = "( " + cols.map(c => `${noFields ? "" : (asValue(c + ": ") + " || ")} COALESCE(${(0, QueryBuilder_1.asNameAlias)(c, tableAlias)}::TEXT, '')`).join(" || ', ' || ") + " )";
770
770
  let col = colRaw;
771
771
  term = asValue(term);
772
772
  if (!matchCase) {
@@ -787,7 +787,7 @@ exports.FUNCTIONS = [
787
787
  }
788
788
  else if (returnType === "object" || returnType === "boolean") {
789
789
  const hasChars = Boolean(rawTerm && /[a-z]/i.test(rawTerm));
790
- let validCols = cols.map(c => {
790
+ const validCols = cols.map(c => {
791
791
  const colInfo = allColumns.find(ac => ac.name === c);
792
792
  return {
793
793
  key: c,
@@ -795,7 +795,7 @@ exports.FUNCTIONS = [
795
795
  };
796
796
  })
797
797
  .filter(c => c.colInfo && c.colInfo.udt_name !== "bytea");
798
- let _cols = validCols.filter(c =>
798
+ const _cols = validCols.filter(c =>
799
799
  /** Exclude numeric columns when the search tern contains a character */
800
800
  !hasChars ||
801
801
  (0, DboBuilder_1.postgresToTsType)(c.colInfo.udt_name) !== "number");
@@ -820,7 +820,7 @@ exports.FUNCTIONS = [
820
820
  'WK' || trim(to_char(${colNameEscaped}, 'WW'))
821
821
  ) END)`;
822
822
  }
823
- let colTxt = `COALESCE(${colSelect}, '')`; // position(${term} IN ${colTxt}) > 0
823
+ const colTxt = `COALESCE(${colSelect}, '')`; // position(${term} IN ${colTxt}) > 0
824
824
  if (returnType === "boolean") {
825
825
  return `
826
826
  WHEN ${colTxt} ${matchCase ? "LIKE" : "ILIKE"} ${asValue('%' + rawTerm + '%')}
@@ -111,7 +111,7 @@ export type FunctionSpec = {
111
111
  };
112
112
 
113
113
  const MAX_COL_NUM = 1600;
114
- const asValue = (v: any, castAs: string = "") => pgp.as.format("$1" + castAs, [v]);
114
+ const asValue = (v: any, castAs = "") => pgp.as.format("$1" + castAs, [v]);
115
115
 
116
116
  const parseUnix = (colName: string, tableAlias: string | undefined, allColumns: ColumnInfo[]) => {
117
117
  const col = allColumns.find(c => c.name === colName);
@@ -210,14 +210,14 @@ const FTS_Funcs: FunctionSpec[] =
210
210
  ].map(type => ({
211
211
  name: "$ts_headline" + (type? ("_" + type) : ""),
212
212
  description: ` :[column_name <string>, search_term: <string | { to_tsquery: string } > ] -> sha512 hash of the of column content`,
213
- type: "function" as "function",
213
+ type: "function" as const,
214
214
  singleColArg: true,
215
215
  numArgs: 2,
216
216
  getFields: ([column]) => [column],
217
217
  getQuery: ({ allColumns, args, tableAlias }) => {
218
218
  const col = asName(args[0]);
219
219
  let qVal = args[1], qType = "to_tsquery";
220
- let _type = type? (asValue(type) + ",") : "";
220
+ const _type = type? (asValue(type) + ",") : "";
221
221
 
222
222
  const searchTypes = TextFilter_FullTextSearchFilterKeys;
223
223
 
@@ -234,7 +234,7 @@ const FTS_Funcs: FunctionSpec[] =
234
234
  qVal = pgp.as.format(qType + "($1)", [qVal])
235
235
  } else throw "Bad second arg. Exepcting search string or { to_tsquery: 'search string' }";
236
236
 
237
- const res =`ts_headline(${_type} ${col}::text, ${qVal}, 'ShortWord=1 ' )`
237
+ const res = `ts_headline(${_type} ${col}::text, ${qVal}, 'ShortWord=1 ' )`
238
238
  // console.log(res)
239
239
 
240
240
  return res
@@ -273,7 +273,7 @@ let PostGIS_Funcs: FunctionSpec[] = ([
273
273
  ] as const).map(({ fname, description }) => ({
274
274
  name: "$" + fname,
275
275
  description,
276
- type: "function" as "function",
276
+ type: "function" as const,
277
277
  singleColArg: true,
278
278
  numArgs: 1,
279
279
  canBeUsedForFilter: fname === "ST_DWithin",
@@ -403,9 +403,9 @@ let PostGIS_Funcs: FunctionSpec[] = ([
403
403
  let secondArg = "";
404
404
  if(otherArgs.length) secondArg = ", " + otherArgs.map(arg => asValue(arg)).join(", ");
405
405
  const escTabelName = asNameAlias(colName, tableAlias) + "::geometry";
406
- let result = pgp.as.format(fname + "(" + escTabelName + secondArg + ( fname === "ST_AsGeoJSON"? ")::jsonb" : ")" ));
406
+ const result = pgp.as.format(fname + "(" + escTabelName + secondArg + ( fname === "ST_AsGeoJSON"? ")::jsonb" : ")" ));
407
407
  if(["ST_Centroid", "ST_SnapToGrid", "ST_Simplify"].includes(fname)){
408
- let r = `ST_AsGeoJSON(${result})::jsonb`;
408
+ const r = `ST_AsGeoJSON(${result})::jsonb`;
409
409
  return r;
410
410
  }
411
411
  return result;
@@ -660,7 +660,7 @@ export const FUNCTIONS: FunctionSpec[] = [
660
660
  second: "minute"
661
661
  };
662
662
 
663
- let res = `(date_trunc(${asValue(prevInt[unit as "month"] || "hour")}, ${col}) + date_part(${asValue(unit, "::text")}, ${col})::int / ${val} * interval ${asValue(val + " " + unit)})`;
663
+ const res = `(date_trunc(${asValue(prevInt[unit as "month"] || "hour")}, ${col}) + date_part(${asValue(unit, "::text")}, ${col})::int / ${val} * interval ${asValue(val + " " + unit)})`;
664
664
  // console.log(res);
665
665
  return res;
666
666
  }
@@ -848,7 +848,7 @@ export const FUNCTIONS: FunctionSpec[] = [
848
848
  const cols = ViewHandler._parseFieldFilter(args[0], false, allowedFields);
849
849
  let term = args[1];
850
850
  const rawTerm = args[1];
851
- let { edgeTruncate, noFields = false, returnType, matchCase = false } = args[2] || {};
851
+ const { edgeTruncate, noFields = false, returnType, matchCase = false } = args[2] || {};
852
852
  if(!isEmpty(args[2])){
853
853
  const keys = Object.keys(args[2]);
854
854
  const validKeys = ["edgeTruncate", "noFields", "returnType", "matchCase"];
@@ -891,7 +891,7 @@ export const FUNCTIONS: FunctionSpec[] = [
891
891
  `;
892
892
  }
893
893
 
894
- let colRaw = "( " + cols.map(c =>`${noFields? "" : (asValue(c + ": ") + " || ")} COALESCE(${asNameAlias(c, tableAlias)}::TEXT, '')`).join(" || ', ' || ") + " )";
894
+ const colRaw = "( " + cols.map(c =>`${noFields? "" : (asValue(c + ": ") + " || ")} COALESCE(${asNameAlias(c, tableAlias)}::TEXT, '')`).join(" || ', ' || ") + " )";
895
895
  let col = colRaw;
896
896
  term = asValue(term);
897
897
  if(!matchCase) {
@@ -916,7 +916,7 @@ export const FUNCTIONS: FunctionSpec[] = [
916
916
 
917
917
  } else if(returnType === "object" || returnType === "boolean"){
918
918
  const hasChars = Boolean(rawTerm && /[a-z]/i.test(rawTerm));
919
- let validCols = cols.map(c => {
919
+ const validCols = cols.map(c => {
920
920
  const colInfo = allColumns.find(ac => ac.name === c);
921
921
  return {
922
922
  key: c,
@@ -925,7 +925,7 @@ export const FUNCTIONS: FunctionSpec[] = [
925
925
  })
926
926
  .filter(c => c.colInfo && c.colInfo.udt_name !== "bytea")
927
927
 
928
- let _cols = validCols.filter(c =>
928
+ const _cols = validCols.filter(c =>
929
929
  /** Exclude numeric columns when the search tern contains a character */
930
930
  !hasChars ||
931
931
  postgresToTsType(c.colInfo!.udt_name) !== "number"
@@ -951,7 +951,7 @@ export const FUNCTIONS: FunctionSpec[] = [
951
951
  'WK' || trim(to_char(${colNameEscaped}, 'WW'))
952
952
  ) END)`
953
953
  }
954
- let colTxt = `COALESCE(${colSelect}, '')`; // position(${term} IN ${colTxt}) > 0
954
+ const colTxt = `COALESCE(${colSelect}, '')`; // position(${term} IN ${colTxt}) > 0
955
955
  if(returnType === "boolean"){
956
956
  return `
957
957
  WHEN ${colTxt} ${matchCase? "LIKE" : "ILIKE"} ${asValue('%' + rawTerm + '%')}
@@ -3,7 +3,7 @@ import { TableRule } from "../../PublishParser";
3
3
  import { SelectParams, ColumnInfo, PG_COLUMN_UDT_DATA_TYPE, Select, JoinSelect } from "prostgles-types";
4
4
  import { TableHandler } from "../TableHandler";
5
5
  import { FieldSpec, FunctionSpec } from "./Functions";
6
- export declare type SelectItem = {
6
+ export type SelectItem = {
7
7
  type: "column" | "function" | "aggregation" | "joinedColumn" | "computed";
8
8
  getFields: (args?: any[]) => string[] | "*";
9
9
  getQuery: (tableAlias?: string) => string;
@@ -12,10 +12,10 @@ export declare type SelectItem = {
12
12
  alias: string;
13
13
  selected: boolean;
14
14
  };
15
- export declare type SelectItemValidated = SelectItem & {
15
+ export type SelectItemValidated = SelectItem & {
16
16
  fields: string[];
17
17
  };
18
- export declare type NewQuery = {
18
+ export type NewQuery = {
19
19
  /**
20
20
  * All fields from the table will be in nested SELECT and GROUP BY to allow order/filter by fields not in select
21
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBuilder.d.ts","sourceRoot":"","sources":["QueryBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryBuilder.d.ts","sourceRoot":"","sources":["QueryBuilder.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAiB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAmB,UAAU,EAAE,uBAAuB,EAAY,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEnI,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAmB,SAAS,EAAa,YAAY,EAAiB,MAAM,aAAa,CAAC;AAEjG,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,CAAC;IAC1E,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC;IAC5C,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAE1C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;CAAE,CAAA;AAEpE,MAAM,MAAM,QAAQ,GAAG;IACrB;;OAEG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,UAAU,EAAE,CAAC;IAErB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,MAAM,eAAe,MAAM,WAI7D,CAAA;AAED,eAAO,MAAM,mBAAmB,aAAc,GAAG;cAAe,MAAM;UAAQ,GAAG,EAAE;CAYlF,CAAA;AAGD,qBAAa,iBAAiB;IAE5B,MAAM,EAAE,mBAAmB,EAAE,CAAM;IACnC,OAAO,CAAC,SAAS,CAAW;IAE5B,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,oBAAoB,CAAW;IACvC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,8BAA8B,CAAW;IACjD,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAe;gBAElB,MAAM,EAAE;QAAE,aAAa,EAAE,MAAM,EAAE,CAAC;QAAC,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAAC,cAAc,EAAE,SAAS,EAAE,CAAC;QAAC,SAAS,EAAE,YAAY,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,UAAU,EAAE,CAAC;KAAE;IAoBrM,OAAO,CAAC,UAAU,CASjB;IAED,OAAO,CAAC,OAAO,CAUd;IAED,OAAO,CAAC,WAAW,CAkBlB;IAED,SAAS,cAAe,MAAM,YAAY,OAAO,UA6BhD;IAED,eAAe,eAAsB,MAAM,oBAAoB,MAAM,OAAO,UAAU,kBAAkB,MAAM,KAAK,GAAG,KAAK,GAAG,oBA8F7H;CAEF;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,CAAC,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAO,EACvD,aAAa,KAAO,EACpB,UAAU,EAAE,SAAS,GAAG,SAAS,EACjC,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,OAAO,EAAE,UAAU,EAAE,GACpB,OAAO,CAAC,QAAQ,CAAC,CAwJnB"}
@@ -10,7 +10,7 @@ const prostgles_types_1 = require("prostgles-types");
10
10
  const utils_1 = require("../../utils");
11
11
  const Functions_1 = require("./Functions");
12
12
  const asNameAlias = (field, tableAlias) => {
13
- let result = (0, prostgles_types_1.asName)(field);
13
+ const result = (0, prostgles_types_1.asName)(field);
14
14
  if (tableAlias)
15
15
  return (0, prostgles_types_1.asName)(tableAlias) + "." + result;
16
16
  return result;
@@ -106,14 +106,14 @@ class SelectItemBuilder {
106
106
  type: "computed",
107
107
  numArgs: 0,
108
108
  singleColArg: false,
109
- getFields: (args) => []
109
+ getFields: (_args) => []
110
110
  };
111
111
  this.addFunction(cf, [], compCol.name);
112
112
  return;
113
113
  }
114
114
  }
115
115
  const colDef = this.columns.find(c => c.name === fieldName);
116
- let alias = selected ? fieldName : ("not_selected_" + fieldName);
116
+ const alias = selected ? fieldName : ("not_selected_" + fieldName);
117
117
  this.addItem({
118
118
  type: "column",
119
119
  columnPGDataType: colDef?.data_type,
@@ -216,7 +216,7 @@ async function getNewQuery(_this, filter, selectParams = {}, param3_unused = nul
216
216
  }
217
217
  const allowedOrderByFields = !tableRules ? _this.column_names.slice(0) : _this.parseFieldFilter(tableRules?.select?.orderByFields ?? tableRules?.select?.fields);
218
218
  const allowedSelectFields = !tableRules ? _this.column_names.slice(0) : _this.parseFieldFilter(tableRules?.select?.fields);
219
- let joinQueries = [];
219
+ const joinQueries = [];
220
220
  const { select: userSelect = "*" } = selectParams, sBuilder = new SelectItemBuilder({
221
221
  allowedFields: allowedSelectFields,
222
222
  allowedOrderByFields,
@@ -227,7 +227,8 @@ async function getNewQuery(_this, filter, selectParams = {}, param3_unused = nul
227
227
  columns
228
228
  });
229
229
  await sBuilder.parseUserSelect(userSelect, async (key, val, throwErr) => {
230
- let j_filter = {}, j_selectParams = {}, j_path, j_alias, j_tableRules, j_table, j_isLeftJoin = true;
230
+ const j_selectParams = {};
231
+ let j_filter = {}, j_isLeftJoin = true, j_path, j_alias, j_tableRules, j_table;
231
232
  if (val === "*") {
232
233
  j_selectParams.select = "*";
233
234
  j_alias = key;
@@ -295,7 +296,7 @@ async function getNewQuery(_this, filter, selectParams = {}, param3_unused = nul
295
296
  sBuilder.addColumn(key, false);
296
297
  }
297
298
  });
298
- let select = sBuilder.select;
299
+ const select = sBuilder.select;
299
300
  // const validatedAggAliases = select
300
301
  // .filter(s => s.type !== "joinedColumn")
301
302
  // .map(s => s.alias);
@@ -310,7 +311,7 @@ async function getNewQuery(_this, filter, selectParams = {}, param3_unused = nul
310
311
  });
311
312
  const where = filterOpts.where;
312
313
  const p = _this.getValidatedRules(tableRules, localParams);
313
- let resQuery = {
314
+ const resQuery = {
314
315
  /** Why was this the case? */
315
316
  // allFields: allowedSelectFields,
316
317
  allFields: _this.column_names.slice(0),
@@ -4,9 +4,9 @@
4
4
  * Licensed under the MIT License. See LICENSE in the project root for license information.
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
 
7
- import { pgp, Filter, LocalParams, isPlainObject, postgresToTsType, SortItem } from "../../DboBuilder";
7
+ import { Filter, LocalParams, isPlainObject, SortItem } from "../../DboBuilder";
8
8
  import { TableRule } from "../../PublishParser";
9
- import { SelectParams, isEmpty, FieldFilter, asName, TextFilter_FullTextSearchFilterKeys, ColumnInfo, PG_COLUMN_UDT_DATA_TYPE, isObject, Select, JoinSelect } from "prostgles-types";
9
+ import { SelectParams, isEmpty, asName, ColumnInfo, PG_COLUMN_UDT_DATA_TYPE, isObject, Select, JoinSelect } from "prostgles-types";
10
10
  import { get } from "../../utils";
11
11
  import { TableHandler } from "../TableHandler";
12
12
  import { COMPUTED_FIELDS, FieldSpec, FUNCTIONS, FunctionSpec, parseFunction } from "./Functions";
@@ -47,7 +47,7 @@ export type NewQuery = {
47
47
  };
48
48
 
49
49
  export const asNameAlias = (field: string, tableAlias?: string) => {
50
- let result = asName(field);
50
+ const result = asName(field);
51
51
  if(tableAlias) return asName(tableAlias) + "." + result;
52
52
  return result;
53
53
  }
@@ -154,7 +154,7 @@ export class SelectItemBuilder {
154
154
  type: "computed",
155
155
  numArgs: 0,
156
156
  singleColArg: false,
157
- getFields: (args: any[]) => []
157
+ getFields: (_args: any[]) => []
158
158
  }
159
159
  this.addFunction(cf, [], compCol.name)
160
160
  return;
@@ -162,7 +162,7 @@ export class SelectItemBuilder {
162
162
  }
163
163
 
164
164
  const colDef = this.columns.find(c => c.name === fieldName);
165
- let alias = selected? fieldName : ("not_selected_" + fieldName);
165
+ const alias = selected? fieldName : ("not_selected_" + fieldName);
166
166
  this.addItem({
167
167
  type: "column",
168
168
  columnPGDataType: colDef?.data_type,
@@ -207,7 +207,7 @@ export class SelectItemBuilder {
207
207
  } else {
208
208
  await Promise.all(selectKeys.map(async key => {
209
209
  const val: any = userSelect[key as keyof typeof userSelect],
210
- throwErr = (extraErr: string = "") => {
210
+ throwErr = (extraErr = "") => {
211
211
  console.trace(extraErr)
212
212
  throw "Unexpected select -> " + JSON.stringify({ [key]: val }) + "\n" + extraErr;
213
213
  };
@@ -290,7 +290,7 @@ export async function getNewQuery(
290
290
  const allowedSelectFields = !tableRules? _this.column_names.slice(0) : _this.parseFieldFilter(tableRules?.select?.fields);
291
291
 
292
292
 
293
- let joinQueries: NewQuery[] = [];
293
+ const joinQueries: NewQuery[] = [];
294
294
 
295
295
  const { select: userSelect = "*" } = selectParams,
296
296
  sBuilder = new SelectItemBuilder({
@@ -307,13 +307,13 @@ export async function getNewQuery(
307
307
 
308
308
  await sBuilder.parseUserSelect(userSelect, async (key, val: any, throwErr) => {
309
309
 
310
+ const j_selectParams: SelectParams = {};
310
311
  let j_filter: Filter = {},
311
- j_selectParams: SelectParams = {},
312
+ j_isLeftJoin = true,
312
313
  j_path: string[] | undefined,
313
314
  j_alias: string | undefined,
314
315
  j_tableRules: TableRule | undefined,
315
- j_table: string | undefined,
316
- j_isLeftJoin: boolean = true;
316
+ j_table: string | undefined;
317
317
 
318
318
  if(val === "*"){
319
319
  j_selectParams.select = "*";
@@ -395,7 +395,7 @@ export async function getNewQuery(
395
395
  }
396
396
  });
397
397
 
398
- let select = sBuilder.select;
398
+ const select = sBuilder.select;
399
399
  // const validatedAggAliases = select
400
400
  // .filter(s => s.type !== "joinedColumn")
401
401
  // .map(s => s.alias);
@@ -412,7 +412,7 @@ export async function getNewQuery(
412
412
  const where = filterOpts.where;
413
413
  const p = _this.getValidatedRules(tableRules, localParams);
414
414
 
415
- let resQuery: NewQuery = {
415
+ const resQuery: NewQuery = {
416
416
  /** Why was this the case? */
417
417
  // allFields: allowedSelectFields,
418
418
 
@@ -1 +1 @@
1
- {"version":3,"file":"makeSelectQuery.d.ts","sourceRoot":"","sources":["makeSelectQuery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAU,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAc,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,CAAC,EAAE,QAAQ,EACX,KAAK,GAAE,MAAU,EACjB,UAAU,GAAE,MAAM,EAAO,EACzB,YAAY,GAAE,YAAiB,GAC9B,MAAM,CA2RR"}
1
+ {"version":3,"file":"makeSelectQuery.d.ts","sourceRoot":"","sources":["makeSelectQuery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAU,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAc,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,CAAC,EAAE,QAAQ,EACX,KAAK,SAAI,EACT,UAAU,GAAE,MAAM,EAAO,EACzB,YAAY,GAAE,YAAiB,GAC9B,MAAM,CA2RR"}
@@ -80,7 +80,7 @@ function makeSelectQuery(_this, q, depth = 0, joinFields = [], selectParams = {}
80
80
  const getJoinCondition = (t1Alias, t2Alias, on) => {
81
81
  return on.map(cond => cond.map(([c1, c2]) => `${t1Alias}.${(0, prostgles_types_1.asName)(getPrevColName(c1))} = ${t2Alias}.${(0, prostgles_types_1.asName)(getThisColName(c2))} `).join(" AND ")).join(" OR ");
82
82
  };
83
- let query = [
83
+ const query = [
84
84
  `${q2.isLeftJoin ? "LEFT" : "INNER"} JOIN `,
85
85
  ...iQ,
86
86
  `ON ${getJoinCondition(prevAlias, thisAlias, on)}`
@@ -111,11 +111,11 @@ function makeSelectQuery(_this, q, depth = 0, joinFields = [], selectParams = {}
111
111
  /* If aggs exist need to set groupBy add joinFields into select */
112
112
  if (aggs.length || selectParams?.groupBy) {
113
113
  if (nonAggs.length) {
114
- let groupByFields = nonAggs.filter(sf => !depth || joinFields.includes(sf.getQuery()));
114
+ const groupByFields = nonAggs.filter(sf => !depth || joinFields.includes(sf.getQuery()));
115
115
  groupBy = getGroupBy(rootSelectItems, groupByFields);
116
116
  }
117
117
  }
118
- let simpleQuery = indentArrayAndJoin(depth, [
118
+ const simpleQuery = indentArrayAndJoin(depth, [
119
119
  `-- 0. or 5. [leaf query] `
120
120
  /* Group by selected fields + any join fields */
121
121
  ,
@@ -217,7 +217,7 @@ function makeSelectQuery(_this, q, depth = 0, joinFields = [], selectParams = {}
217
217
  "-- EOF 0. joined root",
218
218
  " \n"
219
219
  ].filter(v => v);
220
- let res = indentArrayAndJoin(depth, joinedQuery);
220
+ const res = indentArrayAndJoin(depth, joinedQuery);
221
221
  // res = indent(res, depth);
222
222
  // console.log(res);
223
223
  return res;
@@ -8,7 +8,7 @@ import { TableHandler } from "../TableHandler";
8
8
  export function makeSelectQuery(
9
9
  _this: TableHandler,
10
10
  q: NewQuery,
11
- depth: number = 0,
11
+ depth = 0,
12
12
  joinFields: string[] = [],
13
13
  selectParams: SelectParams = {},
14
14
  ): string {
@@ -119,7 +119,7 @@ export function makeSelectQuery(
119
119
  ).join(" OR ")
120
120
  }
121
121
 
122
- let query: string[] = [
122
+ const query: string[] = [
123
123
  `${q2.isLeftJoin? "LEFT" : "INNER"} JOIN `
124
124
  , ...iQ
125
125
  , `ON ${getJoinCondition(prevAlias, thisAlias, on)}`
@@ -158,12 +158,12 @@ export function makeSelectQuery(
158
158
  if(aggs.length || selectParams?.groupBy){
159
159
 
160
160
  if(nonAggs.length){
161
- let groupByFields = nonAggs.filter(sf => !depth || joinFields.includes(sf.getQuery()));
161
+ const groupByFields = nonAggs.filter(sf => !depth || joinFields.includes(sf.getQuery()));
162
162
  groupBy = getGroupBy(rootSelectItems, groupByFields);
163
163
  }
164
164
  }
165
165
 
166
- let simpleQuery = indentArrayAndJoin(depth, [
166
+ const simpleQuery = indentArrayAndJoin(depth, [
167
167
  `-- 0. or 5. [leaf query] `
168
168
 
169
169
  /* Group by selected fields + any join fields */
@@ -290,7 +290,7 @@ export function makeSelectQuery(
290
290
  , " \n"
291
291
  ].filter(v => v)
292
292
 
293
- let res = indentArrayAndJoin(depth, joinedQuery as unknown as string[]);
293
+ const res = indentArrayAndJoin(depth, joinedQuery as unknown as string[]);
294
294
  // res = indent(res, depth);
295
295
  // console.log(res);
296
296
  return res;
@@ -6,7 +6,7 @@ import { TableRule } from "../PublishParser";
6
6
  import { insertDataParse } from "./insertDataParse";
7
7
  import { SelectItem } from "./QueryBuilder/QueryBuilder";
8
8
  import { JoinPaths, ViewHandler } from "./ViewHandler";
9
- declare type ValidatedParams = {
9
+ type ValidatedParams = {
10
10
  row: AnyObject;
11
11
  forcedData?: AnyObject;
12
12
  allowedFields?: FieldFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"TableHandler.d.ts","sourceRoot":"","sources":["TableHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableHandler.d.ts","sourceRoot":"","sources":["TableHandler.ts"],"names":[],"mappings":"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"}