@tyravel/database 0.2.0 → 0.2.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 (80) hide show
  1. package/dist/eager-loader.d.ts +6 -0
  2. package/dist/eager-loader.d.ts.map +1 -0
  3. package/dist/eager-loader.js +23 -0
  4. package/dist/eager-loader.js.map +1 -0
  5. package/dist/eager-loading.test.d.ts +2 -0
  6. package/dist/eager-loading.test.d.ts.map +1 -0
  7. package/dist/eager-loading.test.js +150 -0
  8. package/dist/eager-loading.test.js.map +1 -0
  9. package/dist/factory-helpers.d.ts +7 -0
  10. package/dist/factory-helpers.d.ts.map +1 -0
  11. package/dist/factory-helpers.js +23 -0
  12. package/dist/factory-helpers.js.map +1 -0
  13. package/dist/factory.d.ts +12 -0
  14. package/dist/factory.d.ts.map +1 -0
  15. package/dist/factory.js +25 -0
  16. package/dist/factory.js.map +1 -0
  17. package/dist/factory.test.d.ts +2 -0
  18. package/dist/factory.test.d.ts.map +1 -0
  19. package/dist/factory.test.js +53 -0
  20. package/dist/factory.test.js.map +1 -0
  21. package/dist/index.d.ts +5 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +5 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/migrator.d.ts.map +1 -1
  26. package/dist/migrator.js +11 -12
  27. package/dist/migrator.js.map +1 -1
  28. package/dist/model-query-builder.d.ts +3 -0
  29. package/dist/model-query-builder.d.ts.map +1 -1
  30. package/dist/model-query-builder.js +17 -1
  31. package/dist/model-query-builder.js.map +1 -1
  32. package/dist/model.d.ts +5 -0
  33. package/dist/model.d.ts.map +1 -1
  34. package/dist/model.js +14 -0
  35. package/dist/model.js.map +1 -1
  36. package/dist/relations/belongs-to-many.d.ts +8 -0
  37. package/dist/relations/belongs-to-many.d.ts.map +1 -1
  38. package/dist/relations/belongs-to-many.js +49 -0
  39. package/dist/relations/belongs-to-many.js.map +1 -1
  40. package/dist/relations/belongs-to.d.ts +7 -0
  41. package/dist/relations/belongs-to.d.ts.map +1 -1
  42. package/dist/relations/belongs-to.js +33 -2
  43. package/dist/relations/belongs-to.js.map +1 -1
  44. package/dist/relations/has-many.d.ts +5 -0
  45. package/dist/relations/has-many.d.ts.map +1 -1
  46. package/dist/relations/has-many.js +32 -0
  47. package/dist/relations/has-many.js.map +1 -1
  48. package/dist/relations/has-one.d.ts +5 -0
  49. package/dist/relations/has-one.d.ts.map +1 -1
  50. package/dist/relations/has-one.js +28 -0
  51. package/dist/relations/has-one.js.map +1 -1
  52. package/dist/relations/relation.d.ts +6 -0
  53. package/dist/relations/relation.d.ts.map +1 -1
  54. package/dist/relations/relation.js +15 -0
  55. package/dist/relations/relation.js.map +1 -1
  56. package/dist/schema/blueprint.d.ts +6 -1
  57. package/dist/schema/blueprint.d.ts.map +1 -1
  58. package/dist/schema/blueprint.js +88 -13
  59. package/dist/schema/blueprint.js.map +1 -1
  60. package/dist/schema/blueprint.test.d.ts +2 -0
  61. package/dist/schema/blueprint.test.d.ts.map +1 -0
  62. package/dist/schema/blueprint.test.js +36 -0
  63. package/dist/schema/blueprint.test.js.map +1 -0
  64. package/dist/schema/schema-builder.d.ts +2 -0
  65. package/dist/schema/schema-builder.d.ts.map +1 -1
  66. package/dist/schema/schema-builder.js +53 -3
  67. package/dist/schema/schema-builder.js.map +1 -1
  68. package/dist/seeder-runner.d.ts +10 -0
  69. package/dist/seeder-runner.d.ts.map +1 -0
  70. package/dist/seeder-runner.js +52 -0
  71. package/dist/seeder-runner.js.map +1 -0
  72. package/dist/seeder-runner.test.d.ts +2 -0
  73. package/dist/seeder-runner.test.d.ts.map +1 -0
  74. package/dist/seeder-runner.test.js +58 -0
  75. package/dist/seeder-runner.test.js.map +1 -0
  76. package/dist/seeder.d.ts +5 -0
  77. package/dist/seeder.d.ts.map +1 -0
  78. package/dist/seeder.js +6 -0
  79. package/dist/seeder.js.map +1 -0
  80. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
package/dist/model.js CHANGED
@@ -10,6 +10,7 @@ export class Model {
10
10
  static resolver;
11
11
  static globalScopes = [];
12
12
  attributes;
13
+ relations = {};
13
14
  constructor(attributes = {}) {
14
15
  this.attributes = { ...attributes };
15
16
  }
@@ -55,6 +56,10 @@ export class Model {
55
56
  }
56
57
  return new this(attributes);
57
58
  }
59
+ static with(...relations) {
60
+ const model = this;
61
+ return model.query().with(...relations);
62
+ }
58
63
  static where(column, operatorOrValue, value) {
59
64
  const model = this;
60
65
  const builder = model.query();
@@ -80,6 +85,15 @@ export class Model {
80
85
  const relatedSnake = singularSnakeCase(RelatedModel.name);
81
86
  return new BelongsToManyRelation(this, RelatedModel, pivotTable ?? `${parentSnake}_${relatedSnake}`, foreignPivotKey ?? `${parentSnake}_id`, relatedPivotKey ?? `${relatedSnake}_id`, parentKey ?? parentModel.primaryKey, relatedKey ?? RelatedModel.primaryKey);
82
87
  }
88
+ setRelation(name, value) {
89
+ this.relations[name] = value;
90
+ }
91
+ getRelation(name) {
92
+ return this.relations[name];
93
+ }
94
+ relationLoaded(name) {
95
+ return Object.prototype.hasOwnProperty.call(this.relations, name);
96
+ }
83
97
  getAttribute(key) {
84
98
  return this.attributes[key];
85
99
  }
package/dist/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { Model } from '../model.js';
2
2
  import type { ModelStatic } from '../model-types.js';
3
+ import type { RowValue } from '../types.js';
3
4
  import { Relation } from './relation.js';
4
5
  export declare class BelongsToManyRelation<Related extends Model = Model> extends Relation<Related> {
5
6
  private readonly pivotTable;
@@ -9,5 +10,12 @@ export declare class BelongsToManyRelation<Related extends Model = Model> extend
9
10
  private readonly relatedKey;
10
11
  constructor(parent: Model, relatedModel: ModelStatic, pivotTable: string, foreignPivotKey: string, relatedPivotKey: string, parentKey: string, relatedKey: string);
11
12
  get(): Promise<Related[]>;
13
+ eagerLoadKeys(parents: Model[]): RowValue[];
14
+ defaultEagerValue(): Related[];
15
+ eagerLoad(keys: RowValue[]): Promise<Array<{
16
+ parentKey: RowValue;
17
+ model: Related;
18
+ }>>;
19
+ matchEager(parents: Model[], results: unknown, relationName: string): void;
12
20
  }
13
21
  //# sourceMappingURL=belongs-to-many.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"belongs-to-many.d.ts","sourceRoot":"","sources":["../../src/relations/belongs-to-many.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,qBAAqB,CAAC,OAAO,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,QAAQ,CAAC,OAAO,CAAC;IAIvF,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAN3B,MAAM,EAAE,KAAK,EACb,YAAY,EAAE,WAAW,EACR,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM;IAK/B,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CA2BhC"}
1
+ {"version":3,"file":"belongs-to-many.d.ts","sourceRoot":"","sources":["../../src/relations/belongs-to-many.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,qBAAqB,CAAC,OAAO,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,QAAQ,CAAC,OAAO,CAAC;IAIvF,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAN3B,MAAM,EAAE,KAAK,EACb,YAAY,EAAE,WAAW,EACR,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM;IAK/B,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IA4BtB,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE;IAM3C,iBAAiB,IAAI,OAAO,EAAE;IAIxB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,SAAS,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IA8B1F,UAAU,CACjB,OAAO,EAAE,KAAK,EAAE,EAChB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,GACnB,IAAI;CAkBR"}
@@ -34,5 +34,54 @@ export class BelongsToManyRelation extends Relation {
34
34
  const ModelClass = this.relatedModel;
35
35
  return result.rows.map((row) => new ModelClass(row));
36
36
  }
37
+ eagerLoadKeys(parents) {
38
+ return parents
39
+ .map((parent) => parent.getAttribute(this.parentKey))
40
+ .filter((key) => key !== undefined && key !== null);
41
+ }
42
+ defaultEagerValue() {
43
+ return [];
44
+ }
45
+ async eagerLoad(keys) {
46
+ const grammar = this.relatedModel.getConnection().grammar;
47
+ const relatedTable = this.relatedModel.table;
48
+ const pivot = grammar.wrapIdentifier(this.pivotTable);
49
+ const related = grammar.wrapIdentifier(relatedTable);
50
+ const parentPivotColumn = grammar.wrapIdentifier(this.foreignPivotKey);
51
+ const placeholders = keys.map((_, index) => grammar.parameter(index + 1)).join(', ');
52
+ const sql = `
53
+ SELECT ${related}.*, ${pivot}.${parentPivotColumn} AS "__eager_parent_key"
54
+ FROM ${related}
55
+ INNER JOIN ${pivot}
56
+ ON ${related}.${grammar.wrapIdentifier(this.relatedKey)}
57
+ = ${pivot}.${grammar.wrapIdentifier(this.relatedPivotKey)}
58
+ WHERE ${pivot}.${parentPivotColumn} IN (${placeholders})
59
+ `;
60
+ const result = await this.relatedModel.getConnection().query(sql, keys);
61
+ const ModelClass = this.relatedModel;
62
+ return result.rows.map((row) => {
63
+ const parentKey = row.__eager_parent_key;
64
+ const attributes = { ...row };
65
+ delete attributes.__eager_parent_key;
66
+ return { parentKey, model: new ModelClass(attributes) };
67
+ });
68
+ }
69
+ matchEager(parents, results, relationName) {
70
+ const entries = results;
71
+ const dictionary = new Map();
72
+ for (const { parentKey, model } of entries) {
73
+ const bucket = dictionary.get(parentKey);
74
+ if (bucket) {
75
+ bucket.push(model);
76
+ }
77
+ else {
78
+ dictionary.set(parentKey, [model]);
79
+ }
80
+ }
81
+ for (const parent of parents) {
82
+ const key = parent.getAttribute(this.parentKey);
83
+ parent.setRelation(relationName, dictionary.get(key) ?? []);
84
+ }
85
+ }
37
86
  }
38
87
  //# sourceMappingURL=belongs-to-many.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"belongs-to-many.js","sourceRoot":"","sources":["../../src/relations/belongs-to-many.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,qBAAqD,SAAQ,QAAiB;IAItE;IACA;IACA;IACA;IACA;IAPnB,YACE,MAAa,EACb,YAAyB,EACR,UAAkB,EAClB,eAAuB,EACvB,eAAuB,EACvB,SAAiB,EACjB,UAAkB;QAEnC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QANX,eAAU,GAAV,UAAU,CAAQ;QAClB,oBAAe,GAAf,eAAe,CAAQ;QACvB,oBAAe,GAAf,eAAe,CAAQ;QACvB,cAAS,GAAT,SAAS,CAAQ;QACjB,eAAU,GAAV,UAAU,CAAQ;IAGrC,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAkB,CAAa,CAAC;QAC/E,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAErD,MAAM,GAAG,GAAG;eACD,OAAO;aACT,OAAO;mBACD,KAAK;aACX,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;aAClD,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;cACpD,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;KACxF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,YAEZ,CAAC;QAEb,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;CACF"}
1
+ {"version":3,"file":"belongs-to-many.js","sourceRoot":"","sources":["../../src/relations/belongs-to-many.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,17 @@
1
1
  import type { Model } from '../model.js';
2
2
  import type { ModelStatic } from '../model-types.js';
3
+ import type { ModelQueryBuilder } from '../model-query-builder.js';
4
+ import type { RowValue } from '../types.js';
3
5
  import { Relation } from './relation.js';
4
6
  export declare class BelongsToRelation<Related extends Model = Model> extends Relation<Related> {
5
7
  private readonly foreignKey;
6
8
  private readonly ownerKey;
7
9
  constructor(parent: Model, relatedModel: ModelStatic, foreignKey: string, ownerKey: string);
10
+ query(): ModelQueryBuilder;
8
11
  get(): Promise<Related | null>;
12
+ eagerLoadKeys(parents: Model[]): RowValue[];
13
+ defaultEagerValue(): null;
14
+ eagerLoad(keys: RowValue[]): Promise<Related[]>;
15
+ matchEager(parents: Model[], results: unknown, relationName: string): void;
9
16
  }
10
17
  //# sourceMappingURL=belongs-to.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"belongs-to.d.ts","sourceRoot":"","sources":["../../src/relations/belongs-to.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,iBAAiB,CAAC,OAAO,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,QAAQ,CAAC,OAAO,CAAC;IAInF,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAHzB,MAAM,EAAE,KAAK,EACb,YAAY,EAAE,WAAW,EACR,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;IAK7B,GAAG,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAWrC"}
1
+ {"version":3,"file":"belongs-to.d.ts","sourceRoot":"","sources":["../../src/relations/belongs-to.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,iBAAiB,CAAC,OAAO,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,QAAQ,CAAC,OAAO,CAAC;IAInF,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAHzB,MAAM,EAAE,KAAK,EACb,YAAY,EAAE,WAAW,EACR,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;IAKnC,KAAK,IAAI,iBAAiB;IAKpB,GAAG,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAS3B,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE;IAW3C,iBAAiB,IAAI,IAAI;IAInB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAOrD,UAAU,CACjB,OAAO,EAAE,KAAK,EAAE,EAChB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,GACnB,IAAI;CAaR"}
@@ -7,15 +7,46 @@ export class BelongsToRelation extends Relation {
7
7
  this.foreignKey = foreignKey;
8
8
  this.ownerKey = ownerKey;
9
9
  }
10
+ query() {
11
+ const foreignValue = this.parent.getAttribute(this.foreignKey);
12
+ return this.relatedModel.query().where(this.ownerKey, foreignValue);
13
+ }
10
14
  async get() {
11
15
  const foreignValue = this.parent.getAttribute(this.foreignKey);
12
16
  if (foreignValue === undefined || foreignValue === null) {
13
17
  return null;
14
18
  }
19
+ return this.query().firstModel();
20
+ }
21
+ eagerLoadKeys(parents) {
22
+ const keys = new Set();
23
+ for (const parent of parents) {
24
+ const key = parent.getAttribute(this.foreignKey);
25
+ if (key !== undefined && key !== null) {
26
+ keys.add(key);
27
+ }
28
+ }
29
+ return [...keys];
30
+ }
31
+ defaultEagerValue() {
32
+ return null;
33
+ }
34
+ async eagerLoad(keys) {
15
35
  return this.relatedModel
16
36
  .query()
17
- .where(this.ownerKey, foreignValue)
18
- .firstModel();
37
+ .whereIn(this.ownerKey, keys)
38
+ .getModels();
39
+ }
40
+ matchEager(parents, results, relationName) {
41
+ const related = results;
42
+ const dictionary = new Map();
43
+ for (const model of related) {
44
+ dictionary.set(model.getAttribute(this.ownerKey), model);
45
+ }
46
+ for (const parent of parents) {
47
+ const key = parent.getAttribute(this.foreignKey);
48
+ parent.setRelation(relationName, dictionary.get(key) ?? null);
49
+ }
19
50
  }
20
51
  }
21
52
  //# sourceMappingURL=belongs-to.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"belongs-to.js","sourceRoot":"","sources":["../../src/relations/belongs-to.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,iBAAiD,SAAQ,QAAiB;IAIlE;IACA;IAJnB,YACE,MAAa,EACb,YAAyB,EACR,UAAkB,EAClB,QAAgB;QAEjC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAHX,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAQ;IAGnC,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAmB,CAAa,CAAC;QACpF,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,YAAY;aACrB,KAAK,EAAE;aACP,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;aAClC,UAAU,EAAW,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"belongs-to.js","sourceRoot":"","sources":["../../src/relations/belongs-to.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,iBAAiD,SAAQ,QAAiB;IAIlE;IACA;IAJnB,YACE,MAAa,EACb,YAAyB,EACR,UAAkB,EAClB,QAAgB;QAEjC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAHX,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAQ;IAGnC,CAAC;IAED,KAAK;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAmB,CAAa,CAAC;QACpF,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAmB,CAAa,CAAC;QACpF,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,EAAW,CAAC;IAC5C,CAAC;IAEQ,aAAa,CAAC,OAAgB;QACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAY,CAAC;QACjC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAmB,CAAa,CAAC;YACtE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACnB,CAAC;IAEQ,iBAAiB;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,KAAK,CAAC,SAAS,CAAC,IAAgB;QACvC,OAAO,IAAI,CAAC,YAAY;aACrB,KAAK,EAAE;aACP,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;aAC5B,SAAS,EAAW,CAAC;IAC1B,CAAC;IAEQ,UAAU,CACjB,OAAgB,EAChB,OAAgB,EAChB,YAAoB;QAEpB,MAAM,OAAO,GAAG,OAAoB,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;QAEhD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAiB,CAAa,EAAE,KAAK,CAAC,CAAC;QAChF,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAmB,CAAa,CAAC;YACtE,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;CACF"}
@@ -1,6 +1,7 @@
1
1
  import type { Model } from '../model.js';
2
2
  import type { ModelStatic } from '../model-types.js';
3
3
  import type { ModelQueryBuilder } from '../model-query-builder.js';
4
+ import type { RowValue } from '../types.js';
4
5
  import { Relation } from './relation.js';
5
6
  export declare class HasManyRelation<Related extends Model = Model> extends Relation<Related> {
6
7
  private readonly foreignKey;
@@ -8,5 +9,9 @@ export declare class HasManyRelation<Related extends Model = Model> extends Rela
8
9
  constructor(parent: Model, relatedModel: ModelStatic, foreignKey: string, localKey: string);
9
10
  query(): ModelQueryBuilder;
10
11
  get(): Promise<Related[]>;
12
+ eagerLoadKeys(parents: Model[]): RowValue[];
13
+ defaultEagerValue(): Related[];
14
+ eagerLoad(keys: RowValue[]): Promise<Related[]>;
15
+ matchEager(parents: Model[], results: unknown, relationName: string): void;
11
16
  }
12
17
  //# sourceMappingURL=has-many.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"has-many.d.ts","sourceRoot":"","sources":["../../src/relations/has-many.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,eAAe,CAAC,OAAO,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,QAAQ,CAAC,OAAO,CAAC;IAIjF,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAHzB,MAAM,EAAE,KAAK,EACb,YAAY,EAAE,WAAW,EACR,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;IAKnC,KAAK,IAAI,iBAAiB;IAKpB,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAGhC"}
1
+ {"version":3,"file":"has-many.d.ts","sourceRoot":"","sources":["../../src/relations/has-many.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,eAAe,CAAC,OAAO,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,QAAQ,CAAC,OAAO,CAAC;IAIjF,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAHzB,MAAM,EAAE,KAAK,EACb,YAAY,EAAE,WAAW,EACR,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;IAKnC,KAAK,IAAI,iBAAiB;IAKpB,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAItB,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE;IAM3C,iBAAiB,IAAI,OAAO,EAAE;IAIxB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAOrD,UAAU,CACjB,OAAO,EAAE,KAAK,EAAE,EAChB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,GACnB,IAAI;CAmBR"}
@@ -14,5 +14,37 @@ export class HasManyRelation extends Relation {
14
14
  async get() {
15
15
  return this.query().getModels();
16
16
  }
17
+ eagerLoadKeys(parents) {
18
+ return parents
19
+ .map((parent) => parent.getAttribute(this.localKey))
20
+ .filter((key) => key !== undefined && key !== null);
21
+ }
22
+ defaultEagerValue() {
23
+ return [];
24
+ }
25
+ async eagerLoad(keys) {
26
+ return this.relatedModel
27
+ .query()
28
+ .whereIn(this.foreignKey, keys)
29
+ .getModels();
30
+ }
31
+ matchEager(parents, results, relationName) {
32
+ const related = results;
33
+ const dictionary = new Map();
34
+ for (const model of related) {
35
+ const key = model.getAttribute(this.foreignKey);
36
+ const bucket = dictionary.get(key);
37
+ if (bucket) {
38
+ bucket.push(model);
39
+ }
40
+ else {
41
+ dictionary.set(key, [model]);
42
+ }
43
+ }
44
+ for (const parent of parents) {
45
+ const key = parent.getAttribute(this.localKey);
46
+ parent.setRelation(relationName, dictionary.get(key) ?? []);
47
+ }
48
+ }
17
49
  }
18
50
  //# sourceMappingURL=has-many.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"has-many.js","sourceRoot":"","sources":["../../src/relations/has-many.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,eAA+C,SAAQ,QAAiB;IAIhE;IACA;IAJnB,YACE,MAAa,EACb,YAAyB,EACR,UAAkB,EAClB,QAAgB;QAEjC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAHX,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAQ;IAGnC,CAAC;IAED,KAAK;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAiB,CAAa,CAAC;QAChF,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,GAAG;QACP,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,EAAW,CAAC;IAC3C,CAAC;CACF"}
1
+ {"version":3,"file":"has-many.js","sourceRoot":"","sources":["../../src/relations/has-many.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,eAA+C,SAAQ,QAAiB;IAIhE;IACA;IAJnB,YACE,MAAa,EACb,YAAyB,EACR,UAAkB,EAClB,QAAgB;QAEjC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAHX,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAQ;IAGnC,CAAC;IAED,KAAK;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAiB,CAAa,CAAC;QAChF,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,GAAG;QACP,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,EAAW,CAAC;IAC3C,CAAC;IAEQ,aAAa,CAAC,OAAgB;QACrC,OAAO,OAAO;aACX,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAiB,CAAa,CAAC;aACxE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC;IACxD,CAAC;IAEQ,iBAAiB;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAEQ,KAAK,CAAC,SAAS,CAAC,IAAgB;QACvC,OAAO,IAAI,CAAC,YAAY;aACrB,KAAK,EAAE;aACP,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;aAC9B,SAAS,EAAW,CAAC;IAC1B,CAAC;IAEQ,UAAU,CACjB,OAAgB,EAChB,OAAgB,EAChB,YAAoB;QAEpB,MAAM,OAAO,GAAG,OAAoB,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;QAElD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,UAAmB,CAAa,CAAC;YACrE,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAiB,CAAa,CAAC;YACpE,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF"}
@@ -1,6 +1,7 @@
1
1
  import type { Model } from '../model.js';
2
2
  import type { ModelStatic } from '../model-types.js';
3
3
  import type { ModelQueryBuilder } from '../model-query-builder.js';
4
+ import type { RowValue } from '../types.js';
4
5
  import { Relation } from './relation.js';
5
6
  export declare class HasOneRelation<Related extends Model = Model> extends Relation<Related> {
6
7
  private readonly foreignKey;
@@ -8,5 +9,9 @@ export declare class HasOneRelation<Related extends Model = Model> extends Relat
8
9
  constructor(parent: Model, relatedModel: ModelStatic, foreignKey: string, localKey: string);
9
10
  query(): ModelQueryBuilder;
10
11
  get(): Promise<Related | null>;
12
+ eagerLoadKeys(parents: Model[]): RowValue[];
13
+ defaultEagerValue(): null;
14
+ eagerLoad(keys: RowValue[]): Promise<Related[]>;
15
+ matchEager(parents: Model[], results: unknown, relationName: string): void;
11
16
  }
12
17
  //# sourceMappingURL=has-one.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"has-one.d.ts","sourceRoot":"","sources":["../../src/relations/has-one.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,cAAc,CAAC,OAAO,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,QAAQ,CAAC,OAAO,CAAC;IAIhF,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAHzB,MAAM,EAAE,KAAK,EACb,YAAY,EAAE,WAAW,EACR,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;IAKnC,KAAK,IAAI,iBAAiB;IAKpB,GAAG,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAGrC"}
1
+ {"version":3,"file":"has-one.d.ts","sourceRoot":"","sources":["../../src/relations/has-one.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,cAAc,CAAC,OAAO,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,QAAQ,CAAC,OAAO,CAAC;IAIhF,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAHzB,MAAM,EAAE,KAAK,EACb,YAAY,EAAE,WAAW,EACR,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;IAKnC,KAAK,IAAI,iBAAiB;IAKpB,GAAG,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAI3B,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE;IAM3C,iBAAiB,IAAI,IAAI;IAInB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAOrD,UAAU,CACjB,OAAO,EAAE,KAAK,EAAE,EAChB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,GACnB,IAAI;CAgBR"}
@@ -14,5 +14,33 @@ export class HasOneRelation extends Relation {
14
14
  async get() {
15
15
  return this.query().firstModel();
16
16
  }
17
+ eagerLoadKeys(parents) {
18
+ return parents
19
+ .map((parent) => parent.getAttribute(this.localKey))
20
+ .filter((key) => key !== undefined && key !== null);
21
+ }
22
+ defaultEagerValue() {
23
+ return null;
24
+ }
25
+ async eagerLoad(keys) {
26
+ return this.relatedModel
27
+ .query()
28
+ .whereIn(this.foreignKey, keys)
29
+ .getModels();
30
+ }
31
+ matchEager(parents, results, relationName) {
32
+ const related = results;
33
+ const dictionary = new Map();
34
+ for (const model of related) {
35
+ const key = model.getAttribute(this.foreignKey);
36
+ if (!dictionary.has(key)) {
37
+ dictionary.set(key, model);
38
+ }
39
+ }
40
+ for (const parent of parents) {
41
+ const key = parent.getAttribute(this.localKey);
42
+ parent.setRelation(relationName, dictionary.get(key) ?? null);
43
+ }
44
+ }
17
45
  }
18
46
  //# sourceMappingURL=has-one.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"has-one.js","sourceRoot":"","sources":["../../src/relations/has-one.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,cAA8C,SAAQ,QAAiB;IAI/D;IACA;IAJnB,YACE,MAAa,EACb,YAAyB,EACR,UAAkB,EAClB,QAAgB;QAEjC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAHX,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAQ;IAGnC,CAAC;IAED,KAAK;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAiB,CAAa,CAAC;QAChF,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,GAAG;QACP,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,EAAW,CAAC;IAC5C,CAAC;CACF"}
1
+ {"version":3,"file":"has-one.js","sourceRoot":"","sources":["../../src/relations/has-one.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,cAA8C,SAAQ,QAAiB;IAI/D;IACA;IAJnB,YACE,MAAa,EACb,YAAyB,EACR,UAAkB,EAClB,QAAgB;QAEjC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAHX,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAQ;IAGnC,CAAC;IAED,KAAK;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAiB,CAAa,CAAC;QAChF,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,GAAG;QACP,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,EAAW,CAAC;IAC5C,CAAC;IAEQ,aAAa,CAAC,OAAgB;QACrC,OAAO,OAAO;aACX,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAiB,CAAa,CAAC;aACxE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC;IACxD,CAAC;IAEQ,iBAAiB;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,KAAK,CAAC,SAAS,CAAC,IAAgB;QACvC,OAAO,IAAI,CAAC,YAAY;aACrB,KAAK,EAAE;aACP,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;aAC9B,SAAS,EAAW,CAAC;IAC1B,CAAC;IAEQ,UAAU,CACjB,OAAgB,EAChB,OAAgB,EAChB,YAAoB;QAEpB,MAAM,OAAO,GAAG,OAAoB,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;QAEhD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,UAAmB,CAAa,CAAC;YACrE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAiB,CAAa,CAAC;YACpE,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;CACF"}
@@ -1,9 +1,15 @@
1
1
  import type { Model } from '../model.js';
2
2
  import type { ModelStatic } from '../model-types.js';
3
+ import type { RowValue } from '../types.js';
3
4
  export declare abstract class Relation<Related extends Model = Model> {
4
5
  protected readonly parent: Model;
5
6
  protected readonly relatedModel: ModelStatic;
6
7
  constructor(parent: Model, relatedModel: ModelStatic);
7
8
  abstract get(): Promise<Related | Related[] | null>;
9
+ eagerLoadKeys(_parents: Model[]): RowValue[];
10
+ initRelation(parents: Model[], relationName: string): void;
11
+ defaultEagerValue(): Related | Related[] | null;
12
+ eagerLoad(_keys: RowValue[]): Promise<unknown>;
13
+ matchEager(_parents: Model[], _results: unknown, _relationName: string): void;
8
14
  }
9
15
  //# sourceMappingURL=relation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/relations/relation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,8BAAsB,QAAQ,CAAC,OAAO,SAAS,KAAK,GAAG,KAAK;IAExD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK;IAChC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW;gBADzB,MAAM,EAAE,KAAK,EACb,YAAY,EAAE,WAAW;IAG9C,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;CACpD"}
1
+ {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/relations/relation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,8BAAsB,QAAQ,CAAC,OAAO,SAAS,KAAK,GAAG,KAAK;IAExD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK;IAChC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW;gBADzB,MAAM,EAAE,KAAK,EACb,YAAY,EAAE,WAAW;IAG9C,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;IAEnD,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE;IAI5C,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAM1D,iBAAiB,IAAI,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI;IAIzC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;CAC9E"}
@@ -5,5 +5,20 @@ export class Relation {
5
5
  this.parent = parent;
6
6
  this.relatedModel = relatedModel;
7
7
  }
8
+ eagerLoadKeys(_parents) {
9
+ return [];
10
+ }
11
+ initRelation(parents, relationName) {
12
+ for (const parent of parents) {
13
+ parent.setRelation(relationName, this.defaultEagerValue());
14
+ }
15
+ }
16
+ defaultEagerValue() {
17
+ return null;
18
+ }
19
+ async eagerLoad(_keys) {
20
+ return [];
21
+ }
22
+ matchEager(_parents, _results, _relationName) { }
8
23
  }
9
24
  //# sourceMappingURL=relation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/relations/relation.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,QAAQ;IAEP;IACA;IAFrB,YACqB,MAAa,EACb,YAAyB;QADzB,WAAM,GAAN,MAAM,CAAO;QACb,iBAAY,GAAZ,YAAY,CAAa;IAC3C,CAAC;CAGL"}
1
+ {"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/relations/relation.ts"],"names":[],"mappings":"AAIA,MAAM,OAAgB,QAAQ;IAEP;IACA;IAFrB,YACqB,MAAa,EACb,YAAyB;QADzB,WAAM,GAAN,MAAM,CAAO;QACb,iBAAY,GAAZ,YAAY,CAAa;IAC3C,CAAC;IAIJ,aAAa,CAAC,QAAiB;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,YAAY,CAAC,OAAgB,EAAE,YAAoB;QACjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAiB;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,UAAU,CAAC,QAAiB,EAAE,QAAiB,EAAE,aAAqB,IAAS,CAAC;CACjF"}
@@ -1,16 +1,21 @@
1
+ import type { SqlGrammar } from '../grammar.js';
1
2
  export declare class Blueprint {
2
3
  private readonly tableName;
4
+ private readonly grammar;
3
5
  private readonly statements;
4
- constructor(tableName: string);
6
+ constructor(tableName: string, grammar: SqlGrammar);
5
7
  id(name?: string): this;
6
8
  string(name: string, length?: number): this;
7
9
  text(name: string): this;
8
10
  integer(name: string): this;
9
11
  boolean(name: string): this;
12
+ timestamp(name: string): this;
10
13
  timestamps(): this;
11
14
  nullable(): this;
12
15
  unique(columns?: string | string[]): this;
13
16
  toCreateSql(): string;
14
17
  toDropSql(): string;
18
+ private table;
19
+ private column;
15
20
  }
16
21
  //# sourceMappingURL=blueprint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blueprint.d.ts","sourceRoot":"","sources":["../../src/schema/blueprint.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAS;IAGR,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;gBAEd,SAAS,EAAE,MAAM;IAE9C,EAAE,CAAC,IAAI,SAAO,GAAG,IAAI;IAKrB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAM,GAAG,IAAI;IAKxC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,UAAU,IAAI,IAAI;IAMlB,QAAQ,IAAI,IAAI;IAShB,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAgBzC,WAAW,IAAI,MAAM;IAIrB,SAAS,IAAI,MAAM;CAGpB"}
1
+ {"version":3,"file":"blueprint.d.ts","sourceRoot":"","sources":["../../src/schema/blueprint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;gBAGxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,UAAU;IAGtC,EAAE,CAAC,IAAI,SAAO,GAAG,IAAI;IAkBrB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAM,GAAG,IAAI;IAUxC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAU3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgB3B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgB7B,UAAU,IAAI,IAAI;IAYlB,QAAQ,IAAI,IAAI;IAsBhB,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAgBzC,WAAW,IAAI,MAAM;IAIrB,SAAS,IAAI,MAAM;IAInB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,MAAM;CAGf"}
@@ -1,32 +1,88 @@
1
1
  export class Blueprint {
2
2
  tableName;
3
+ grammar;
3
4
  statements = [];
4
- constructor(tableName) {
5
+ constructor(tableName, grammar) {
5
6
  this.tableName = tableName;
7
+ this.grammar = grammar;
6
8
  }
7
9
  id(name = 'id') {
8
- this.statements.push(`"${name}" INTEGER PRIMARY KEY AUTOINCREMENT`);
10
+ const column = this.column(name);
11
+ switch (this.grammar.driver) {
12
+ case 'postgres':
13
+ this.statements.push(`${column} BIGSERIAL PRIMARY KEY`);
14
+ break;
15
+ case 'mysql':
16
+ this.statements.push(`${column} BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY`);
17
+ break;
18
+ default:
19
+ this.statements.push(`${column} INTEGER PRIMARY KEY AUTOINCREMENT`);
20
+ break;
21
+ }
9
22
  return this;
10
23
  }
11
24
  string(name, length = 255) {
12
- this.statements.push(`"${name}" VARCHAR(${length}) NOT NULL`);
25
+ const column = this.column(name);
26
+ if (this.grammar.driver === 'sqlite') {
27
+ this.statements.push(`${column} TEXT NOT NULL`);
28
+ }
29
+ else {
30
+ this.statements.push(`${column} VARCHAR(${length}) NOT NULL`);
31
+ }
13
32
  return this;
14
33
  }
15
34
  text(name) {
16
- this.statements.push(`"${name}" TEXT NOT NULL`);
35
+ this.statements.push(`${this.column(name)} TEXT NOT NULL`);
17
36
  return this;
18
37
  }
19
38
  integer(name) {
20
- this.statements.push(`"${name}" INTEGER NOT NULL`);
39
+ const column = this.column(name);
40
+ if (this.grammar.driver === 'mysql') {
41
+ this.statements.push(`${column} INT NOT NULL`);
42
+ }
43
+ else {
44
+ this.statements.push(`${column} INTEGER NOT NULL`);
45
+ }
21
46
  return this;
22
47
  }
23
48
  boolean(name) {
24
- this.statements.push(`"${name}" INTEGER NOT NULL DEFAULT 0`);
49
+ const column = this.column(name);
50
+ switch (this.grammar.driver) {
51
+ case 'postgres':
52
+ this.statements.push(`${column} BOOLEAN NOT NULL DEFAULT FALSE`);
53
+ break;
54
+ case 'mysql':
55
+ this.statements.push(`${column} TINYINT(1) NOT NULL DEFAULT 0`);
56
+ break;
57
+ default:
58
+ this.statements.push(`${column} INTEGER NOT NULL DEFAULT 0`);
59
+ break;
60
+ }
61
+ return this;
62
+ }
63
+ timestamp(name) {
64
+ const column = this.column(name);
65
+ switch (this.grammar.driver) {
66
+ case 'postgres':
67
+ this.statements.push(`${column} TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL`);
68
+ break;
69
+ case 'mysql':
70
+ this.statements.push(`${column} TIMESTAMP NOT NULL`);
71
+ break;
72
+ default:
73
+ this.statements.push(`${column} TEXT NOT NULL`);
74
+ break;
75
+ }
25
76
  return this;
26
77
  }
27
78
  timestamps() {
28
- this.string('created_at', 64);
29
- this.string('updated_at', 64);
79
+ if (this.grammar.driver === 'sqlite') {
80
+ this.string('created_at', 64);
81
+ this.string('updated_at', 64);
82
+ return this;
83
+ }
84
+ this.timestamp('created_at');
85
+ this.timestamp('updated_at');
30
86
  return this;
31
87
  }
32
88
  nullable() {
@@ -34,7 +90,20 @@ export class Blueprint {
34
90
  if (!last) {
35
91
  return this;
36
92
  }
37
- this.statements[this.statements.length - 1] = last.replace(' NOT NULL', '');
93
+ let updated = last.replace(' NOT NULL', '');
94
+ if (this.grammar.driver === 'postgres') {
95
+ updated = updated.replace(' DEFAULT FALSE', '');
96
+ }
97
+ else if (this.grammar.driver === 'mysql') {
98
+ updated = updated.replace(' DEFAULT 0', '');
99
+ if (!/\bNULL\b/.test(updated)) {
100
+ updated += ' NULL';
101
+ }
102
+ }
103
+ else {
104
+ updated = updated.replace(' DEFAULT 0', '');
105
+ }
106
+ this.statements[this.statements.length - 1] = updated;
38
107
  return this;
39
108
  }
40
109
  unique(columns) {
@@ -45,15 +114,21 @@ export class Blueprint {
45
114
  }
46
115
  return this;
47
116
  }
48
- const names = Array.isArray(columns) ? columns : [columns];
49
- this.statements.push(`UNIQUE (${names.map((name) => `"${name}"`).join(', ')})`);
117
+ const names = (Array.isArray(columns) ? columns : [columns]).map((name) => this.column(name));
118
+ this.statements.push(`UNIQUE (${names.join(', ')})`);
50
119
  return this;
51
120
  }
52
121
  toCreateSql() {
53
- return `CREATE TABLE "${this.tableName}" (${this.statements.join(', ')})`;
122
+ return `CREATE TABLE ${this.table()} (${this.statements.join(', ')})`;
54
123
  }
55
124
  toDropSql() {
56
- return `DROP TABLE IF EXISTS "${this.tableName}"`;
125
+ return `DROP TABLE IF EXISTS ${this.table()}`;
126
+ }
127
+ table() {
128
+ return this.grammar.wrapIdentifier(this.tableName);
129
+ }
130
+ column(name) {
131
+ return this.grammar.wrapIdentifier(name);
57
132
  }
58
133
  }
59
134
  //# sourceMappingURL=blueprint.js.map