@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 +119 -6
- package/dist/Database/Ensemble/Concerns/HasRelationships.d.ts +9 -0
- package/dist/Database/Ensemble/Concerns/HasRelationships.d.ts.map +1 -1
- package/dist/Database/Ensemble/Concerns/HasRelationships.js +32 -0
- package/dist/Database/Ensemble/Concerns/HasRelationships.js.map +1 -1
- package/dist/Database/Ensemble/EnsembleBuilder.d.ts +4 -0
- package/dist/Database/Ensemble/EnsembleBuilder.d.ts.map +1 -1
- package/dist/Database/Ensemble/EnsembleBuilder.js +10 -0
- package/dist/Database/Ensemble/EnsembleBuilder.js.map +1 -1
- package/dist/Database/Ensemble/Relations/BelongsToMany.d.ts +276 -0
- package/dist/Database/Ensemble/Relations/BelongsToMany.d.ts.map +1 -0
- package/dist/Database/Ensemble/Relations/BelongsToMany.js +540 -0
- package/dist/Database/Ensemble/Relations/BelongsToMany.js.map +1 -0
- package/dist/Database/Ensemble/Relations/index.d.ts +1 -0
- package/dist/Database/Ensemble/Relations/index.d.ts.map +1 -1
- package/dist/Database/Ensemble/Relations/index.js +3 -1
- package/dist/Database/Ensemble/Relations/index.js.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
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
|
-
│ │ │
|
|
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":"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;
|
|
1
|
+
{"version":3,"file":"HasRelationships.d.ts","sourceRoot":"","sources":["../../../../src/Database/Ensemble/Concerns/HasRelationships.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":";AAAA;;;;GAIG;;;AAIH,oDAAiD;AACjD,gDAA6C;AAC7C,kDAA+C;AAC/C,sDAAmD;
|
|
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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"}
|
|
@@ -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