import { BaseModel } from './base'; import { RequestApi } from '../requests'; import { Store } from './store'; import { ApiKeys, PersonData, UserData, KycData, CreditData, AddressData, } from '../types'; import { Keys } from './entities'; import { belongsTo, BelongsTo } from './belongs-to'; import { hasOne, HasOne } from './has-one'; import { hasMany, HasMany } from './has-many'; @belongsTo({ relationKey: 'user', foreignKey: 'userId', storeKey: Keys.users, }) @belongsTo({ relationKey: 'form', foreignKey: 'formId', storeKey: Keys.forms, }) @belongsTo({ relationKey: 'address', foreignKey: 'addressId', storeKey: Keys.addresses, }) @hasOne({ relationKey: 'kyc', foreignKey: 'personId', storeKey: Keys.kycs, }) @hasMany({ relationKey: 'credits', foreignKey: 'personId', storeKey: Keys.credits, }) export class PersonModel extends BaseModel { constructor(requestApi: RequestApi, store: Store) { super(requestApi[ApiKeys.PERSONS], Keys.persons, store); } } type PersonRelations = { user: BelongsTo; form: BelongsTo; kyc: HasOne; credits: HasMany; address: BelongsTo; }; export type PersonType = PersonModel & PersonRelations;