@casekit/orm 0.0.1-alpha.3 → 0.0.1-alpha.5

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 (41) hide show
  1. package/lib/orm.d.ts +2 -2
  2. package/lib/orm.d.ts.map +1 -1
  3. package/lib/orm.js +6 -0
  4. package/lib/orm.js.map +1 -1
  5. package/lib/queries/count.d.ts.map +1 -1
  6. package/lib/queries/count.js +1 -1
  7. package/lib/queries/count.js.map +1 -1
  8. package/lib/queries/createMany.d.ts.map +1 -1
  9. package/lib/queries/createMany.js +1 -1
  10. package/lib/queries/createMany.js.map +1 -1
  11. package/lib/queries/deleteMany.d.ts.map +1 -1
  12. package/lib/queries/deleteMany.js +1 -1
  13. package/lib/queries/deleteMany.js.map +1 -1
  14. package/lib/queries/find/getIncludedManyToManyRelations.d.ts +17 -0
  15. package/lib/queries/find/getIncludedManyToManyRelations.d.ts.map +1 -0
  16. package/lib/queries/find/getIncludedManyToManyRelations.js +20 -0
  17. package/lib/queries/find/getIncludedManyToManyRelations.js.map +1 -0
  18. package/lib/queries/find/getIncludedOneToManyRelations.d.ts +12 -0
  19. package/lib/queries/find/getIncludedOneToManyRelations.d.ts.map +1 -0
  20. package/lib/queries/find/getIncludedOneToManyRelations.js +20 -0
  21. package/lib/queries/find/getIncludedOneToManyRelations.js.map +1 -0
  22. package/lib/queries/find/tests/findMany.include.test.d.ts +2 -0
  23. package/lib/queries/find/tests/findMany.include.test.d.ts.map +1 -0
  24. package/lib/queries/find/tests/findMany.include.test.js +93 -0
  25. package/lib/queries/find/tests/findMany.include.test.js.map +1 -0
  26. package/lib/queries/findMany.d.ts.map +1 -1
  27. package/lib/queries/findMany.js +49 -36
  28. package/lib/queries/findMany.js.map +1 -1
  29. package/lib/queries/updateMany.d.ts.map +1 -1
  30. package/lib/queries/updateMany.js +1 -1
  31. package/lib/queries/updateMany.js.map +1 -1
  32. package/package.json +2 -2
  33. package/src/orm.ts +7 -2
  34. package/src/queries/count.ts +1 -2
  35. package/src/queries/createMany.ts +1 -2
  36. package/src/queries/deleteMany.ts +1 -2
  37. package/src/queries/find/getIncludedManyToManyRelations.ts +49 -0
  38. package/src/queries/find/getIncludedOneToManyRelations.ts +44 -0
  39. package/src/queries/find/tests/findMany.include.test.ts +107 -0
  40. package/src/queries/findMany.ts +76 -65
  41. package/src/queries/updateMany.ts +1 -2
package/lib/orm.d.ts CHANGED
@@ -44,8 +44,8 @@ export declare class Orm<Models extends LooseModelDefinitions, Relations extends
44
44
  deleteOne<M extends ModelName<Models>, P extends DeleteParams<Models, M>>(m: M, params: DisallowExtraKeys<DeleteParams<Models, M>, P>): Promise<DeleteOneResult<Models, M, P>>;
45
45
  deleteMany<M extends ModelName<Models>, P extends DeleteParams<Models, M>>(m: M, params: DisallowExtraKeys<DeleteParams<Models, M>, P>): Promise<DeleteManyResult<Models, M, P>>;
46
46
  count<M extends ModelName<Models>, P extends CountParams<Models, Relations, M>>(m: M, params: DisallowExtraKeys<CountParams<Models, Relations, M>, P>): Promise<number>;
47
- query<T extends QueryResultRow>(fragments: TemplateStringsArray, ...variables: readonly unknown[]): Promise<any[]>;
48
- queryOne<T extends QueryResultRow>(fragments: TemplateStringsArray, ...variables: readonly unknown[]): Promise<any>;
47
+ query<T extends QueryResultRow>(fragments: TemplateStringsArray, ...variables: readonly unknown[]): Promise<T[]>;
48
+ queryOne<T extends QueryResultRow>(fragments: TemplateStringsArray, ...variables: readonly unknown[]): Promise<T>;
49
49
  }
50
50
  export declare const orm: <Models extends LooseModelDefinitions, Relations extends LooseRelationsDefinitions<Models>>(config: Configuration<Models, Relations>) => Orm<Models, Relations>;
51
51
  //# sourceMappingURL=orm.d.ts.map
package/lib/orm.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"orm.d.ts","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orm.d.ts","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"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"}
package/lib/orm.js CHANGED
@@ -119,11 +119,17 @@ export class Orm {
119
119
  }
120
120
  async query(fragments, ...variables) {
121
121
  const query = sql(fragments, ...variables);
122
+ if (!process.env.CI) {
123
+ console.log(query.text);
124
+ console.log(query.values);
125
+ }
122
126
  const result = await this.connection.query(query);
123
127
  return result.rows;
124
128
  }
125
129
  async queryOne(fragments, ...variables) {
126
130
  const query = sql(fragments, ...variables);
131
+ if (!process.env.CI)
132
+ console.log(query.text);
127
133
  const result = await this.connection.query(query);
128
134
  if (result.rowCount === 0 || result.rowCount === null)
129
135
  throw new OrmError("No rows returned from query");
package/lib/orm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"orm.js","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orm.js","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../src/queries/count.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,eAAO,MAAM,KAAK,SACR,UAAU,UACR,iBAAiB,KACtB,MAAM,SACF,eAAe,iBAkBzB,CAAC"}
1
+ {"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../src/queries/count.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,eAAO,MAAM,KAAK,SACR,UAAU,UACR,iBAAiB,KACtB,MAAM,SACF,eAAe,iBAiBzB,CAAC"}
@@ -9,7 +9,7 @@ export const count = async (conn, config, m, query) => {
9
9
  sql: statement.text,
10
10
  values: statement.values,
11
11
  });
12
- if (process.env.NODE_ENV === "test" && !process.env.CI)
12
+ if (!process.env.CI)
13
13
  console.log(statement.text);
14
14
  const result = await conn
15
15
  .query(statement)
@@ -1 +1 @@
1
- {"version":3,"file":"count.js","sourceRoot":"","sources":["../../src/queries/count.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EACtB,IAAgB,EAChB,MAAyB,EACzB,CAAS,EACT,KAAsB,EACxB,EAAE;IACA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,CAAC,IAAI,CAAC;QACR,OAAO,EAAE,iBAAiB;QAC1B,GAAG,EAAE,SAAS,CAAC,IAAI;QACnB,MAAM,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAClD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,MAAM,IAAI;SACpB,KAAK,CAAC,SAAS,CAAC;SAChB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAE5C,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC"}
1
+ {"version":3,"file":"count.js","sourceRoot":"","sources":["../../src/queries/count.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EACtB,IAAgB,EAChB,MAAyB,EACzB,CAAS,EACT,KAAsB,EACxB,EAAE;IACA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,CAAC,IAAI,CAAC;QACR,OAAO,EAAE,iBAAiB;QAC1B,GAAG,EAAE,SAAS,CAAC,IAAI;QACnB,MAAM,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM,IAAI;SACpB,KAAK,CAAC,SAAS,CAAC;SAChB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAE5C,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createMany.d.ts","sourceRoot":"","sources":["../../src/queries/createMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,eAAO,MAAM,UAAU,SACb,UAAU,UACR,iBAAiB,KACtB,MAAM,UACD,oBAAoB,uDAsB/B,CAAC"}
1
+ {"version":3,"file":"createMany.d.ts","sourceRoot":"","sources":["../../src/queries/createMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,eAAO,MAAM,UAAU,SACb,UAAU,UACR,iBAAiB,KACtB,MAAM,UACD,oBAAoB,uDAqB/B,CAAC"}
@@ -13,7 +13,7 @@ export const createMany = async (conn, config, m, params) => {
13
13
  sql: statement.text,
14
14
  values: statement.values,
15
15
  });
16
- if (process.env.NODE_ENV === "test" && !process.env.CI)
16
+ if (!process.env.CI)
17
17
  console.log(statement.text);
18
18
  const result = await conn.query(statement);
19
19
  return params.returning
@@ -1 +1 @@
1
- {"version":3,"file":"createMany.js","sourceRoot":"","sources":["../../src/queries/createMany.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC3B,IAAgB,EAChB,MAAyB,EACzB,CAAS,EACT,MAA4B,EAC9B,EAAE;IACA,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAEvC,MAAM,CAAC,IAAI,CAAC;QACR,OAAO,EAAE,kBAAkB;QAC3B,GAAG,EAAE,SAAS,CAAC,IAAI;QACnB,MAAM,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAClD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,SAAS;QACnB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1B,CAAC,CAAC"}
1
+ {"version":3,"file":"createMany.js","sourceRoot":"","sources":["../../src/queries/createMany.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC3B,IAAgB,EAChB,MAAyB,EACzB,CAAS,EACT,MAA4B,EAC9B,EAAE;IACA,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAEvC,MAAM,CAAC,IAAI,CAAC;QACR,OAAO,EAAE,kBAAkB;QAC3B,GAAG,EAAE,SAAS,CAAC,IAAI;QACnB,MAAM,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,SAAS;QACnB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1B,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deleteMany.d.ts","sourceRoot":"","sources":["../../src/queries/deleteMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,eAAO,MAAM,UAAU,SACb,UAAU,UACR,iBAAiB,KACtB,MAAM,UACD,gBAAgB,gDAiB3B,CAAC"}
1
+ {"version":3,"file":"deleteMany.d.ts","sourceRoot":"","sources":["../../src/queries/deleteMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,eAAO,MAAM,UAAU,SACb,UAAU,UACR,iBAAiB,KACtB,MAAM,UACD,gBAAgB,gDAgB3B,CAAC"}
@@ -10,7 +10,7 @@ export const deleteMany = async (conn, config, m, params) => {
10
10
  sql: statement.text,
11
11
  values: statement.values,
12
12
  });
13
- if (process.env.NODE_ENV === "test" && !process.env.CI)
13
+ if (!process.env.CI)
14
14
  console.log(statement.text);
15
15
  const result = await conn.query(statement);
16
16
  return params.returning
@@ -1 +1 @@
1
- {"version":3,"file":"deleteMany.js","sourceRoot":"","sources":["../../src/queries/deleteMany.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC3B,IAAgB,EAChB,MAAyB,EACzB,CAAS,EACT,MAAwB,EAC1B,EAAE;IACA,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,CAAC;QACR,OAAO,EAAE,kBAAkB;QAC3B,GAAG,EAAE,SAAS,CAAC,IAAI;QACnB,MAAM,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAClD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,SAAS;QACnB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"deleteMany.js","sourceRoot":"","sources":["../../src/queries/deleteMany.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC3B,IAAgB,EAChB,MAAyB,EACzB,CAAS,EACT,MAAwB,EAC1B,EAAE;IACA,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,CAAC;QACR,OAAO,EAAE,kBAAkB;QAC3B,GAAG,EAAE,SAAS,CAAC,IAAI;QACnB,MAAM,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,SAAS;QACnB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { BaseConfiguration } from "../../schema/types/base/BaseConfiguration";
2
+ import { BaseFindParams } from "./types/BaseFindParams";
3
+ export type ManyToManySubQuery = {
4
+ model: string;
5
+ name: string;
6
+ relation: {
7
+ model: string;
8
+ type: "N:N";
9
+ foreignKey: string | string[];
10
+ otherKey: string | string[];
11
+ through: string;
12
+ };
13
+ query: BaseFindParams;
14
+ path: string[];
15
+ };
16
+ export declare const getIncludedManyToManyRelations: (config: BaseConfiguration, m: string, query: BaseFindParams, path?: string[]) => ManyToManySubQuery[];
17
+ //# sourceMappingURL=getIncludedManyToManyRelations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getIncludedManyToManyRelations.d.ts","sourceRoot":"","sources":["../../../src/queries/find/getIncludedManyToManyRelations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,KAAK,CAAC;QACZ,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC9B,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,8BAA8B,WAC/B,iBAAiB,KACtB,MAAM,SACF,cAAc,SACf,MAAM,EAAE,yBA2BjB,CAAC"}
@@ -0,0 +1,20 @@
1
+ export const getIncludedManyToManyRelations = (config, m, query, path = []) => {
2
+ const rels = config.relations[m];
3
+ const includedManyToManyRelations = Object.entries(query.include ?? {})
4
+ .filter(([r, _]) => rels[r].type === "N:N")
5
+ .map(([r, q]) => ({
6
+ model: m,
7
+ name: r,
8
+ relation: rels[r],
9
+ query: q,
10
+ path: [...path, r],
11
+ }));
12
+ const joinedManyToManyRelations = Object.entries(query.include ?? {})
13
+ .filter(([r, _]) => rels[r].type === "N:1")
14
+ .flatMap(([r, q]) => getIncludedManyToManyRelations(config, rels[r].model, q, [
15
+ ...path,
16
+ r,
17
+ ]));
18
+ return [...includedManyToManyRelations, ...joinedManyToManyRelations];
19
+ };
20
+ //# sourceMappingURL=getIncludedManyToManyRelations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getIncludedManyToManyRelations.js","sourceRoot":"","sources":["../../../src/queries/find/getIncludedManyToManyRelations.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC1C,MAAyB,EACzB,CAAS,EACT,KAAqB,EACrB,OAAiB,EAAE,EACrB,EAAE;IACA,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,2BAA2B,GAAyB,MAAM,CAAC,OAAO,CACpE,KAAK,CAAC,OAAO,IAAI,EAAE,CACtB;SACI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACd,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAmC;QACnD,KAAK,EAAE,CAAE;QACT,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;KACrB,CAAC,CAAC,CAAC;IAER,MAAM,yBAAyB,GAAyB,MAAM,CAAC,OAAO,CAClE,KAAK,CAAC,OAAO,IAAI,EAAE,CACtB;SACI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;SAC1C,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAChB,8BAA8B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAE,EAAE;QACtD,GAAG,IAAI;QACP,CAAC;KACJ,CAAC,CACL,CAAC;IAEN,OAAO,CAAC,GAAG,2BAA2B,EAAE,GAAG,yBAAyB,CAAC,CAAC;AAC1E,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { BaseConfiguration } from "../../schema/types/base/BaseConfiguration";
2
+ import { BaseRelation } from "../../schema/types/base/BaseRelation";
3
+ import { BaseFindParams } from "./types/BaseFindParams";
4
+ export type OneToManySubQuery = {
5
+ model: string;
6
+ name: string;
7
+ relation: BaseRelation;
8
+ query: BaseFindParams;
9
+ path: string[];
10
+ };
11
+ export declare const getIncludedOneToManyRelations: (config: BaseConfiguration, m: string, query: BaseFindParams, path?: string[]) => OneToManySubQuery[];
12
+ //# sourceMappingURL=getIncludedOneToManyRelations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getIncludedOneToManyRelations.d.ts","sourceRoot":"","sources":["../../../src/queries/find/getIncludedOneToManyRelations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,6BAA6B,WAC9B,iBAAiB,KACtB,MAAM,SACF,cAAc,SACf,MAAM,EAAE,wBA2BjB,CAAC"}
@@ -0,0 +1,20 @@
1
+ export const getIncludedOneToManyRelations = (config, m, query, path = []) => {
2
+ const rels = config.relations[m];
3
+ const includedOneToManyRelations = Object.entries(query.include ?? {})
4
+ .filter(([r, _]) => rels[r].type === "1:N")
5
+ .map(([r, q]) => ({
6
+ model: m,
7
+ name: r,
8
+ relation: rels[r],
9
+ query: q,
10
+ path: [...path, r],
11
+ }));
12
+ const joinedOneToManyRelations = Object.entries(query.include ?? {})
13
+ .filter(([r, _]) => rels[r].type === "N:1")
14
+ .flatMap(([r, q]) => getIncludedOneToManyRelations(config, rels[r].model, q, [
15
+ ...path,
16
+ r,
17
+ ]));
18
+ return [...includedOneToManyRelations, ...joinedOneToManyRelations];
19
+ };
20
+ //# sourceMappingURL=getIncludedOneToManyRelations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getIncludedOneToManyRelations.js","sourceRoot":"","sources":["../../../src/queries/find/getIncludedOneToManyRelations.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,6BAA6B,GAAG,CACzC,MAAyB,EACzB,CAAS,EACT,KAAqB,EACrB,OAAiB,EAAE,EACrB,EAAE;IACA,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,0BAA0B,GAAwB,MAAM,CAAC,OAAO,CAClE,KAAK,CAAC,OAAO,IAAI,EAAE,CACtB;SACI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACd,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QACjB,KAAK,EAAE,CAAE;QACT,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;KACrB,CAAC,CAAC,CAAC;IAER,MAAM,wBAAwB,GAAwB,MAAM,CAAC,OAAO,CAChE,KAAK,CAAC,OAAO,IAAI,EAAE,CACtB;SACI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;SAC1C,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAChB,6BAA6B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAE,EAAE;QACrD,GAAG,IAAI;QACP,CAAC;KACJ,CAAC,CACL,CAAC;IAEN,OAAO,CAAC,GAAG,0BAA0B,EAAE,GAAG,wBAAwB,CAAC,CAAC;AACxE,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=findMany.include.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findMany.include.test.d.ts","sourceRoot":"","sources":["../../../../src/queries/find/tests/findMany.include.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,93 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import { db } from "../../../test/db";
3
+ import { seed } from "../../../test/seed";
4
+ describe("findMany", () => {
5
+ test("it can include N:1 -> 1:N relations", async () => {
6
+ await db.transact(async (db) => {
7
+ await seed(db, {
8
+ users: [
9
+ {
10
+ username: "Russell",
11
+ tenants: [
12
+ { name: "WFMA", posts: 1 },
13
+ { name: "Popova Park", posts: 0 },
14
+ ],
15
+ },
16
+ {
17
+ username: "Dan",
18
+ tenants: [{ name: "WFMA", posts: 2 }],
19
+ },
20
+ {
21
+ username: "Fairooz",
22
+ tenants: [{ name: "WFMA", posts: 0 }],
23
+ },
24
+ ],
25
+ });
26
+ const results = await db.findMany("post", {
27
+ select: ["id", "title"],
28
+ include: {
29
+ author: {
30
+ select: ["id", "username"],
31
+ include: {
32
+ posts: { select: ["id", "title"] },
33
+ },
34
+ },
35
+ },
36
+ limit: 2,
37
+ });
38
+ expect(results.map((p) => [
39
+ p.author.username,
40
+ p.author.posts.map((p) => p.title),
41
+ ])).toEqual([
42
+ ["Russell", ["Post a"]],
43
+ ["Dan", ["Post b", "Post c"]],
44
+ ]);
45
+ }, { rollback: true });
46
+ });
47
+ test("it can include N:1 -> N:N relations", async () => {
48
+ await db.transact(async (db) => {
49
+ await seed(db, {
50
+ users: [
51
+ {
52
+ username: "Russell",
53
+ tenants: [
54
+ { name: "WFMA", posts: 1 },
55
+ { name: "Popova Park", posts: 0 },
56
+ ],
57
+ },
58
+ {
59
+ username: "Dan",
60
+ tenants: [{ name: "WFMA", posts: 2 }],
61
+ },
62
+ {
63
+ username: "Fairooz",
64
+ tenants: [{ name: "WFMA", posts: 0 }],
65
+ },
66
+ ],
67
+ });
68
+ const results = await db.findMany("post", {
69
+ select: ["id", "title"],
70
+ include: {
71
+ author: {
72
+ select: ["id", "username"],
73
+ include: {
74
+ tenants: {
75
+ select: ["id", "name"],
76
+ orderBy: ["name"],
77
+ },
78
+ },
79
+ },
80
+ },
81
+ limit: 2,
82
+ });
83
+ expect(results.map((p) => [
84
+ p.author.username,
85
+ p.author.tenants.map((t) => t.name),
86
+ ])).toEqual([
87
+ ["Russell", ["Popova Park", "WFMA"]],
88
+ ["Dan", ["WFMA"]],
89
+ ]);
90
+ }, { rollback: true });
91
+ });
92
+ });
93
+ //# sourceMappingURL=findMany.include.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findMany.include.test.js","sourceRoot":"","sources":["../../../../src/queries/find/tests/findMany.include.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"findMany.d.ts","sourceRoot":"","sources":["../../src/queries/findMany.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAM3C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,eAAO,MAAM,QAAQ,SACX,UAAU,UACR,iBAAiB,KACtB,MAAM,SACF,cAAc,uCA+FxB,CAAC"}
1
+ {"version":3,"file":"findMany.d.ts","sourceRoot":"","sources":["../../src/queries/findMany.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQ3C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,eAAO,MAAM,QAAQ,SACX,UAAU,UACR,iBAAiB,KACtB,MAAM,SACF,cAAc,uCAwGxB,CAAC"}
@@ -1,10 +1,12 @@
1
- import { groupBy } from "lodash-es";
1
+ import { dropRight, get, groupBy, set } from "lodash-es";
2
2
  import hash from "object-hash";
3
3
  import { OrmError } from "../errors";
4
4
  import { logger } from "../logger";
5
5
  import { ensureArray } from "../util/ensureArray";
6
6
  import { buildFind } from "./find/buildFind";
7
7
  import { findToSql } from "./find/findToSql";
8
+ import { getIncludedManyToManyRelations } from "./find/getIncludedManyToManyRelations";
9
+ import { getIncludedOneToManyRelations } from "./find/getIncludedOneToManyRelations";
8
10
  import { rowToObject } from "./util/rowToObject";
9
11
  export const findMany = async (conn, config, m, query) => {
10
12
  const builder = buildFind(config, m, query);
@@ -14,56 +16,67 @@ export const findMany = async (conn, config, m, query) => {
14
16
  sql: statement.text,
15
17
  values: statement.values,
16
18
  });
17
- if (process.env.NODE_ENV === "test" && !process.env.CI)
19
+ if (!process.env.CI)
18
20
  console.log(statement.text);
19
21
  const results = await conn
20
22
  .query(statement)
21
23
  .then((result) => result.rows.map(rowToObject(builder.columns)));
22
- for (const [r, subquery] of Object.entries(query.include ?? {})) {
23
- const relation = config.relations[m][r];
24
- if (relation.type === "1:N") {
25
- const relation = config.relations[m][r];
26
- const pk = config.models[m].primaryKey;
27
- const fk = ensureArray(relation.foreignKey);
28
- const lateralBy = fk.map((c, index) => ({
29
- column: c,
30
- values: results.map((result) => result[pk[index]]),
31
- }));
32
- const subqueryResults = await findMany(conn, config, relation.model, { ...subquery, lateralBy });
24
+ const fetchIncludedOneToManyRelations = getIncludedOneToManyRelations(config, m, query).map(({ model, relation, query, path }) => {
25
+ console.log("Fetching 1:N relation");
26
+ const pk = config.models[model].primaryKey;
27
+ const fk = ensureArray(relation.foreignKey);
28
+ const lateralBy = fk.map((c, index) => ({
29
+ column: c,
30
+ values: results.map((result) => get(result, [...dropRight(path, 1), pk[index]])),
31
+ }));
32
+ return findMany(conn, config, relation.model, {
33
+ ...query,
34
+ lateralBy,
35
+ }).then((subqueryResults) => {
33
36
  const lookup = groupBy(subqueryResults, (result) => {
34
37
  return hash(fk.map((c) => result[c]));
35
38
  });
36
39
  for (const result of results) {
37
- const key = hash(pk.map((c) => result[c]));
38
- result[r] = lookup[key] ?? [];
40
+ const key = hash(pk.map((c) => get(result, [...dropRight(path, 1), c])));
41
+ console.log([...path]);
42
+ set(result, [...path], lookup[key] ?? []);
39
43
  }
40
- }
41
- else if (relation.type === "N:N") {
42
- const joinFrom = Object.entries(config.relations[m]).find(([, rel]) => rel.type === "1:N" && rel.model === relation.through)?.[0];
43
- const joinTo = Object.entries(config.relations[relation.through]).find(([, rel]) => rel.type === "N:1" && rel.model === relation.model)?.[0];
44
- if (joinFrom === undefined || joinTo === undefined) {
45
- throw new OrmError("Both sides of a N:N relation must be defined", { data: { joinFrom, joinTo, query } });
46
- }
47
- const pk = config.models[m].primaryKey;
48
- const fk = ensureArray(relation.foreignKey);
49
- const lateralBy = fk.map((c, index) => ({
50
- column: c,
51
- values: results.map((result) => result[pk[index]]),
52
- }));
53
- const subqueryResults = await findMany(conn, config, relation.through, {
54
- select: ensureArray(relation.foreignKey),
55
- include: { [joinTo]: subquery },
56
- lateralBy,
44
+ });
45
+ });
46
+ const fetchIncludedManyToManyRelations = getIncludedManyToManyRelations(config, m, query).map(({ model, relation, query, path }) => {
47
+ console.log("Fetching N:N relation");
48
+ const joinFrom = Object.entries(config.relations[model]).find(([, rel]) => rel.type === "1:N" && rel.model === relation.through)?.[0];
49
+ const joinTo = Object.entries(config.relations[relation.through]).find(([, rel]) => rel.type === "N:1" && rel.model === relation.model)?.[0];
50
+ if (joinFrom === undefined || joinTo === undefined) {
51
+ throw new OrmError("Both sides of a N:N relation must be defined", {
52
+ data: { joinFrom, joinTo, query },
57
53
  });
54
+ }
55
+ const pk = config.models[model].primaryKey;
56
+ const fk = ensureArray(relation.foreignKey);
57
+ const lateralBy = fk.map((c, index) => ({
58
+ column: c,
59
+ values: results.map((result) => get(result, [...dropRight(path, 1), pk[index]])),
60
+ }));
61
+ return findMany(conn, config, relation.through, {
62
+ select: ensureArray(relation.foreignKey),
63
+ include: { [joinTo]: query },
64
+ lateralBy,
65
+ }).then((subqueryResults) => {
58
66
  const lookup = groupBy(subqueryResults, (result) => {
59
67
  return hash(fk.map((c) => result[c]));
60
68
  });
61
69
  for (const result of results) {
62
- const key = hash(pk.map((c) => result[c]));
63
- result[r] = (lookup[key] ?? []).map((relation) => relation[joinTo] ?? []);
70
+ const key = hash(pk.map((c) => get(result, [...dropRight(path, 1), c])));
71
+ console.log([...path]);
72
+ set(result, [...path], (lookup[key] ?? []).map((r) => r[joinTo] ?? []));
64
73
  }
65
- }
66
- }
74
+ });
75
+ });
76
+ await Promise.all([
77
+ ...fetchIncludedOneToManyRelations,
78
+ ...fetchIncludedManyToManyRelations,
79
+ ]);
67
80
  return results;
68
81
  };
69
82
  //# sourceMappingURL=findMany.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findMany.js","sourceRoot":"","sources":["../../src/queries/findMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,aAAa,CAAC;AAI/B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EACzB,IAAgB,EAChB,MAAyB,EACzB,CAAS,EACT,KAAqB,EACvB,EAAE;IACA,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC;QACR,OAAO,EAAE,iBAAiB;QAC1B,GAAG,EAAE,SAAS,CAAC,IAAI;QACnB,MAAM,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAClD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEhC,MAAM,OAAO,GAAG,MAAM,IAAI;SACrB,KAAK,CAAC,SAAS,CAAC;SAChB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAErE,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAExC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YACvC,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAE5C,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACpC,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;aACrD,CAAC,CAAC,CAAC;YAEJ,MAAM,eAAe,GAAG,MAAM,QAAQ,CAClC,IAAI,EACJ,MAAM,EACN,QAAQ,CAAC,KAAK,EACd,EAAE,GAAG,QAAS,EAAE,SAAS,EAAE,CAC9B,CAAC;YAEF,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC/C,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAClC,CAAC;QACL,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACrD,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CACR,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,OAAO,CAC3D,EAAE,CAAC,CAAC,CAAC,CAAC;YAEP,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CACzB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CACrC,CAAC,IAAI,CACF,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAClE,EAAE,CAAC,CAAC,CAAC,CAAC;YAEP,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjD,MAAM,IAAI,QAAQ,CACd,8CAA8C,EAC9C,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CACxC,CAAC;YACN,CAAC;YAED,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YACvC,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACpC,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;aACrD,CAAC,CAAC,CAAC;YAEJ,MAAM,eAAe,GAAG,MAAM,QAAQ,CAClC,IAAI,EACJ,MAAM,EACN,QAAQ,CAAC,OAAO,EAChB;gBACI,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACxC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,QAAS,EAAE;gBAChC,SAAS;aACZ,CACJ,CAAC;YACF,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC/C,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAC/B,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CACvC,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"findMany.js","sourceRoot":"","sources":["../../src/queries/findMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,IAAI,MAAM,aAAa,CAAC;AAI/B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EACzB,IAAgB,EAChB,MAAyB,EACzB,CAAS,EACT,KAAqB,EACvB,EAAE;IACA,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC;QACR,OAAO,EAAE,iBAAiB;QAC1B,GAAG,EAAE,SAAS,CAAC,IAAI;QACnB,MAAM,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,MAAM,IAAI;SACrB,KAAK,CAAC,SAAS,CAAC;SAChB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAErE,MAAM,+BAA+B,GAAG,6BAA6B,CACjE,MAAM,EACN,CAAC,EACD,KAAK,CACR,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;QAC3C,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC3B,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAClD;SACJ,CAAC,CAAC,CAAC;QACJ,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE;YAC1C,GAAG,KAAK;YACR,SAAS;SACZ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC/C,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,CACZ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACzD,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBACvB,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,gCAAgC,GAAG,8BAA8B,CACnE,MAAM,EACN,CAAC,EACD,KAAK,CACR,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CACzD,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,OAAO,CACpE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEP,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAClE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAClE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEP,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,IAAI,QAAQ,CAAC,8CAA8C,EAAE;gBAC/D,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;aACpC,CAAC,CAAC;QACP,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;QAC3C,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC3B,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAClD;SACJ,CAAC,CAAC,CAAC;QAEJ,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE;YAC5C,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;YACxC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE;YAC5B,SAAS;SACZ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC/C,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,CACZ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACzD,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBACvB,GAAG,CACC,MAAM,EACN,CAAC,GAAG,IAAI,CAAC,EACT,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAClD,CAAC;YACN,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,GAAG,+BAA+B;QAClC,GAAG,gCAAgC;KACtC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateMany.d.ts","sourceRoot":"","sources":["../../src/queries/updateMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAInE,eAAO,MAAM,UAAU,SACb,UAAU,UACR,iBAAiB,KACtB,MAAM,UACD,gBAAgB,gDAiB3B,CAAC"}
1
+ {"version":3,"file":"updateMany.d.ts","sourceRoot":"","sources":["../../src/queries/updateMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAInE,eAAO,MAAM,UAAU,SACb,UAAU,UACR,iBAAiB,KACtB,MAAM,UACD,gBAAgB,gDAgB3B,CAAC"}
@@ -10,7 +10,7 @@ export const updateMany = async (conn, config, m, params) => {
10
10
  sql: statement.text,
11
11
  values: statement.values,
12
12
  });
13
- if (process.env.NODE_ENV === "test" && !process.env.CI)
13
+ if (!process.env.CI)
14
14
  console.log(statement.text);
15
15
  const result = await conn.query(statement);
16
16
  return params.returning
@@ -1 +1 @@
1
- {"version":3,"file":"updateMany.js","sourceRoot":"","sources":["../../src/queries/updateMany.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC3B,IAAgB,EAChB,MAAyB,EACzB,CAAS,EACT,MAAwB,EAC1B,EAAE;IACA,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,CAAC;QACR,OAAO,EAAE,kBAAkB;QAC3B,GAAG,EAAE,SAAS,CAAC,IAAI;QACnB,MAAM,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAClD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,SAAS;QACnB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"updateMany.js","sourceRoot":"","sources":["../../src/queries/updateMany.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC3B,IAAgB,EAChB,MAAyB,EACzB,CAAS,EACT,MAAwB,EAC1B,EAAE;IACA,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,CAAC;QACR,OAAO,EAAE,kBAAkB;QAC3B,GAAG,EAAE,SAAS,CAAC,IAAI;QACnB,MAAM,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,SAAS;QACnB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@casekit/orm",
3
- "version": "0.0.1-alpha.3",
3
+ "version": "0.0.1-alpha.5",
4
4
  "description": "A simple ORM",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -20,7 +20,7 @@
20
20
  "@types/pg-format": "^1.0.5",
21
21
  "@types/pluralize": "^0.0.33",
22
22
  "@types/uuid": "^9.0.8",
23
- "@typescript-eslint/eslint-plugin": "^7.6.0",
23
+ "@typescript-eslint/eslint-plugin": "^7.7.0",
24
24
  "@vitest/coverage-istanbul": "^1.4.0",
25
25
  "@vitest/coverage-v8": "^1.4.0",
26
26
  "@vitest/ui": "^1.4.0",
package/src/orm.ts CHANGED
@@ -328,8 +328,12 @@ export class Orm<
328
328
  public async query<T extends QueryResultRow>(
329
329
  fragments: TemplateStringsArray,
330
330
  ...variables: readonly unknown[]
331
- ) {
331
+ ): Promise<T[]> {
332
332
  const query = sql(fragments, ...variables);
333
+ if (!process.env.CI) {
334
+ console.log(query.text);
335
+ console.log(query.values);
336
+ }
333
337
  const result = await this.connection.query<T>(query);
334
338
  return result.rows;
335
339
  }
@@ -337,8 +341,9 @@ export class Orm<
337
341
  public async queryOne<T extends QueryResultRow>(
338
342
  fragments: TemplateStringsArray,
339
343
  ...variables: readonly unknown[]
340
- ) {
344
+ ): Promise<T> {
341
345
  const query = sql(fragments, ...variables);
346
+ if (!process.env.CI) console.log(query.text);
342
347
  const result = await this.connection.query<T>(query);
343
348
  if (result.rowCount === 0 || result.rowCount === null)
344
349
  throw new OrmError("No rows returned from query");
@@ -20,8 +20,7 @@ export const count = async (
20
20
  values: statement.values,
21
21
  });
22
22
 
23
- if (process.env.NODE_ENV === "test" && !process.env.CI)
24
- console.log(statement.text);
23
+ if (!process.env.CI) console.log(statement.text);
25
24
 
26
25
  const result = await conn
27
26
  .query(statement)
@@ -26,8 +26,7 @@ export const createMany = async (
26
26
  values: statement.values,
27
27
  });
28
28
 
29
- if (process.env.NODE_ENV === "test" && !process.env.CI)
30
- console.log(statement.text);
29
+ if (!process.env.CI) console.log(statement.text);
31
30
 
32
31
  const result = await conn.query(statement);
33
32
  return params.returning
@@ -21,8 +21,7 @@ export const deleteMany = async (
21
21
  values: statement.values,
22
22
  });
23
23
 
24
- if (process.env.NODE_ENV === "test" && !process.env.CI)
25
- console.log(statement.text);
24
+ if (!process.env.CI) console.log(statement.text);
26
25
 
27
26
  const result = await conn.query(statement);
28
27
  return params.returning
@@ -0,0 +1,49 @@
1
+ import { BaseConfiguration } from "../../schema/types/base/BaseConfiguration";
2
+ import { BaseFindParams } from "./types/BaseFindParams";
3
+
4
+ export type ManyToManySubQuery = {
5
+ model: string;
6
+ name: string;
7
+ relation: {
8
+ model: string;
9
+ type: "N:N";
10
+ foreignKey: string | string[];
11
+ otherKey: string | string[];
12
+ through: string;
13
+ };
14
+ query: BaseFindParams;
15
+ path: string[];
16
+ };
17
+
18
+ export const getIncludedManyToManyRelations = (
19
+ config: BaseConfiguration,
20
+ m: string,
21
+ query: BaseFindParams,
22
+ path: string[] = [],
23
+ ) => {
24
+ const rels = config.relations[m];
25
+ const includedManyToManyRelations: ManyToManySubQuery[] = Object.entries(
26
+ query.include ?? {},
27
+ )
28
+ .filter(([r, _]) => rels[r].type === "N:N")
29
+ .map(([r, q]) => ({
30
+ model: m,
31
+ name: r,
32
+ relation: rels[r] as ManyToManySubQuery["relation"],
33
+ query: q!,
34
+ path: [...path, r],
35
+ }));
36
+
37
+ const joinedManyToManyRelations: ManyToManySubQuery[] = Object.entries(
38
+ query.include ?? {},
39
+ )
40
+ .filter(([r, _]) => rels[r].type === "N:1")
41
+ .flatMap(([r, q]) =>
42
+ getIncludedManyToManyRelations(config, rels[r].model, q!, [
43
+ ...path,
44
+ r,
45
+ ]),
46
+ );
47
+
48
+ return [...includedManyToManyRelations, ...joinedManyToManyRelations];
49
+ };
@@ -0,0 +1,44 @@
1
+ import { BaseConfiguration } from "../../schema/types/base/BaseConfiguration";
2
+ import { BaseRelation } from "../../schema/types/base/BaseRelation";
3
+ import { BaseFindParams } from "./types/BaseFindParams";
4
+
5
+ export type OneToManySubQuery = {
6
+ model: string;
7
+ name: string;
8
+ relation: BaseRelation;
9
+ query: BaseFindParams;
10
+ path: string[];
11
+ };
12
+
13
+ export const getIncludedOneToManyRelations = (
14
+ config: BaseConfiguration,
15
+ m: string,
16
+ query: BaseFindParams,
17
+ path: string[] = [],
18
+ ) => {
19
+ const rels = config.relations[m];
20
+ const includedOneToManyRelations: OneToManySubQuery[] = Object.entries(
21
+ query.include ?? {},
22
+ )
23
+ .filter(([r, _]) => rels[r].type === "1:N")
24
+ .map(([r, q]) => ({
25
+ model: m,
26
+ name: r,
27
+ relation: rels[r],
28
+ query: q!,
29
+ path: [...path, r],
30
+ }));
31
+
32
+ const joinedOneToManyRelations: OneToManySubQuery[] = Object.entries(
33
+ query.include ?? {},
34
+ )
35
+ .filter(([r, _]) => rels[r].type === "N:1")
36
+ .flatMap(([r, q]) =>
37
+ getIncludedOneToManyRelations(config, rels[r].model, q!, [
38
+ ...path,
39
+ r,
40
+ ]),
41
+ );
42
+
43
+ return [...includedOneToManyRelations, ...joinedOneToManyRelations];
44
+ };
@@ -0,0 +1,107 @@
1
+ import { describe, expect, test } from "vitest";
2
+
3
+ import { db } from "../../../test/db";
4
+ import { seed } from "../../../test/seed";
5
+
6
+ describe("findMany", () => {
7
+ test("it can include N:1 -> 1:N relations", async () => {
8
+ await db.transact(
9
+ async (db) => {
10
+ await seed(db, {
11
+ users: [
12
+ {
13
+ username: "Russell",
14
+ tenants: [
15
+ { name: "WFMA", posts: 1 },
16
+ { name: "Popova Park", posts: 0 },
17
+ ],
18
+ },
19
+ {
20
+ username: "Dan",
21
+ tenants: [{ name: "WFMA", posts: 2 }],
22
+ },
23
+ {
24
+ username: "Fairooz",
25
+ tenants: [{ name: "WFMA", posts: 0 }],
26
+ },
27
+ ],
28
+ });
29
+ const results = await db.findMany("post", {
30
+ select: ["id", "title"],
31
+ include: {
32
+ author: {
33
+ select: ["id", "username"],
34
+ include: {
35
+ posts: { select: ["id", "title"] },
36
+ },
37
+ },
38
+ },
39
+ limit: 2,
40
+ });
41
+
42
+ expect(
43
+ results.map((p) => [
44
+ p.author.username,
45
+ p.author.posts.map((p) => p.title),
46
+ ]),
47
+ ).toEqual([
48
+ ["Russell", ["Post a"]],
49
+ ["Dan", ["Post b", "Post c"]],
50
+ ]);
51
+ },
52
+ { rollback: true },
53
+ );
54
+ });
55
+
56
+ test("it can include N:1 -> N:N relations", async () => {
57
+ await db.transact(
58
+ async (db) => {
59
+ await seed(db, {
60
+ users: [
61
+ {
62
+ username: "Russell",
63
+ tenants: [
64
+ { name: "WFMA", posts: 1 },
65
+ { name: "Popova Park", posts: 0 },
66
+ ],
67
+ },
68
+ {
69
+ username: "Dan",
70
+ tenants: [{ name: "WFMA", posts: 2 }],
71
+ },
72
+ {
73
+ username: "Fairooz",
74
+ tenants: [{ name: "WFMA", posts: 0 }],
75
+ },
76
+ ],
77
+ });
78
+ const results = await db.findMany("post", {
79
+ select: ["id", "title"],
80
+ include: {
81
+ author: {
82
+ select: ["id", "username"],
83
+ include: {
84
+ tenants: {
85
+ select: ["id", "name"],
86
+ orderBy: ["name"],
87
+ },
88
+ },
89
+ },
90
+ },
91
+ limit: 2,
92
+ });
93
+
94
+ expect(
95
+ results.map((p) => [
96
+ p.author.username,
97
+ p.author.tenants.map((t) => t.name),
98
+ ]),
99
+ ).toEqual([
100
+ ["Russell", ["Popova Park", "WFMA"]],
101
+ ["Dan", ["WFMA"]],
102
+ ]);
103
+ },
104
+ { rollback: true },
105
+ );
106
+ });
107
+ });
@@ -1,4 +1,4 @@
1
- import { groupBy } from "lodash-es";
1
+ import { dropRight, get, groupBy, set } from "lodash-es";
2
2
  import hash from "object-hash";
3
3
  import { BaseConfiguration } from "src/schema/types/base/BaseConfiguration";
4
4
 
@@ -8,6 +8,8 @@ import { logger } from "../logger";
8
8
  import { ensureArray } from "../util/ensureArray";
9
9
  import { buildFind } from "./find/buildFind";
10
10
  import { findToSql } from "./find/findToSql";
11
+ import { getIncludedManyToManyRelations } from "./find/getIncludedManyToManyRelations";
12
+ import { getIncludedOneToManyRelations } from "./find/getIncludedOneToManyRelations";
11
13
  import { BaseFindParams } from "./find/types/BaseFindParams";
12
14
  import { rowToObject } from "./util/rowToObject";
13
15
 
@@ -25,89 +27,98 @@ export const findMany = async (
25
27
  values: statement.values,
26
28
  });
27
29
 
28
- if (process.env.NODE_ENV === "test" && !process.env.CI)
29
- console.log(statement.text);
30
+ if (!process.env.CI) console.log(statement.text);
30
31
 
31
32
  const results = await conn
32
33
  .query(statement)
33
34
  .then((result) => result.rows.map(rowToObject(builder.columns)));
34
35
 
35
- for (const [r, subquery] of Object.entries(query.include ?? {})) {
36
- const relation = config.relations[m]![r];
37
- if (relation.type === "1:N") {
38
- const relation = config.relations[m][r];
39
-
40
- const pk = config.models[m].primaryKey;
41
- const fk = ensureArray(relation.foreignKey);
42
-
43
- const lateralBy = fk.map((c, index) => ({
44
- column: c,
45
- values: results.map((result) => result[pk[index]]),
46
- }));
47
-
48
- const subqueryResults = await findMany(
49
- conn,
50
- config,
51
- relation.model,
52
- { ...subquery!, lateralBy },
53
- );
54
-
36
+ const fetchIncludedOneToManyRelations = getIncludedOneToManyRelations(
37
+ config,
38
+ m,
39
+ query,
40
+ ).map(({ model, relation, query, path }) => {
41
+ console.log("Fetching 1:N relation");
42
+ const pk = config.models[model].primaryKey;
43
+ const fk = ensureArray(relation.foreignKey);
44
+ const lateralBy = fk.map((c, index) => ({
45
+ column: c,
46
+ values: results.map((result) =>
47
+ get(result, [...dropRight(path, 1), pk[index]]),
48
+ ),
49
+ }));
50
+ return findMany(conn, config, relation.model, {
51
+ ...query,
52
+ lateralBy,
53
+ }).then((subqueryResults) => {
55
54
  const lookup = groupBy(subqueryResults, (result) => {
56
55
  return hash(fk.map((c) => result[c]));
57
56
  });
58
-
59
57
  for (const result of results) {
60
- const key = hash(pk.map((c) => result[c]));
61
- result[r] = lookup[key] ?? [];
62
- }
63
- } else if (relation.type === "N:N") {
64
- const joinFrom = Object.entries(config.relations[m]).find(
65
- ([, rel]) =>
66
- rel.type === "1:N" && rel.model === relation.through,
67
- )?.[0];
68
-
69
- const joinTo = Object.entries(
70
- config.relations[relation.through],
71
- ).find(
72
- ([, rel]) => rel.type === "N:1" && rel.model === relation.model,
73
- )?.[0];
74
-
75
- if (joinFrom === undefined || joinTo === undefined) {
76
- throw new OrmError(
77
- "Both sides of a N:N relation must be defined",
78
- { data: { joinFrom, joinTo, query } },
58
+ const key = hash(
59
+ pk.map((c) => get(result, [...dropRight(path, 1), c])),
79
60
  );
61
+ console.log([...path]);
62
+ set(result, [...path], lookup[key] ?? []);
80
63
  }
64
+ });
65
+ });
81
66
 
82
- const pk = config.models[m].primaryKey;
83
- const fk = ensureArray(relation.foreignKey);
84
- const lateralBy = fk.map((c, index) => ({
85
- column: c,
86
- values: results.map((result) => result[pk[index]]),
87
- }));
67
+ const fetchIncludedManyToManyRelations = getIncludedManyToManyRelations(
68
+ config,
69
+ m,
70
+ query,
71
+ ).map(({ model, relation, query, path }) => {
72
+ console.log("Fetching N:N relation");
73
+ const joinFrom = Object.entries(config.relations[model]).find(
74
+ ([, rel]) => rel.type === "1:N" && rel.model === relation.through,
75
+ )?.[0];
76
+
77
+ const joinTo = Object.entries(config.relations[relation.through]).find(
78
+ ([, rel]) => rel.type === "N:1" && rel.model === relation.model,
79
+ )?.[0];
80
+
81
+ if (joinFrom === undefined || joinTo === undefined) {
82
+ throw new OrmError("Both sides of a N:N relation must be defined", {
83
+ data: { joinFrom, joinTo, query },
84
+ });
85
+ }
88
86
 
89
- const subqueryResults = await findMany(
90
- conn,
91
- config,
92
- relation.through,
93
- {
94
- select: ensureArray(relation.foreignKey),
95
- include: { [joinTo]: subquery! },
96
- lateralBy,
97
- },
98
- );
87
+ const pk = config.models[model].primaryKey;
88
+ const fk = ensureArray(relation.foreignKey);
89
+ const lateralBy = fk.map((c, index) => ({
90
+ column: c,
91
+ values: results.map((result) =>
92
+ get(result, [...dropRight(path, 1), pk[index]]),
93
+ ),
94
+ }));
95
+
96
+ return findMany(conn, config, relation.through, {
97
+ select: ensureArray(relation.foreignKey),
98
+ include: { [joinTo]: query },
99
+ lateralBy,
100
+ }).then((subqueryResults) => {
99
101
  const lookup = groupBy(subqueryResults, (result) => {
100
102
  return hash(fk.map((c) => result[c]));
101
103
  });
102
-
103
104
  for (const result of results) {
104
- const key = hash(pk.map((c) => result[c]));
105
- result[r] = (lookup[key] ?? []).map(
106
- (relation) => relation[joinTo] ?? [],
105
+ const key = hash(
106
+ pk.map((c) => get(result, [...dropRight(path, 1), c])),
107
+ );
108
+ console.log([...path]);
109
+ set(
110
+ result,
111
+ [...path],
112
+ (lookup[key] ?? []).map((r) => r[joinTo] ?? []),
107
113
  );
108
114
  }
109
- }
110
- }
115
+ });
116
+ });
117
+
118
+ await Promise.all([
119
+ ...fetchIncludedOneToManyRelations,
120
+ ...fetchIncludedManyToManyRelations,
121
+ ]);
111
122
 
112
123
  return results;
113
124
  };
@@ -21,8 +21,7 @@ export const updateMany = async (
21
21
  values: statement.values,
22
22
  });
23
23
 
24
- if (process.env.NODE_ENV === "test" && !process.env.CI)
25
- console.log(statement.text);
24
+ if (!process.env.CI) console.log(statement.text);
26
25
 
27
26
  const result = await conn.query(statement);
28
27
  return params.returning