admin area

This commit is contained in:
2026-01-01 12:10:35 +01:00
parent 02c0cc44e1
commit f001df3744
68 changed files with 10324 additions and 32 deletions

View 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 {}

View File

@@ -0,0 +1,7 @@
/**
* Admin Persistence Tokens
*
* Dependency injection tokens for admin persistence layer.
*/
export const ADMIN_USER_REPOSITORY_TOKEN = 'IAdminUserRepository';

View File

@@ -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 {}

View File

@@ -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 {}

View File

@@ -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 {}