import { BaseModel } from './base'; import { RequestApi } from '../requests'; import { Store } from './store'; import { ApiKeys, FormData, AddressData, UserData, PersonData, LoanPartData, TinkLoanData, } from '../types'; import { Keys } from './entities'; import { hasOne, HasOne } from './has-one'; import { belongsTo, BelongsTo } from './belongs-to'; import { hasMany, HasMany } from './has-many'; @hasOne({ relationKey: 'address', foreignKey: 'formId', storeKey: Keys.addresses, }) @belongsTo({ relationKey: 'user', foreignKey: 'userId', storeKey: Keys.users, }) @hasMany({ relationKey: 'persons', foreignKey: 'formId', storeKey: Keys.persons, }) @hasMany({ relationKey: 'loanParts', foreignKey: 'formId', storeKey: Keys.loanParts, }) @hasMany({ relationKey: 'tinkLoans', foreignKey: 'formId', storeKey: Keys.tinkLoans, }) export class FormModel extends BaseModel { constructor(requestApi: RequestApi, store: Store) { super(requestApi[ApiKeys.FORMS], Keys.forms, store); } } type FormRelations = { address: HasOne; user: BelongsTo; persons: HasMany; loanParts: HasMany; tinkLoans: HasMany; }; export type FormType = FormModel & FormRelations;