Type Alias: HasManyThroughConfiguration<OM, TM, PKT, FM, PKF, JM, JPKT, JPKF>
ts
type HasManyThroughConfiguration<OM, TM, PKT, FM, PKF, JM, JPKT, JPKF> = [
typeof HasManyThrough,
FM,
ChainableRelationshipConfiguration[],
];The configuration for a HasManyThrough relationship.
Type Parameters
| Type Parameter | Description |
|---|---|
OM extends Record<string, PlainObject> | the map of all models in the database |
TM extends StringKeyOf<OM> | the table of the originating model |
PKT extends StringKeyOf<OM[TM]> | the property used as the primary key in the originating model |
FM extends StringKeyOf<OM> | the table of the foreign model |
PKF extends StringKeyOf<OM[FM]> | the property used as the primary key in the foreign model |
JM extends StringKeyOf<OM> | - |
JPKT extends StringKeyOf<OM[JM]> | - |
JPKF extends StringKeyOf<OM[JM]> | - |
Example
typescript
{
...
models: {
users: {
schema: '++id, email, createdAt, updatedAt',
properties: ['id', 'email', 'password'],
primaryKey: 'id',
relationships: {
posts: [HasMany, 'posts', 'user_id'],
comments: [HasMany, 'comments', 'user_id'],
commentors: [HasManyThrough, [
[HasMany, 'posts', 'user_id'],
[HasMany, 'comments', 'post_id'],
[BelongsTo, 'users', 'user_id'],
]]
}
},
posts: {
schema: '++id, user_id, title, body',
properties: ['id', 'user_id', 'title', 'body'],
relationships: {
comments: [HasMany, 'comments', 'post_id'],
}
}
comments: {
schema: '++id, post_id, user_id, body',
properties: ['id', 'post_id', 'user_id', 'body'],
relationships: {
user: [BelongsTo, 'users', 'user_id'],
}
}
},
...
}