@orchestr-sh/orchestr 1.5.2 → 1.5.3

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.
package/README.md CHANGED
@@ -16,7 +16,7 @@ Built from the ground up with Laravel's core components:
16
16
  - **FormRequest** - Laravel-style validation and authorization
17
17
  - **Facades** - Static proxy access to services (Route, DB)
18
18
  - **Query Builder** - Fluent database query builder with full Laravel API
19
- - **Ensemble ORM** - ActiveRecord ORM (Laravel's Eloquent equivalent) with relationships (HasOne, HasMany, BelongsTo), eager/lazy loading, soft deletes, and more
19
+ - **Ensemble ORM** - ActiveRecord ORM (Laravel's Eloquent equivalent) with relationships (HasOne, HasMany, BelongsTo, BelongsToMany), eager/lazy loading, soft deletes, and more
20
20
  - **Database Manager** - Multi-connection database management
21
21
  - **Application Lifecycle** - Complete Laravel bootstrap process
22
22
 
@@ -576,7 +576,7 @@ await DB.table('users')
576
576
  ActiveRecord ORM (Eloquent equivalent) with relationships and advanced features:
577
577
 
578
578
  ```typescript
579
- import { Ensemble, HasOne, HasMany, BelongsTo, softDeletes } from 'orchestr';
579
+ import { Ensemble, HasOne, HasMany, BelongsTo, BelongsToMany, softDeletes } from 'orchestr';
580
580
 
581
581
  // Define models with relationships
582
582
  class User extends Ensemble {
@@ -597,6 +597,13 @@ class User extends Ensemble {
597
597
  posts(): HasMany<Post, User> {
598
598
  return this.hasMany(Post);
599
599
  }
600
+
601
+ // Many-to-Many: User has many roles
602
+ roles(): BelongsToMany<Role, User> {
603
+ return this.belongsToMany(Role, 'role_user')
604
+ .withPivot('expires_at', 'granted_by')
605
+ .withTimestamps();
606
+ }
600
607
  }
601
608
 
602
609
  class Profile extends Ensemble {
@@ -620,6 +627,20 @@ class Post extends Ensemble {
620
627
  comments(): HasMany<Comment, Post> {
621
628
  return this.hasMany(Comment);
622
629
  }
630
+
631
+ // Many-to-Many: Post has many tags
632
+ tags(): BelongsToMany<Tag, Post> {
633
+ return this.belongsToMany(Tag);
634
+ }
635
+ }
636
+
637
+ class Role extends Ensemble {
638
+ protected table = 'roles';
639
+
640
+ // Many-to-Many: Role has many users (inverse)
641
+ users(): BelongsToMany<User, Role> {
642
+ return this.belongsToMany(User, 'role_user', 'role_id', 'user_id');
643
+ }
623
644
  }
624
645
 
625
646
  // Query using the model
@@ -654,6 +675,36 @@ const post = new Post();
654
675
  post.author().associate(user);
655
676
  await post.save();
656
677
 
678
+ // Many-to-Many operations
679
+ const user = await User.find(1);
680
+
681
+ // Attach roles
682
+ await user.roles().attach([1, 2, 3]);
683
+ await user.roles().attach(1, {
684
+ expires_at: new Date('2025-12-31'),
685
+ granted_by: 'admin'
686
+ });
687
+
688
+ // Detach roles
689
+ await user.roles().detach([1, 2]);
690
+ await user.roles().detach(); // detach all
691
+
692
+ // Sync roles (detach all existing, attach new)
693
+ const changes = await user.roles().sync([1, 2, 3]);
694
+
695
+ // Toggle roles (attach if not attached, detach if attached)
696
+ await user.roles().toggle([1, 2, 3]);
697
+
698
+ // Query with pivot constraints
699
+ const activeRoles = await user.roles()
700
+ .wherePivot('expires_at', '>', new Date())
701
+ .get();
702
+
703
+ // Update pivot data
704
+ await user.roles().updateExistingPivot(1, {
705
+ expires_at: new Date('2027-12-31')
706
+ });
707
+
657
708
  // Create
658
709
  const user = new User();
659
710
  user.name = 'John Doe';
@@ -725,7 +776,68 @@ console.log(user.full_name); // Uses accessor
725
776
  user.password = 'secret123'; // Uses mutator
726
777
  ```
727
778
 
728
- **See [RELATIONSHIPS.md](./RELATIONSHIPS.md) for complete relationship documentation.**
779
+ #### Many-to-Many Relationships
780
+
781
+ Orchestr provides full support for many-to-many relationships with pivot table management, exactly like Laravel:
782
+
783
+ ```typescript
784
+ class User extends Ensemble {
785
+ // Define many-to-many relationship
786
+ roles(): BelongsToMany<Role, User> {
787
+ return this.belongsToMany(Role, 'role_user')
788
+ .withPivot('expires_at', 'granted_by') // Additional pivot columns
789
+ .withTimestamps(); // Auto-manage timestamps
790
+ }
791
+ }
792
+
793
+ const user = await User.find(1);
794
+
795
+ // Attach roles
796
+ await user.roles().attach([1, 2, 3]);
797
+ await user.roles().attach(1, { expires_at: new Date('2025-12-31') });
798
+
799
+ // Detach roles
800
+ await user.roles().detach([1, 2]);
801
+
802
+ // Sync (detach all, attach new)
803
+ const { attached, detached, updated } = await user.roles().sync([1, 2, 3]);
804
+
805
+ // Toggle (attach if not present, detach if present)
806
+ await user.roles().toggle([1, 2]);
807
+
808
+ // Query with pivot constraints
809
+ const activeRoles = await user.roles()
810
+ .wherePivot('expires_at', '>', new Date())
811
+ .wherePivotNotNull('granted_by')
812
+ .get();
813
+
814
+ // Update pivot data
815
+ await user.roles().updateExistingPivot(1, {
816
+ expires_at: new Date('2027-12-31')
817
+ });
818
+
819
+ // Eager load with pivot data
820
+ const users = await User.query()
821
+ .with({
822
+ roles: (query) => query.wherePivot('active', true)
823
+ })
824
+ .get();
825
+
826
+ // Access pivot data
827
+ const roles = await user.roles().get();
828
+ const pivot = roles[0].getRelation('pivot');
829
+ // { user_id, role_id, expires_at, granted_by, created_at, updated_at }
830
+ ```
831
+
832
+ **Features:**
833
+ - ✅ Automatic pivot table naming (alphabetically sorted model names)
834
+ - ✅ Attach/detach/sync/toggle operations
835
+ - ✅ Pivot table queries (wherePivot, wherePivotIn, wherePivotNull, etc.)
836
+ - ✅ Additional pivot columns with `withPivot()`
837
+ - ✅ Automatic pivot timestamps with `withTimestamps()`
838
+ - ✅ Custom pivot accessor with `as()`
839
+ - ✅ Update pivot data with `updateExistingPivot()`
840
+ - ✅ Full eager loading support
729
841
 
730
842
  ### Database Setup
731
843
 
@@ -913,7 +1025,8 @@ src/
913
1025
  │ │ │ ├── Relation.ts # Base relation class
914
1026
  │ │ │ ├── HasOne.ts # One-to-one relationship
915
1027
  │ │ │ ├── HasMany.ts # One-to-many relationship
916
- │ │ │ └── BelongsTo.ts # Inverse relationship
1028
+ │ │ │ ├── BelongsTo.ts # Inverse relationship
1029
+ │ │ │ └── BelongsToMany.ts # Many-to-many relationship
917
1030
  │ │ └── Concerns/
918
1031
  │ │ ├── HasAttributes.ts # Attribute handling & casting
919
1032
  │ │ ├── HasTimestamps.ts # Timestamp management
@@ -959,9 +1072,9 @@ Core components completed and in progress:
959
1072
  - [x] Soft Deletes
960
1073
  - [x] Model Attributes & Casting
961
1074
  - [x] Model Relationships (HasOne, HasMany, BelongsTo)
1075
+ - [x] Many-to-Many Relationships (BelongsToMany)
962
1076
  - [x] Eager/Lazy Loading
963
1077
  - [x] FormRequest Validation & Authorization
964
- - [ ] Many-to-Many Relationships (BelongsToMany)
965
1078
  - [ ] Relationship Queries (has, whereHas, withCount)
966
1079
  - [ ] Polymorphic Relationships
967
1080
  - [ ] Database Migrations
@@ -995,7 +1108,7 @@ Core components completed and in progress:
995
1108
  | Attribute Casting | ✅ | ✅ |
996
1109
  | Basic Relationships | ✅ | ✅ |
997
1110
  | Eager/Lazy Loading | ✅ | ✅ |
998
- | Many-to-Many | ✅ | 🚧 |
1111
+ | Many-to-Many | ✅ | |
999
1112
  | Polymorphic Relations | ✅ | 🚧 |
1000
1113
  | Migrations | ✅ | 🚧 |
1001
1114
  | Seeding | ✅ | 🚧 |
@@ -8,6 +8,7 @@ import { EnsembleBuilder } from '../EnsembleBuilder';
8
8
  import { HasOne } from '../Relations/HasOne';
9
9
  import { HasMany } from '../Relations/HasMany';
10
10
  import { BelongsTo } from '../Relations/BelongsTo';
11
+ import { BelongsToMany } from '../Relations/BelongsToMany';
11
12
  export interface RelationshipConfig {
12
13
  type: 'hasOne' | 'hasMany' | 'belongsTo' | 'belongsToMany' | 'hasOneThrough' | 'hasManyThrough' | 'morphTo' | 'morphMany' | 'morphOne' | 'morphToMany' | 'morphedByMany';
13
14
  related: string;
@@ -32,6 +33,14 @@ export declare abstract class HasRelationshipsMixin {
32
33
  * Define an inverse one-to-one or many relationship
33
34
  */
34
35
  protected belongsTo<TRelated extends Ensemble>(related: new () => TRelated, foreignKey?: string, ownerKey?: string, relation?: string): BelongsTo<TRelated, any>;
36
+ /**
37
+ * Define a many-to-many relationship
38
+ */
39
+ protected belongsToMany<TRelated extends Ensemble>(related: new () => TRelated, table?: string, foreignPivotKey?: string, relatedPivotKey?: string, parentKey?: string, relatedKey?: string, relation?: string): BelongsToMany<TRelated, any>;
40
+ /**
41
+ * Get the joining table name for a many-to-many relation
42
+ */
43
+ protected joiningTable(related: Ensemble): string;
35
44
  /**
36
45
  * Get the default foreign key name for the model
37
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"HasRelationships.d.ts","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasRelationships.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HasRelationships.d.ts","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasRelationships.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,eAAe,GAAG,eAAe,GAAG,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe,CAAC;IACzK,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8BAAsB,qBAAqB;IACzC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAE9C;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,QAAQ,SAAS,QAAQ,EACxC,OAAO,EAAE,UAAU,QAAQ,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC;IAcxB;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,QAAQ,SAAS,QAAQ,EACzC,OAAO,EAAE,UAAU,QAAQ,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;IAczB;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,QAAQ,SAAS,QAAQ,EAC3C,OAAO,EAAE,UAAU,QAAQ,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC;IAmB3B;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,QAAQ,SAAS,QAAQ,EAC/C,OAAO,EAAE,UAAU,QAAQ,EAC3B,KAAK,CAAC,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,MAAM,EACxB,eAAe,CAAC,EAAE,MAAM,EACxB,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC;IAgC/B;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM;IAYjD;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,MAAM;IAIjC;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;IAYxD;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;IAIzC;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAKtD;;OAEG;IACI,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK5C;;OAEG;IACI,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAI1C;;OAEG;IACI,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAKzD;;OAEG;IACI,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI3C;;OAEG;IACU,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9D;;OAEG;IACU,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrE;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAKtC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC;IAEnD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM;IAErC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,MAAM;IAEvC;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAMvC"}
@@ -10,6 +10,7 @@ const Relation_1 = require("../Relations/Relation");
10
10
  const HasOne_1 = require("../Relations/HasOne");
11
11
  const HasMany_1 = require("../Relations/HasMany");
12
12
  const BelongsTo_1 = require("../Relations/BelongsTo");
13
+ const BelongsToMany_1 = require("../Relations/BelongsToMany");
13
14
  class HasRelationshipsMixin {
14
15
  /**
15
16
  * The loaded relationships for the model
@@ -45,6 +46,37 @@ class HasRelationshipsMixin {
45
46
  const finalOwnerKey = ownerKey || instance.getKeyName();
46
47
  return new BelongsTo_1.BelongsTo(instance.newQuery(), this, foreignKey, finalOwnerKey, relationName);
47
48
  }
49
+ /**
50
+ * Define a many-to-many relationship
51
+ */
52
+ belongsToMany(related, table, foreignPivotKey, relatedPivotKey, parentKey, relatedKey, relation) {
53
+ const instance = new related();
54
+ // If no table name was provided, use the default
55
+ if (!table) {
56
+ table = this.joiningTable(instance);
57
+ }
58
+ // Get the foreign key for the parent model
59
+ foreignPivotKey = foreignPivotKey || this.getForeignKey();
60
+ // Get the foreign key for the related model
61
+ relatedPivotKey = relatedPivotKey || instance.getForeignKey();
62
+ // Get the parent key
63
+ const finalParentKey = parentKey || this.getKeyName();
64
+ // Get the related key
65
+ const finalRelatedKey = relatedKey || instance.getKeyName();
66
+ return new BelongsToMany_1.BelongsToMany(instance.newQuery(), this, table, foreignPivotKey, relatedPivotKey, finalParentKey, finalRelatedKey, relation || '');
67
+ }
68
+ /**
69
+ * Get the joining table name for a many-to-many relation
70
+ */
71
+ joiningTable(related) {
72
+ const models = [
73
+ this.snake(this.constructor.name),
74
+ this.snake(related.constructor.name),
75
+ ];
76
+ // Sort the model names alphabetically
77
+ models.sort();
78
+ return models.join('_');
79
+ }
48
80
  /**
49
81
  * Get the default foreign key name for the model
50
82
  */
@@ -1 +1 @@
1
- {"version":3,"file":"HasRelationships.js","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasRelationships.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HasRelationships.js","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasRelationships.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,10 @@ export declare class EnsembleBuilder<T extends Ensemble> extends QueryBuilder<T>
37
37
  * Create a new instance of the model
38
38
  */
39
39
  protected newModelInstance(attributes?: Record<string, any>, exists?: boolean): T;
40
+ /**
41
+ * Add a select statement to the query
42
+ */
43
+ addSelect(...columns: string[]): this;
40
44
  /**
41
45
  * Set the relationships that should be eager loaded
42
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"EnsembleBuilder.d.ts","sourceRoot":"","sources":["../../../src/Database/Ensemble/EnsembleBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnsembleBuilder.d.ts","sourceRoot":"","sources":["../../../src/Database/Ensemble/EnsembleBuilder.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,16 @@ class EnsembleBuilder extends Builder_1.Builder {
67
67
  instance.syncOriginal();
68
68
  return instance;
69
69
  }
70
+ /**
71
+ * Add a select statement to the query
72
+ */
73
+ addSelect(...columns) {
74
+ if (this._columns.length === 1 && this._columns[0] === '*') {
75
+ this._columns = [];
76
+ }
77
+ this._columns.push(...columns);
78
+ return this;
79
+ }
70
80
  /**
71
81
  * Set the relationships that should be eager loaded
72
82
  */
@@ -1 +1 @@
1
- {"version":3,"file":"EnsembleBuilder.js","sourceRoot":"","sources":["../../../src/Database/Ensemble/EnsembleBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnsembleBuilder.js","sourceRoot":"","sources":["../../../src/Database/Ensemble/EnsembleBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,276 @@
1
+ /**
2
+ * BelongsToMany Relationship
3
+ *
4
+ * Represents a many-to-many relationship
5
+ */
6
+ import { Ensemble } from '../Ensemble';
7
+ import { EnsembleBuilder } from '../EnsembleBuilder';
8
+ import { EnsembleCollection } from '../EnsembleCollection';
9
+ import { Relation } from './Relation';
10
+ export declare class BelongsToMany<TRelated extends Ensemble, TParent extends Ensemble> extends Relation<TRelated, TParent> {
11
+ /**
12
+ * The intermediate table for the relation
13
+ */
14
+ protected table: string;
15
+ /**
16
+ * The foreign key of the parent model
17
+ */
18
+ protected foreignPivotKey: string;
19
+ /**
20
+ * The associated key of the relation
21
+ */
22
+ protected relatedPivotKey: string;
23
+ /**
24
+ * The parent key of the relationship
25
+ */
26
+ protected parentKey: string;
27
+ /**
28
+ * The related key of the relationship
29
+ */
30
+ protected relatedKey: string;
31
+ /**
32
+ * The name of the relationship
33
+ */
34
+ protected relationName: string;
35
+ /**
36
+ * The pivot table columns to retrieve
37
+ */
38
+ protected pivotColumns: string[];
39
+ /**
40
+ * Any pivot table restrictions
41
+ */
42
+ protected pivotWheres: Array<{
43
+ column: string;
44
+ operator?: string;
45
+ value?: any;
46
+ boolean: string;
47
+ }>;
48
+ /**
49
+ * The pivot table values to attach
50
+ */
51
+ protected pivotValues: Record<string, any>[];
52
+ /**
53
+ * Whether we are using timestamps on the pivot table
54
+ */
55
+ protected usingTimestamps: boolean;
56
+ /**
57
+ * The custom pivot table model
58
+ */
59
+ protected using?: any;
60
+ /**
61
+ * The name of the "created at" column
62
+ */
63
+ protected pivotCreatedAt?: string;
64
+ /**
65
+ * The name of the "updated at" column
66
+ */
67
+ protected pivotUpdatedAt?: string;
68
+ /**
69
+ * The name of the accessor to use for the pivot relationship
70
+ */
71
+ protected accessor: string;
72
+ /**
73
+ * Create a new belongs to many relationship instance
74
+ */
75
+ constructor(query: EnsembleBuilder<TRelated>, parent: TParent, table: string, foreignPivotKey: string, relatedPivotKey: string, parentKey: string, relatedKey: string, relationName?: string);
76
+ /**
77
+ * Set the base constraints on the relation query
78
+ */
79
+ addConstraints(): void;
80
+ /**
81
+ * Set the join clause for the relation query
82
+ */
83
+ protected performJoin(query?: EnsembleBuilder<TRelated>): void;
84
+ /**
85
+ * Set the where clause for the relation query
86
+ */
87
+ protected addWhereConstraints(): void;
88
+ /**
89
+ * Set the constraints for an eager load of the relation
90
+ */
91
+ addEagerConstraints(models: TParent[]): void;
92
+ /**
93
+ * Initialize the relation on a set of models
94
+ */
95
+ initRelation(models: TParent[], relation: string): TParent[];
96
+ /**
97
+ * Match the eagerly loaded results to their parents
98
+ */
99
+ match(models: TParent[], results: EnsembleCollection<TRelated>, relation: string): TParent[];
100
+ /**
101
+ * Build model dictionary keyed by the relation's foreign key
102
+ */
103
+ protected buildDictionary(results: EnsembleCollection<TRelated>): Record<any, TRelated[]>;
104
+ /**
105
+ * Get the results of the relationship
106
+ */
107
+ getResults(): Promise<TRelated[]>;
108
+ /**
109
+ * Execute the query and get the models
110
+ */
111
+ get(): Promise<TRelated[]>;
112
+ /**
113
+ * Get the select columns for the relation query
114
+ */
115
+ protected shouldSelect(columns?: string[]): string[];
116
+ /**
117
+ * Get the pivot columns for the relation
118
+ */
119
+ protected aliasedPivotColumns(): string[];
120
+ /**
121
+ * Hydrate the pivot relationship on the models
122
+ */
123
+ protected hydratePivotRelation(models: TRelated[]): void;
124
+ /**
125
+ * Migrate the pivot attributes from the model to a pivot model
126
+ */
127
+ protected migratePivotAttributes(model: TRelated): Record<string, any>;
128
+ /**
129
+ * Get the fully qualified foreign key for the relation
130
+ */
131
+ protected getQualifiedForeignPivotKeyName(): string;
132
+ /**
133
+ * Get the fully qualified "related key" for the relation
134
+ */
135
+ protected getQualifiedRelatedPivotKeyName(): string;
136
+ /**
137
+ * Get the fully qualified parent key name
138
+ */
139
+ protected getQualifiedParentKeyName(): string;
140
+ /**
141
+ * Get the fully qualified related key name
142
+ */
143
+ protected getQualifiedRelatedKeyName(): string;
144
+ /**
145
+ * Specify the pivot table columns to retrieve
146
+ */
147
+ withPivot(...columns: string[]): this;
148
+ /**
149
+ * Indicate that the pivot table has timestamps
150
+ */
151
+ withTimestamps(createdAt?: string, updatedAt?: string): this;
152
+ /**
153
+ * Set a where clause for the pivot table
154
+ */
155
+ wherePivot(column: string, operator?: any, value?: any): this;
156
+ /**
157
+ * Set a "where in" clause for the pivot table
158
+ */
159
+ wherePivotIn(column: string, values: any[]): this;
160
+ /**
161
+ * Set a "where not in" clause for the pivot table
162
+ */
163
+ wherePivotNotIn(column: string, values: any[]): this;
164
+ /**
165
+ * Set a "where null" clause for the pivot table
166
+ */
167
+ wherePivotNull(column: string): this;
168
+ /**
169
+ * Set a "where not null" clause for the pivot table
170
+ */
171
+ wherePivotNotNull(column: string): this;
172
+ /**
173
+ * Set an "or where" clause for the pivot table
174
+ */
175
+ orWherePivot(column: string, operator?: any, value?: any): this;
176
+ /**
177
+ * Attach models to the parent
178
+ */
179
+ attach(ids: any | any[], attributes?: Record<string, any>): Promise<void>;
180
+ /**
181
+ * Detach models from the parent
182
+ */
183
+ detach(ids?: any | any[]): Promise<number>;
184
+ /**
185
+ * Sync the intermediate tables with a list of IDs
186
+ */
187
+ sync(ids: any | any[] | Record<number | string, Record<string, any>>): Promise<{
188
+ attached: any[];
189
+ detached: any[];
190
+ updated: any[];
191
+ }>;
192
+ /**
193
+ * Sync without detaching
194
+ */
195
+ syncWithoutDetaching(ids: any | any[] | Record<number | string, Record<string, any>>): Promise<{
196
+ attached: any[];
197
+ updated: any[];
198
+ }>;
199
+ /**
200
+ * Toggle models from the parent
201
+ */
202
+ toggle(ids: any | any[]): Promise<{
203
+ attached: any[];
204
+ detached: any[];
205
+ }>;
206
+ /**
207
+ * Update an existing pivot record on the table
208
+ */
209
+ updateExistingPivot(id: any, attributes: Record<string, any>): Promise<number>;
210
+ /**
211
+ * Get the currently attached pivot IDs
212
+ */
213
+ protected getCurrentlyAttachedPivots(): Promise<any[]>;
214
+ /**
215
+ * Attach new records
216
+ */
217
+ protected attachNew(records: Array<{
218
+ id: any;
219
+ attributes: Record<string, any>;
220
+ }>, current: any[]): Promise<any[]>;
221
+ /**
222
+ * Update existing records
223
+ */
224
+ protected updateExisting(records: Array<{
225
+ id: any;
226
+ attributes: Record<string, any>;
227
+ }>, current: any[]): Promise<any[]>;
228
+ /**
229
+ * Format the records for attaching
230
+ */
231
+ protected formatAttachRecords(ids: any[], attributes: Record<string, any>): Record<string, any>[];
232
+ /**
233
+ * Format the sync records
234
+ */
235
+ protected formatRecordsList(ids: any[]): Array<{
236
+ id: any;
237
+ attributes: Record<string, any>;
238
+ }>;
239
+ /**
240
+ * Parse the IDs from the given value
241
+ */
242
+ protected parseIds(value: any): any[];
243
+ /**
244
+ * Get the name of the pivot accessor
245
+ */
246
+ getPivotAccessor(): string;
247
+ /**
248
+ * Set the name of the pivot accessor
249
+ */
250
+ as(accessor: string): this;
251
+ /**
252
+ * Get the pivot table name
253
+ */
254
+ getTable(): string;
255
+ /**
256
+ * Get the foreign pivot key name
257
+ */
258
+ getForeignPivotKeyName(): string;
259
+ /**
260
+ * Get the related pivot key name
261
+ */
262
+ getRelatedPivotKeyName(): string;
263
+ /**
264
+ * Get the parent key name
265
+ */
266
+ getParentKeyName(): string;
267
+ /**
268
+ * Get the related key name
269
+ */
270
+ getRelatedKeyName(): string;
271
+ /**
272
+ * Get the relationship name
273
+ */
274
+ getRelationName(): string;
275
+ }
276
+ //# sourceMappingURL=BelongsToMany.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BelongsToMany.d.ts","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Relations/BelongsToMany.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,540 @@
1
+ "use strict";
2
+ /**
3
+ * BelongsToMany Relationship
4
+ *
5
+ * Represents a many-to-many relationship
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.BelongsToMany = void 0;
9
+ const EnsembleCollection_1 = require("../EnsembleCollection");
10
+ const Relation_1 = require("./Relation");
11
+ class BelongsToMany extends Relation_1.Relation {
12
+ /**
13
+ * The intermediate table for the relation
14
+ */
15
+ table;
16
+ /**
17
+ * The foreign key of the parent model
18
+ */
19
+ foreignPivotKey;
20
+ /**
21
+ * The associated key of the relation
22
+ */
23
+ relatedPivotKey;
24
+ /**
25
+ * The parent key of the relationship
26
+ */
27
+ parentKey;
28
+ /**
29
+ * The related key of the relationship
30
+ */
31
+ relatedKey;
32
+ /**
33
+ * The name of the relationship
34
+ */
35
+ relationName;
36
+ /**
37
+ * The pivot table columns to retrieve
38
+ */
39
+ pivotColumns = [];
40
+ /**
41
+ * Any pivot table restrictions
42
+ */
43
+ pivotWheres = [];
44
+ /**
45
+ * The pivot table values to attach
46
+ */
47
+ pivotValues = [];
48
+ /**
49
+ * Whether we are using timestamps on the pivot table
50
+ */
51
+ usingTimestamps = false;
52
+ /**
53
+ * The custom pivot table model
54
+ */
55
+ using;
56
+ /**
57
+ * The name of the "created at" column
58
+ */
59
+ pivotCreatedAt;
60
+ /**
61
+ * The name of the "updated at" column
62
+ */
63
+ pivotUpdatedAt;
64
+ /**
65
+ * The name of the accessor to use for the pivot relationship
66
+ */
67
+ accessor = 'pivot';
68
+ /**
69
+ * Create a new belongs to many relationship instance
70
+ */
71
+ constructor(query, parent, table, foreignPivotKey, relatedPivotKey, parentKey, relatedKey, relationName) {
72
+ super(query, parent);
73
+ this.table = table;
74
+ this.foreignPivotKey = foreignPivotKey;
75
+ this.relatedPivotKey = relatedPivotKey;
76
+ this.parentKey = parentKey;
77
+ this.relatedKey = relatedKey;
78
+ this.relationName = relationName || '';
79
+ }
80
+ /**
81
+ * Set the base constraints on the relation query
82
+ */
83
+ addConstraints() {
84
+ this.performJoin();
85
+ if (Relation_1.Relation['constraints']) {
86
+ this.addWhereConstraints();
87
+ }
88
+ }
89
+ /**
90
+ * Set the join clause for the relation query
91
+ */
92
+ performJoin(query) {
93
+ query = query || this.query;
94
+ // Join the pivot table on the related key
95
+ query.join(this.table, `${this.getQualifiedRelatedKeyName()}`, '=', `${this.getQualifiedRelatedPivotKeyName()}`);
96
+ }
97
+ /**
98
+ * Set the where clause for the relation query
99
+ */
100
+ addWhereConstraints() {
101
+ this.query.where(this.getQualifiedForeignPivotKeyName(), '=', this.parent.getAttribute(this.parentKey));
102
+ }
103
+ /**
104
+ * Set the constraints for an eager load of the relation
105
+ */
106
+ addEagerConstraints(models) {
107
+ const keys = this.getKeys(models, this.parentKey);
108
+ this.query.whereIn(this.getQualifiedForeignPivotKeyName(), keys);
109
+ }
110
+ /**
111
+ * Initialize the relation on a set of models
112
+ */
113
+ initRelation(models, relation) {
114
+ for (const model of models) {
115
+ model.setRelation(relation, new EnsembleCollection_1.EnsembleCollection());
116
+ }
117
+ return models;
118
+ }
119
+ /**
120
+ * Match the eagerly loaded results to their parents
121
+ */
122
+ match(models, results, relation) {
123
+ const dictionary = this.buildDictionary(results);
124
+ for (const model of models) {
125
+ const key = model.getAttribute(this.parentKey);
126
+ if (key !== null && key !== undefined && dictionary[key]) {
127
+ model.setRelation(relation, new EnsembleCollection_1.EnsembleCollection(dictionary[key]));
128
+ }
129
+ }
130
+ return models;
131
+ }
132
+ /**
133
+ * Build model dictionary keyed by the relation's foreign key
134
+ */
135
+ buildDictionary(results) {
136
+ const dictionary = {};
137
+ for (const result of results) {
138
+ const pivotAttributes = this.migratePivotAttributes(result);
139
+ const key = pivotAttributes[this.foreignPivotKey];
140
+ if (key !== null && key !== undefined) {
141
+ if (!dictionary[key]) {
142
+ dictionary[key] = [];
143
+ }
144
+ dictionary[key].push(result);
145
+ }
146
+ }
147
+ return dictionary;
148
+ }
149
+ /**
150
+ * Get the results of the relationship
151
+ */
152
+ async getResults() {
153
+ const parentKey = this.parent.getAttribute(this.parentKey);
154
+ if (!parentKey) {
155
+ return [];
156
+ }
157
+ return this.get();
158
+ }
159
+ /**
160
+ * Execute the query and get the models
161
+ */
162
+ async get() {
163
+ const builder = this.query.addSelect(...this.shouldSelect());
164
+ const models = await builder.get();
165
+ this.hydratePivotRelation(models);
166
+ return models;
167
+ }
168
+ /**
169
+ * Get the select columns for the relation query
170
+ */
171
+ shouldSelect(columns = ['*']) {
172
+ if (columns.length === 1 && columns[0] === '*') {
173
+ columns = [`${this.related.getTable()}.*`];
174
+ }
175
+ return [...columns, ...this.aliasedPivotColumns()];
176
+ }
177
+ /**
178
+ * Get the pivot columns for the relation
179
+ */
180
+ aliasedPivotColumns() {
181
+ const defaults = [this.foreignPivotKey, this.relatedPivotKey];
182
+ const columns = [...defaults, ...this.pivotColumns];
183
+ return columns.map((column) => {
184
+ return `${this.table}.${column} as pivot_${column}`;
185
+ });
186
+ }
187
+ /**
188
+ * Hydrate the pivot relationship on the models
189
+ */
190
+ hydratePivotRelation(models) {
191
+ for (const model of models) {
192
+ const pivot = this.migratePivotAttributes(model);
193
+ model.setRelation(this.accessor, pivot);
194
+ }
195
+ }
196
+ /**
197
+ * Migrate the pivot attributes from the model to a pivot model
198
+ */
199
+ migratePivotAttributes(model) {
200
+ const values = {};
201
+ // Extract all pivot_* attributes
202
+ const attributes = model.attributes || {};
203
+ for (const [key, value] of Object.entries(attributes)) {
204
+ if (key.startsWith('pivot_')) {
205
+ const pivotKey = key.substring(6); // Remove 'pivot_' prefix
206
+ values[pivotKey] = value;
207
+ delete model.attributes[key];
208
+ }
209
+ }
210
+ return values;
211
+ }
212
+ /**
213
+ * Get the fully qualified foreign key for the relation
214
+ */
215
+ getQualifiedForeignPivotKeyName() {
216
+ return `${this.table}.${this.foreignPivotKey}`;
217
+ }
218
+ /**
219
+ * Get the fully qualified "related key" for the relation
220
+ */
221
+ getQualifiedRelatedPivotKeyName() {
222
+ return `${this.table}.${this.relatedPivotKey}`;
223
+ }
224
+ /**
225
+ * Get the fully qualified parent key name
226
+ */
227
+ getQualifiedParentKeyName() {
228
+ return `${this.parent.getTable()}.${this.parentKey}`;
229
+ }
230
+ /**
231
+ * Get the fully qualified related key name
232
+ */
233
+ getQualifiedRelatedKeyName() {
234
+ return `${this.related.getTable()}.${this.relatedKey}`;
235
+ }
236
+ /**
237
+ * Specify the pivot table columns to retrieve
238
+ */
239
+ withPivot(...columns) {
240
+ this.pivotColumns = [
241
+ ...this.pivotColumns,
242
+ ...columns,
243
+ ];
244
+ return this;
245
+ }
246
+ /**
247
+ * Indicate that the pivot table has timestamps
248
+ */
249
+ withTimestamps(createdAt, updatedAt) {
250
+ this.usingTimestamps = true;
251
+ this.pivotCreatedAt = createdAt || 'created_at';
252
+ this.pivotUpdatedAt = updatedAt || 'updated_at';
253
+ return this.withPivot(this.pivotCreatedAt, this.pivotUpdatedAt);
254
+ }
255
+ /**
256
+ * Set a where clause for the pivot table
257
+ */
258
+ wherePivot(column, operator, value) {
259
+ if (arguments.length === 2) {
260
+ value = operator;
261
+ operator = '=';
262
+ }
263
+ this.pivotWheres.push({
264
+ column: `${this.table}.${column}`,
265
+ operator,
266
+ value,
267
+ boolean: 'and',
268
+ });
269
+ return this.query.where(`${this.table}.${column}`, operator, value);
270
+ }
271
+ /**
272
+ * Set a "where in" clause for the pivot table
273
+ */
274
+ wherePivotIn(column, values) {
275
+ return this.query.whereIn(`${this.table}.${column}`, values);
276
+ }
277
+ /**
278
+ * Set a "where not in" clause for the pivot table
279
+ */
280
+ wherePivotNotIn(column, values) {
281
+ return this.query.whereNotIn(`${this.table}.${column}`, values);
282
+ }
283
+ /**
284
+ * Set a "where null" clause for the pivot table
285
+ */
286
+ wherePivotNull(column) {
287
+ return this.query.whereNull(`${this.table}.${column}`);
288
+ }
289
+ /**
290
+ * Set a "where not null" clause for the pivot table
291
+ */
292
+ wherePivotNotNull(column) {
293
+ return this.query.whereNotNull(`${this.table}.${column}`);
294
+ }
295
+ /**
296
+ * Set an "or where" clause for the pivot table
297
+ */
298
+ orWherePivot(column, operator, value) {
299
+ if (arguments.length === 2) {
300
+ value = operator;
301
+ operator = '=';
302
+ }
303
+ return this.query.orWhere(`${this.table}.${column}`, operator, value);
304
+ }
305
+ /**
306
+ * Attach models to the parent
307
+ */
308
+ async attach(ids, attributes = {}) {
309
+ const records = this.formatAttachRecords(this.parseIds(ids), attributes);
310
+ if (records.length === 0) {
311
+ return;
312
+ }
313
+ const connection = this.parent.getConnection();
314
+ await connection.table(this.table).insert(records);
315
+ }
316
+ /**
317
+ * Detach models from the parent
318
+ */
319
+ async detach(ids) {
320
+ const connection = this.parent.getConnection();
321
+ let query = connection.table(this.table).where(this.foreignPivotKey, '=', this.parent.getAttribute(this.parentKey));
322
+ if (ids !== undefined) {
323
+ const parsedIds = this.parseIds(ids);
324
+ query = query.whereIn(this.relatedPivotKey, parsedIds);
325
+ }
326
+ return await query.delete();
327
+ }
328
+ /**
329
+ * Sync the intermediate tables with a list of IDs
330
+ */
331
+ async sync(ids) {
332
+ const changes = {
333
+ attached: [],
334
+ detached: [],
335
+ updated: [],
336
+ };
337
+ const current = await this.getCurrentlyAttachedPivots();
338
+ const records = this.formatRecordsList(this.parseIds(ids));
339
+ const detach = current.filter((id) => !records.some((record) => record.id === id));
340
+ if (detach.length > 0) {
341
+ await this.detach(detach);
342
+ changes.detached = detach;
343
+ }
344
+ changes.attached = await this.attachNew(records, current);
345
+ changes.updated = await this.updateExisting(records, current);
346
+ return changes;
347
+ }
348
+ /**
349
+ * Sync without detaching
350
+ */
351
+ async syncWithoutDetaching(ids) {
352
+ const changes = {
353
+ attached: [],
354
+ updated: [],
355
+ };
356
+ const current = await this.getCurrentlyAttachedPivots();
357
+ const records = this.formatRecordsList(this.parseIds(ids));
358
+ changes.attached = await this.attachNew(records, current);
359
+ changes.updated = await this.updateExisting(records, current);
360
+ return changes;
361
+ }
362
+ /**
363
+ * Toggle models from the parent
364
+ */
365
+ async toggle(ids) {
366
+ const changes = {
367
+ attached: [],
368
+ detached: [],
369
+ };
370
+ const parsedIds = this.parseIds(ids);
371
+ const current = await this.getCurrentlyAttachedPivots();
372
+ const detach = parsedIds.filter((id) => current.includes(id));
373
+ const attach = parsedIds.filter((id) => !current.includes(id));
374
+ if (detach.length > 0) {
375
+ await this.detach(detach);
376
+ changes.detached = detach;
377
+ }
378
+ if (attach.length > 0) {
379
+ await this.attach(attach);
380
+ changes.attached = attach;
381
+ }
382
+ return changes;
383
+ }
384
+ /**
385
+ * Update an existing pivot record on the table
386
+ */
387
+ async updateExistingPivot(id, attributes) {
388
+ if (this.usingTimestamps && this.pivotUpdatedAt) {
389
+ attributes[this.pivotUpdatedAt] = new Date();
390
+ }
391
+ const connection = this.parent.getConnection();
392
+ return await connection
393
+ .table(this.table)
394
+ .where(this.foreignPivotKey, '=', this.parent.getAttribute(this.parentKey))
395
+ .where(this.relatedPivotKey, '=', id)
396
+ .update(attributes);
397
+ }
398
+ /**
399
+ * Get the currently attached pivot IDs
400
+ */
401
+ async getCurrentlyAttachedPivots() {
402
+ const connection = this.parent.getConnection();
403
+ const results = await connection
404
+ .table(this.table)
405
+ .where(this.foreignPivotKey, '=', this.parent.getAttribute(this.parentKey))
406
+ .pluck(this.relatedPivotKey);
407
+ return results;
408
+ }
409
+ /**
410
+ * Attach new records
411
+ */
412
+ async attachNew(records, current) {
413
+ const newRecords = records.filter((record) => !current.includes(record.id));
414
+ if (newRecords.length === 0) {
415
+ return [];
416
+ }
417
+ await this.attach(newRecords.map((r) => r.id), newRecords[0]?.attributes || {});
418
+ return newRecords.map((r) => r.id);
419
+ }
420
+ /**
421
+ * Update existing records
422
+ */
423
+ async updateExisting(records, current) {
424
+ const updated = [];
425
+ for (const record of records) {
426
+ if (current.includes(record.id) && Object.keys(record.attributes).length > 0) {
427
+ await this.updateExistingPivot(record.id, record.attributes);
428
+ updated.push(record.id);
429
+ }
430
+ }
431
+ return updated;
432
+ }
433
+ /**
434
+ * Format the records for attaching
435
+ */
436
+ formatAttachRecords(ids, attributes) {
437
+ const records = [];
438
+ const hasTimestamps = this.usingTimestamps;
439
+ for (const id of ids) {
440
+ const record = {
441
+ [this.foreignPivotKey]: this.parent.getAttribute(this.parentKey),
442
+ [this.relatedPivotKey]: id,
443
+ ...attributes,
444
+ };
445
+ if (hasTimestamps) {
446
+ const now = new Date();
447
+ if (this.pivotCreatedAt) {
448
+ record[this.pivotCreatedAt] = now;
449
+ }
450
+ if (this.pivotUpdatedAt) {
451
+ record[this.pivotUpdatedAt] = now;
452
+ }
453
+ }
454
+ records.push(record);
455
+ }
456
+ return records;
457
+ }
458
+ /**
459
+ * Format the sync records
460
+ */
461
+ formatRecordsList(ids) {
462
+ return ids.map((id) => {
463
+ if (typeof id === 'object' && !Array.isArray(id)) {
464
+ const { id: recordId, ...attributes } = id;
465
+ return { id: recordId, attributes };
466
+ }
467
+ return { id, attributes: {} };
468
+ });
469
+ }
470
+ /**
471
+ * Parse the IDs from the given value
472
+ */
473
+ parseIds(value) {
474
+ if (value instanceof EnsembleCollection_1.EnsembleCollection) {
475
+ return value.modelKeys();
476
+ }
477
+ if (Array.isArray(value)) {
478
+ return value;
479
+ }
480
+ if (typeof value === 'object' && value !== null) {
481
+ // Handle {id: attributes} format
482
+ return Object.keys(value).map((key) => {
483
+ const id = isNaN(Number(key)) ? key : Number(key);
484
+ return { id, ...value[key] };
485
+ });
486
+ }
487
+ return [value];
488
+ }
489
+ /**
490
+ * Get the name of the pivot accessor
491
+ */
492
+ getPivotAccessor() {
493
+ return this.accessor;
494
+ }
495
+ /**
496
+ * Set the name of the pivot accessor
497
+ */
498
+ as(accessor) {
499
+ this.accessor = accessor;
500
+ return this;
501
+ }
502
+ /**
503
+ * Get the pivot table name
504
+ */
505
+ getTable() {
506
+ return this.table;
507
+ }
508
+ /**
509
+ * Get the foreign pivot key name
510
+ */
511
+ getForeignPivotKeyName() {
512
+ return this.foreignPivotKey;
513
+ }
514
+ /**
515
+ * Get the related pivot key name
516
+ */
517
+ getRelatedPivotKeyName() {
518
+ return this.relatedPivotKey;
519
+ }
520
+ /**
521
+ * Get the parent key name
522
+ */
523
+ getParentKeyName() {
524
+ return this.parentKey;
525
+ }
526
+ /**
527
+ * Get the related key name
528
+ */
529
+ getRelatedKeyName() {
530
+ return this.relatedKey;
531
+ }
532
+ /**
533
+ * Get the relationship name
534
+ */
535
+ getRelationName() {
536
+ return this.relationName;
537
+ }
538
+ }
539
+ exports.BelongsToMany = BelongsToMany;
540
+ //# sourceMappingURL=BelongsToMany.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BelongsToMany.js","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Relations/BelongsToMany.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,5 @@ export { Relation } from './Relation';
7
7
  export { HasOne } from './HasOne';
8
8
  export { HasMany } from './HasMany';
9
9
  export { BelongsTo } from './BelongsTo';
10
+ export { BelongsToMany } from './BelongsToMany';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Relations/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Relations/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * Export all relationship classes
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.BelongsTo = exports.HasMany = exports.HasOne = exports.Relation = void 0;
8
+ exports.BelongsToMany = exports.BelongsTo = exports.HasMany = exports.HasOne = exports.Relation = void 0;
9
9
  var Relation_1 = require("./Relation");
10
10
  Object.defineProperty(exports, "Relation", { enumerable: true, get: function () { return Relation_1.Relation; } });
11
11
  var HasOne_1 = require("./HasOne");
@@ -14,4 +14,6 @@ var HasMany_1 = require("./HasMany");
14
14
  Object.defineProperty(exports, "HasMany", { enumerable: true, get: function () { return HasMany_1.HasMany; } });
15
15
  var BelongsTo_1 = require("./BelongsTo");
16
16
  Object.defineProperty(exports, "BelongsTo", { enumerable: true, get: function () { return BelongsTo_1.BelongsTo; } });
17
+ var BelongsToMany_1 = require("./BelongsToMany");
18
+ Object.defineProperty(exports, "BelongsToMany", { enumerable: true, get: function () { return BelongsToMany_1.BelongsToMany; } });
17
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Relations/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Relations/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orchestr-sh/orchestr",
3
- "version": "1.5.2",
3
+ "version": "1.5.3",
4
4
  "description": "A 1:1 Laravel replica in TypeScript - Brings Laravel's elegant syntax and architecture to Node.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",