import { schema } from 'normalizr'; const { Entity } = schema; export const USER_LITERAL = 'me'; // keys are used in the entities objects of normalized data. export enum Keys { addresses = 'addresses', banks = 'banks', credits = 'credits', forms = 'forms', kycs = 'kycs', loanParts = 'loanParts', persons = 'persons', tinkAccounts = 'tinkAccounts', tinkLoans = 'tinkLoans', users = 'users', userLiteral = 'userLiteral', countries = 'countries', creditTypes = 'creditTypes', currencies = 'currencies', employmentTypes = 'employmentTypes', genders = 'genders', kycPurposes = 'kycPurposes', kycSources = 'kycSources', markets = 'markets', } export const userLiteral = new Entity( Keys.userLiteral, {}, { idAttribute: USER_LITERAL }, ); export const address = new Entity(Keys.addresses); export const bank = new Entity(Keys.banks); export const credit = new Entity(Keys.credits); export const form = new Entity(Keys.forms); export const kyc = new Entity(Keys.kycs); export const loanPart = new Entity(Keys.loanParts); export const person = new Entity(Keys.persons); export const tinkLoan = new Entity(Keys.tinkLoans); export const tinkAccount = new Entity(Keys.tinkAccounts); export const user = new Entity(Keys.users); address.define({ form, user, }); // bank.define({}); credit.define({ person, user, }); form.define({ user, address, persons: [person], tinkLoans: [tinkLoan], }); kyc.define({ person, user, }); loanPart.define({ form, user, }); person.define({ user, form, credits: [credit], kyc, }); tinkLoan.define({ form, user, }); user.define({ forms: [form], persons: [person], addresses: [address], loanParts: [loanPart], credits: [credit], kycs: [kyc], tinkAccounts: [tinkAccount], }); tinkAccount.define({ user, }); // Enums export const country = new Entity(Keys.countries); export const currencies = new Entity(Keys.currencies); export const gender = new Entity(Keys.genders); export const employmentType = new Entity(Keys.employmentTypes); export const creditType = new Entity(Keys.creditTypes); export const market = new Entity(Keys.markets); export const kycPurposes = new Entity(Keys.kycPurposes); export const kycSources = new Entity(Keys.kycSources); export const Entities = { [Keys.addresses]: address, [Keys.banks]: bank, [Keys.credits]: credit, [Keys.forms]: form, [Keys.kycs]: kyc, [Keys.loanParts]: loanPart, [Keys.persons]: person, [Keys.tinkLoans]: tinkLoan, [Keys.tinkAccounts]: tinkAccount, [Keys.users]: user, [Keys.userLiteral]: userLiteral, [Keys.countries]: country, [Keys.currencies]: currencies, [Keys.genders]: gender, [Keys.employmentTypes]: employmentType, [Keys.creditTypes]: creditType, [Keys.markets]: market, [Keys.kycPurposes]: kycPurposes, [Keys.kycSources]: kycSources, };