import { Repository } from 'typeorm'; import { BaseModel } from '@/common/BaseModel'; import { ModelConfig, ModelConfigProvider } from '@/common/config'; import { AddressBook } from '@/core/entity/AddressBook'; import { CoinTransfer } from '@/core/entity/CoinTransfer'; import { CoreProcessor } from '@/core/entity/CoreProcessor'; import { HistoryTransaction } from '@/core/entity/HistoryTransaction'; import { MSafe } from '@/core/entity/MSafe'; import { NotificationEntry } from '@/core/entity/NotificationEntry'; import { NotificationMeta } from '@/core/entity/NotificationMeta'; import { ObjectTransfer } from '@/core/entity/ObjectTransfer'; import { PendingTransaction } from '@/core/entity/PendingTransaction'; import { TransactionIndex } from '@/core/entity/TransactionIndex'; import { TransactionIntention } from '@/core/entity/TransactionIntention'; import { User } from '@/core/entity/User'; import { UserMSafe } from '@/core/entity/UserMSafe'; import { UserReport } from '@/core/entity/UserReport'; import { UserSetting } from '@/core/entity/UserSetting'; import { UserVote } from '@/core/entity/UserVote'; export class CoreModel extends BaseModel { coinTransfer: Repository; objectTransfer: Repository; coreProcessor: Repository; msafe: Repository; historyTransaction: Repository; transactionIntention: Repository; pendingTransaction: Repository; transactionIndex: Repository; user: Repository; userMSafe: Repository; userSetting: Repository; userVote: Repository; userReport: Repository; addressBook: Repository; notificationMeta: Repository; notificationEntry: Repository; protected constructor(configProvider: ModelConfigProvider) { super(configProvider, [ CoinTransfer, ObjectTransfer, CoreProcessor, MSafe, HistoryTransaction, User, UserMSafe, TransactionIntention, UserSetting, UserVote, UserReport, PendingTransaction, AddressBook, TransactionIndex, NotificationEntry, NotificationMeta, ]); } protected async init() { await super.init(); this.coinTransfer = this.dataSource.getRepository(CoinTransfer); this.objectTransfer = this.dataSource.getRepository(ObjectTransfer); this.coreProcessor = this.dataSource.getRepository(CoreProcessor); this.msafe = this.dataSource.getRepository(MSafe); this.historyTransaction = this.dataSource.getRepository(HistoryTransaction); this.transactionIntention = this.dataSource.getRepository(TransactionIntention); this.pendingTransaction = this.dataSource.getRepository(PendingTransaction); this.transactionIndex = this.dataSource.getRepository(TransactionIndex); this.user = this.dataSource.getRepository(User); this.userMSafe = this.dataSource.getRepository(UserMSafe); this.userSetting = this.dataSource.getRepository(UserSetting); this.userVote = this.dataSource.getRepository(UserVote); this.userReport = this.dataSource.getRepository(UserReport); this.addressBook = this.dataSource.getRepository(AddressBook); this.notificationEntry = this.dataSource.getRepository(NotificationEntry); this.notificationMeta = this.dataSource.getRepository(NotificationMeta); } static async New(config: ModelConfig) { const core = new CoreModel(config); await core.init(); return core; } }