import { BaseModel } from './base'; import { RequestApi } from '../requests'; import { Store } from './store'; import { ApiKeys, AddressData, UserData, FormData, PersonData } from '../types'; import { Keys } from './entities'; import { belongsTo, BelongsTo } from './belongs-to'; import { hasMany, HasMany } from './has-many'; @belongsTo({ relationKey: 'form', foreignKey: 'formId', storeKey: Keys.forms, }) @belongsTo({ relationKey: 'user', foreignKey: 'userId', storeKey: Keys.users, }) @hasMany({ relationKey: 'persons', foreignKey: 'addressId', storeKey: Keys.persons, }) export class AddressModel extends BaseModel { constructor(requestApi: RequestApi, store: Store) { super(requestApi[ApiKeys.ADDRESSES], Keys.addresses, store); } } type AddressRelations = { user: BelongsTo; form: BelongsTo; persons: HasMany; }; export type AddressType = AddressModel & AddressRelations;