106 lines
5.6 KiB
TypeScript
106 lines
5.6 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { TypeOrmModule, getDataSourceToken } from '@nestjs/typeorm';
|
|
import type { DataSource } from 'typeorm';
|
|
|
|
import { LoggingModule } from '../../domain/logging/LoggingModule';
|
|
|
|
import type { IPaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
|
|
import type { IMemberPaymentRepository, IMembershipFeeRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
|
|
import type { IPrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
|
|
import type { ITransactionRepository, IWalletRepository } from '@core/payments/domain/repositories/WalletRepository';
|
|
|
|
import { PaymentsMemberPaymentOrmEntity } from '@adapters/payments/persistence/typeorm/entities/PaymentsMemberPaymentOrmEntity';
|
|
import { PaymentsMembershipFeeOrmEntity } from '@adapters/payments/persistence/typeorm/entities/PaymentsMembershipFeeOrmEntity';
|
|
import { PaymentsPaymentOrmEntity } from '@adapters/payments/persistence/typeorm/entities/PaymentsPaymentOrmEntity';
|
|
import { PaymentsPrizeOrmEntity } from '@adapters/payments/persistence/typeorm/entities/PaymentsPrizeOrmEntity';
|
|
import { PaymentsTransactionOrmEntity } from '@adapters/payments/persistence/typeorm/entities/PaymentsTransactionOrmEntity';
|
|
import { PaymentsWalletOrmEntity } from '@adapters/payments/persistence/typeorm/entities/PaymentsWalletOrmEntity';
|
|
|
|
import { PaymentsMemberPaymentOrmMapper } from '@adapters/payments/persistence/typeorm/mappers/PaymentsMemberPaymentOrmMapper';
|
|
import { PaymentsMembershipFeeOrmMapper } from '@adapters/payments/persistence/typeorm/mappers/PaymentsMembershipFeeOrmMapper';
|
|
import { PaymentsPaymentOrmMapper } from '@adapters/payments/persistence/typeorm/mappers/PaymentsPaymentOrmMapper';
|
|
import { PaymentsPrizeOrmMapper } from '@adapters/payments/persistence/typeorm/mappers/PaymentsPrizeOrmMapper';
|
|
import { PaymentsWalletOrmMapper } from '@adapters/payments/persistence/typeorm/mappers/PaymentsWalletOrmMapper';
|
|
|
|
import { TypeOrmMemberPaymentRepository, TypeOrmMembershipFeeRepository } from '@adapters/payments/persistence/typeorm/repositories/TypeOrmMembershipFeeRepository';
|
|
import { TypeOrmPaymentRepository } from '@adapters/payments/persistence/typeorm/repositories/TypeOrmPaymentRepository';
|
|
import { TypeOrmPrizeRepository } from '@adapters/payments/persistence/typeorm/repositories/TypeOrmPrizeRepository';
|
|
import { TypeOrmTransactionRepository, TypeOrmWalletRepository } from '@adapters/payments/persistence/typeorm/repositories/TypeOrmWalletRepository';
|
|
|
|
import {
|
|
PAYMENTS_MEMBER_PAYMENT_REPOSITORY_TOKEN,
|
|
PAYMENTS_MEMBERSHIP_FEE_REPOSITORY_TOKEN,
|
|
PAYMENTS_PAYMENT_REPOSITORY_TOKEN,
|
|
PAYMENTS_PRIZE_REPOSITORY_TOKEN,
|
|
PAYMENTS_TRANSACTION_REPOSITORY_TOKEN,
|
|
PAYMENTS_WALLET_REPOSITORY_TOKEN,
|
|
} from '../payments/PaymentsPersistenceTokens';
|
|
|
|
const typeOrmFeatureImports = [
|
|
TypeOrmModule.forFeature([
|
|
PaymentsWalletOrmEntity,
|
|
PaymentsTransactionOrmEntity,
|
|
PaymentsPaymentOrmEntity,
|
|
PaymentsPrizeOrmEntity,
|
|
PaymentsMembershipFeeOrmEntity,
|
|
PaymentsMemberPaymentOrmEntity,
|
|
]),
|
|
];
|
|
|
|
@Module({
|
|
imports: [LoggingModule, ...typeOrmFeatureImports],
|
|
providers: [
|
|
{ provide: PaymentsWalletOrmMapper, useFactory: () => new PaymentsWalletOrmMapper() },
|
|
{ provide: PaymentsPaymentOrmMapper, useFactory: () => new PaymentsPaymentOrmMapper() },
|
|
{ provide: PaymentsPrizeOrmMapper, useFactory: () => new PaymentsPrizeOrmMapper() },
|
|
{ provide: PaymentsMembershipFeeOrmMapper, useFactory: () => new PaymentsMembershipFeeOrmMapper() },
|
|
{ provide: PaymentsMemberPaymentOrmMapper, useFactory: () => new PaymentsMemberPaymentOrmMapper() },
|
|
|
|
{
|
|
provide: PAYMENTS_WALLET_REPOSITORY_TOKEN,
|
|
useFactory: (dataSource: DataSource, mapper: PaymentsWalletOrmMapper): IWalletRepository =>
|
|
new TypeOrmWalletRepository(dataSource, mapper),
|
|
inject: [getDataSourceToken(), PaymentsWalletOrmMapper],
|
|
},
|
|
{
|
|
provide: PAYMENTS_TRANSACTION_REPOSITORY_TOKEN,
|
|
useFactory: (dataSource: DataSource, mapper: PaymentsWalletOrmMapper): ITransactionRepository =>
|
|
new TypeOrmTransactionRepository(dataSource, mapper),
|
|
inject: [getDataSourceToken(), PaymentsWalletOrmMapper],
|
|
},
|
|
{
|
|
provide: PAYMENTS_PAYMENT_REPOSITORY_TOKEN,
|
|
useFactory: (dataSource: DataSource, mapper: PaymentsPaymentOrmMapper): IPaymentRepository =>
|
|
new TypeOrmPaymentRepository(dataSource, mapper),
|
|
inject: [getDataSourceToken(), PaymentsPaymentOrmMapper],
|
|
},
|
|
{
|
|
provide: PAYMENTS_PRIZE_REPOSITORY_TOKEN,
|
|
useFactory: (dataSource: DataSource, mapper: PaymentsPrizeOrmMapper): IPrizeRepository =>
|
|
new TypeOrmPrizeRepository(dataSource, mapper),
|
|
inject: [getDataSourceToken(), PaymentsPrizeOrmMapper],
|
|
},
|
|
{
|
|
provide: PAYMENTS_MEMBERSHIP_FEE_REPOSITORY_TOKEN,
|
|
useFactory: (dataSource: DataSource, mapper: PaymentsMembershipFeeOrmMapper): IMembershipFeeRepository =>
|
|
new TypeOrmMembershipFeeRepository(dataSource, mapper),
|
|
inject: [getDataSourceToken(), PaymentsMembershipFeeOrmMapper],
|
|
},
|
|
{
|
|
provide: PAYMENTS_MEMBER_PAYMENT_REPOSITORY_TOKEN,
|
|
useFactory: (dataSource: DataSource, mapper: PaymentsMemberPaymentOrmMapper): IMemberPaymentRepository =>
|
|
new TypeOrmMemberPaymentRepository(dataSource, mapper),
|
|
inject: [getDataSourceToken(), PaymentsMemberPaymentOrmMapper],
|
|
},
|
|
],
|
|
exports: [
|
|
PAYMENTS_WALLET_REPOSITORY_TOKEN,
|
|
PAYMENTS_TRANSACTION_REPOSITORY_TOKEN,
|
|
PAYMENTS_PAYMENT_REPOSITORY_TOKEN,
|
|
PAYMENTS_PRIZE_REPOSITORY_TOKEN,
|
|
PAYMENTS_MEMBERSHIP_FEE_REPOSITORY_TOKEN,
|
|
PAYMENTS_MEMBER_PAYMENT_REPOSITORY_TOKEN,
|
|
],
|
|
})
|
|
export class PostgresPaymentsPersistenceModule {}
|