This repository was archived by the owner on Mar 27, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMovie.ts
38 lines (28 loc) · 1.5 KB
/
Movie.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import type { Relation } from 'soukai';
import type SolidHasManyRelation from 'soukai-solid/models/relations/SolidHasManyRelation';
import type SolidHasOneRelation from 'soukai-solid/models/relations/SolidHasOneRelation';
import MoviesCollection from 'soukai-solid/testing/lib/stubs/MoviesCollection';
import Person from 'soukai-solid/testing/lib/stubs/Person';
import WatchAction from 'soukai-solid/testing/lib/stubs/WatchAction';
import Model from './Movie.schema';
export default class Movie extends Model {
declare public director: Person | undefined;
declare public relatedDirector: SolidHasOneRelation<Movie, Person, typeof Person>;
declare public actions: WatchAction[] | undefined;
declare public relatedActions: SolidHasManyRelation<Movie, WatchAction, typeof WatchAction>;
declare public actors: Person[] | undefined;
declare public relatedActors: SolidHasManyRelation<Movie, Person, typeof Person>;
declare public collection: MoviesCollection | undefined;
public directorRelationship(): Relation {
return this.hasOne(Person, 'directed').usingSameDocument().onDelete('cascade');
}
public actorsRelationship(): Relation {
return this.hasMany(Person, 'starred').usingSameDocument().onDelete('cascade');
}
public actionsRelationship(): Relation {
return this.hasMany(WatchAction, 'object').usingSameDocument().onDelete('cascade');
}
public collectionRelationship(): Relation {
return this.isContainedBy(MoviesCollection);
}
}