admin area
This commit is contained in:
11
apps/api/src/persistence/admin/AdminPersistenceModule.ts
Normal file
11
apps/api/src/persistence/admin/AdminPersistenceModule.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* Admin Persistence Module
|
||||
*
|
||||
* Abstract module interface for admin persistence.
|
||||
* Both InMemory and TypeORM implementations should export this.
|
||||
*/
|
||||
|
||||
import { Module } from '@nestjs/common';
|
||||
|
||||
@Module({})
|
||||
export class AdminPersistenceModule {}
|
||||
7
apps/api/src/persistence/admin/AdminPersistenceTokens.ts
Normal file
7
apps/api/src/persistence/admin/AdminPersistenceTokens.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Admin Persistence Tokens
|
||||
*
|
||||
* Dependency injection tokens for admin persistence layer.
|
||||
*/
|
||||
|
||||
export const ADMIN_USER_REPOSITORY_TOKEN = 'IAdminUserRepository';
|
||||
@@ -0,0 +1,15 @@
|
||||
import { InMemoryAdminUserRepository } from '@core/admin/infrastructure/persistence/InMemoryAdminUserRepository';
|
||||
import { Module } from '@nestjs/common';
|
||||
|
||||
import { ADMIN_USER_REPOSITORY_TOKEN } from '../admin/AdminPersistenceTokens';
|
||||
|
||||
@Module({
|
||||
providers: [
|
||||
{
|
||||
provide: ADMIN_USER_REPOSITORY_TOKEN,
|
||||
useClass: InMemoryAdminUserRepository,
|
||||
},
|
||||
],
|
||||
exports: [ADMIN_USER_REPOSITORY_TOKEN],
|
||||
})
|
||||
export class InMemoryAdminPersistenceModule {}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { TypeOrmModule, getDataSourceToken } from '@nestjs/typeorm';
|
||||
import type { DataSource } from 'typeorm';
|
||||
|
||||
import { AdminUserOrmEntity } from '@core/admin/infrastructure/typeorm/entities/AdminUserOrmEntity';
|
||||
import { TypeOrmAdminUserRepository } from '@core/admin/infrastructure/typeorm/repositories/TypeOrmAdminUserRepository';
|
||||
import { AdminUserOrmMapper } from '@core/admin/infrastructure/typeorm/mappers/AdminUserOrmMapper';
|
||||
|
||||
import { ADMIN_USER_REPOSITORY_TOKEN } from '../admin/AdminPersistenceTokens';
|
||||
|
||||
const typeOrmFeatureImports = [TypeOrmModule.forFeature([AdminUserOrmEntity])];
|
||||
|
||||
@Module({
|
||||
imports: [...typeOrmFeatureImports],
|
||||
providers: [
|
||||
{ provide: AdminUserOrmMapper, useFactory: () => new AdminUserOrmMapper() },
|
||||
{
|
||||
provide: ADMIN_USER_REPOSITORY_TOKEN,
|
||||
useFactory: (dataSource: DataSource, mapper: AdminUserOrmMapper) =>
|
||||
new TypeOrmAdminUserRepository(dataSource, mapper),
|
||||
inject: [getDataSourceToken(), AdminUserOrmMapper],
|
||||
},
|
||||
],
|
||||
exports: [ADMIN_USER_REPOSITORY_TOKEN],
|
||||
})
|
||||
export class PostgresAdminPersistenceModule {}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { TypeOrmModule, getDataSourceToken } from '@nestjs/typeorm';
|
||||
import type { DataSource } from 'typeorm';
|
||||
|
||||
import { AdminUserOrmEntity } from '@core/admin/infrastructure/typeorm/entities/AdminUserOrmEntity';
|
||||
import { TypeOrmAdminUserRepository } from '@core/admin/infrastructure/typeorm/repositories/TypeOrmAdminUserRepository';
|
||||
import { AdminUserOrmMapper } from '@core/admin/infrastructure/typeorm/mappers/AdminUserOrmMapper';
|
||||
|
||||
import { ADMIN_USER_REPOSITORY_TOKEN } from '../admin/AdminPersistenceTokens';
|
||||
|
||||
const typeOrmFeatureImports = [TypeOrmModule.forFeature([AdminUserOrmEntity])];
|
||||
|
||||
@Module({
|
||||
imports: [...typeOrmFeatureImports],
|
||||
providers: [
|
||||
{ provide: AdminUserOrmMapper, useFactory: () => new AdminUserOrmMapper() },
|
||||
{
|
||||
provide: ADMIN_USER_REPOSITORY_TOKEN,
|
||||
useFactory: (dataSource: DataSource, mapper: AdminUserOrmMapper) =>
|
||||
new TypeOrmAdminUserRepository(dataSource, mapper),
|
||||
inject: [getDataSourceToken(), AdminUserOrmMapper],
|
||||
},
|
||||
],
|
||||
exports: [ADMIN_USER_REPOSITORY_TOKEN],
|
||||
})
|
||||
export class TypeOrmAdminPersistenceModule {}
|
||||
Reference in New Issue
Block a user