@carbonorm/carbonnode 6.1.0 → 6.1.1

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 (65) hide show
  1. package/README.md +509 -292
  2. package/dist/index.cjs.js +209 -37
  3. package/dist/index.cjs.js.map +1 -1
  4. package/dist/index.esm.js +208 -38
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/orm/utils/sqlUtils.d.ts +1 -0
  7. package/dist/types/ormInterfaces.d.ts +1 -0
  8. package/dist/utils/sqlAllowList.d.ts +5 -3
  9. package/package.json +1 -1
  10. package/src/__tests__/fixtures/c6.fixture.ts +33 -0
  11. package/src/__tests__/sakila-db/C6.js +1 -1
  12. package/src/__tests__/sakila-db/C6.mysqldump.json +1 -1
  13. package/src/__tests__/sakila-db/C6.mysqldump.sql +1 -1
  14. package/src/__tests__/sakila-db/C6.ts +1 -1
  15. package/src/__tests__/sakila-db/sqlResponses/C6.actor.post.json +6 -6
  16. package/src/__tests__/sakila-db/sqlResponses/C6.actor.post.latest.json +3 -3
  17. package/src/__tests__/sakila-db/sqlResponses/C6.actor.put.json +1 -1
  18. package/src/__tests__/sakila-db/sqlResponses/C6.actor.put.lookup.json +3 -3
  19. package/src/__tests__/sakila-db/sqlResponses/C6.address.post.json +10 -10
  20. package/src/__tests__/sakila-db/sqlResponses/C6.address.post.latest.json +5 -5
  21. package/src/__tests__/sakila-db/sqlResponses/C6.address.put.json +1 -1
  22. package/src/__tests__/sakila-db/sqlResponses/C6.address.put.lookup.json +5 -5
  23. package/src/__tests__/sakila-db/sqlResponses/C6.category.post.json +4 -4
  24. package/src/__tests__/sakila-db/sqlResponses/C6.category.post.latest.json +2 -2
  25. package/src/__tests__/sakila-db/sqlResponses/C6.category.put.json +1 -1
  26. package/src/__tests__/sakila-db/sqlResponses/C6.category.put.lookup.json +2 -2
  27. package/src/__tests__/sakila-db/sqlResponses/C6.city.post.json +4 -4
  28. package/src/__tests__/sakila-db/sqlResponses/C6.city.post.latest.json +2 -2
  29. package/src/__tests__/sakila-db/sqlResponses/C6.city.put.json +1 -1
  30. package/src/__tests__/sakila-db/sqlResponses/C6.city.put.lookup.json +2 -2
  31. package/src/__tests__/sakila-db/sqlResponses/C6.country.post.json +4 -4
  32. package/src/__tests__/sakila-db/sqlResponses/C6.country.post.latest.json +2 -2
  33. package/src/__tests__/sakila-db/sqlResponses/C6.country.put.json +1 -1
  34. package/src/__tests__/sakila-db/sqlResponses/C6.country.put.lookup.json +2 -2
  35. package/src/__tests__/sakila-db/sqlResponses/C6.customer.post.json +10 -10
  36. package/src/__tests__/sakila-db/sqlResponses/C6.customer.post.latest.json +5 -5
  37. package/src/__tests__/sakila-db/sqlResponses/C6.customer.put.json +1 -1
  38. package/src/__tests__/sakila-db/sqlResponses/C6.customer.put.lookup.json +5 -5
  39. package/src/__tests__/sakila-db/sqlResponses/C6.film.post.json +4 -4
  40. package/src/__tests__/sakila-db/sqlResponses/C6.film.post.latest.json +2 -2
  41. package/src/__tests__/sakila-db/sqlResponses/C6.film.put.json +1 -1
  42. package/src/__tests__/sakila-db/sqlResponses/C6.film.put.lookup.json +2 -2
  43. package/src/__tests__/sakila-db/sqlResponses/C6.inventory.post.json +2 -2
  44. package/src/__tests__/sakila-db/sqlResponses/C6.inventory.post.latest.json +1 -1
  45. package/src/__tests__/sakila-db/sqlResponses/C6.inventory.put.json +1 -1
  46. package/src/__tests__/sakila-db/sqlResponses/C6.inventory.put.lookup.json +1 -1
  47. package/src/__tests__/sakila-db/sqlResponses/C6.language.post.json +4 -4
  48. package/src/__tests__/sakila-db/sqlResponses/C6.language.post.latest.json +2 -2
  49. package/src/__tests__/sakila-db/sqlResponses/C6.language.put.json +1 -1
  50. package/src/__tests__/sakila-db/sqlResponses/C6.language.put.lookup.json +2 -2
  51. package/src/__tests__/sakila-db/sqlResponses/C6.payment.post.json +4 -4
  52. package/src/__tests__/sakila-db/sqlResponses/C6.payment.post.latest.json +2 -2
  53. package/src/__tests__/sakila-db/sqlResponses/C6.payment.put.lookup.json +2 -2
  54. package/src/__tests__/sakila-db/sqlResponses/C6.rental.join.json +10 -10
  55. package/src/__tests__/sakila-db/sqlResponses/C6.rental.post.json +6 -6
  56. package/src/__tests__/sakila-db/sqlResponses/C6.rental.post.latest.json +3 -3
  57. package/src/__tests__/sakila-db/sqlResponses/C6.rental.put.json +1 -1
  58. package/src/__tests__/sakila-db/sqlResponses/C6.rental.put.lookup.json +3 -3
  59. package/src/__tests__/sqlAllowList.test.ts +56 -1
  60. package/src/__tests__/sqlBuilders.test.ts +38 -1
  61. package/src/executors/SqlExecutor.ts +4 -3
  62. package/src/orm/builders/ConditionBuilder.ts +3 -10
  63. package/src/orm/utils/sqlUtils.ts +172 -4
  64. package/src/types/ormInterfaces.ts +1 -0
  65. package/src/utils/sqlAllowList.ts +44 -11
@@ -5,3 +5,4 @@ export interface SqlBuilderResult {
5
5
  };
6
6
  }
7
7
  export declare function convertHexIfBinary(_col: string, val: any, columnDef?: any): any;
8
+ export declare function convertSqlValueForColumn(col: string, val: any, columnDef?: any): any;
@@ -196,6 +196,7 @@ export interface iRest<RestShortTableName extends string = any, RestTableInterfa
196
196
  logLevel?: number;
197
197
  verbose?: boolean;
198
198
  sqlAllowListPath?: string;
199
+ sqlQueryNormalizer?: (sql: string) => string;
199
200
  }
200
201
  export interface iConstraint {
201
202
  TABLE: string;
@@ -1,5 +1,7 @@
1
+ export type SqlQueryNormalizer = (sql: string) => string;
1
2
  export declare const normalizeSql: (sql: string) => string;
2
- export declare const loadSqlAllowList: (allowListPath: string) => Promise<Set<string>>;
3
+ export declare const normalizeSqlWith: (sql: string, sqlQueryNormalizer?: SqlQueryNormalizer) => string;
4
+ export declare const loadSqlAllowList: (allowListPath: string, sqlQueryNormalizer?: SqlQueryNormalizer) => Promise<Set<string>>;
3
5
  export declare const extractSqlEntries: (payload: unknown) => string[];
4
- export declare const collectSqlAllowListEntries: (payload: unknown, entries?: Set<string>) => Set<string>;
5
- export declare const compileSqlAllowList: (allowListPath: string, entries: Iterable<string>) => Promise<string[]>;
6
+ export declare const collectSqlAllowListEntries: (payload: unknown, entries?: Set<string>, sqlQueryNormalizer?: SqlQueryNormalizer) => Set<string>;
7
+ export declare const compileSqlAllowList: (allowListPath: string, entries: Iterable<string>, sqlQueryNormalizer?: SqlQueryNormalizer) => Promise<string[]>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carbonorm/carbonnode",
3
- "version": "6.1.0",
3
+ "version": "6.1.1",
4
4
  "browser": "dist/index.umd.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -136,6 +136,39 @@ export function buildBinaryTestConfigFqn() {
136
136
  return baseConfig;
137
137
  }
138
138
 
139
+ export function buildTemporalTestConfig() {
140
+ const temporalCols = {
141
+ 'events.id': 'id',
142
+ 'events.read_at': 'read_at',
143
+ 'events.read_on': 'read_on',
144
+ 'events.read_time': 'read_time',
145
+ } as const;
146
+
147
+ const C6 = {
148
+ C6VERSION: 'test',
149
+ TABLES: {
150
+ events: tableModel<'events' & any>('events', temporalCols as any),
151
+ },
152
+ PREFIX: '',
153
+ ORM: {} as any,
154
+ } as any;
155
+
156
+ C6.TABLES.events.TYPE_VALIDATION['id'].MYSQL_TYPE = 'INT';
157
+ C6.TABLES.events.TYPE_VALIDATION['read_at'].MYSQL_TYPE = 'TIMESTAMP(3)';
158
+ C6.TABLES.events.TYPE_VALIDATION['read_on'].MYSQL_TYPE = 'DATE';
159
+ C6.TABLES.events.TYPE_VALIDATION['read_time'].MYSQL_TYPE = 'TIME(3)';
160
+
161
+ const baseConfig: iRest<any, any, any> = {
162
+ C6,
163
+ restModel: C6.TABLES.events,
164
+ requestMethod: 'POST',
165
+ verbose: false,
166
+ logLevel: LogLevel.DEBUG,
167
+ } as any;
168
+
169
+ return baseConfig;
170
+ }
171
+
139
172
  export function buildParcelConfig() {
140
173
  const propertyUnitsCols = {
141
174
  'property_units.unit_id': 'unit_id',
@@ -1342,7 +1342,7 @@ export const TABLES = {
1342
1342
  };
1343
1343
  export const C6 = {
1344
1344
  ...C6Constants,
1345
- C6VERSION: '6.1.0',
1345
+ C6VERSION: '6.1.1',
1346
1346
  IMPORT: async (tableName) => {
1347
1347
  tableName = tableName.toLowerCase();
1348
1348
  // if tableName is not a key in the TABLES object then throw an error