80 lines
2.8 KiB
TypeScript
80 lines
2.8 KiB
TypeScript
import { Module, OnModuleInit } from '@nestjs/common';
|
|
import { CatalogController } from './catalog.controller';
|
|
import { CatalogService } from './services/catalog.service';
|
|
import { ClientsModule } from '@nestjs/microservices';
|
|
import { makeKnex, makeTypeOrm, natsClient } from '@freeblox/shared';
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
import knex from 'knex';
|
|
import { ContentEntity } from './database/entities/content.entity';
|
|
import { ContentRevisionEntity } from './database/entities/content-revision.entity';
|
|
import {
|
|
ContentModerationEntity,
|
|
ContentModerationBanEntity,
|
|
} from './database/entities/content-moderation.entity';
|
|
import { ContentAssetEntity } from './database/entities/content-asset.entity';
|
|
import { ContentPriceEntity } from './database/entities/content-price.entity';
|
|
import { ContentOwnershipEntity } from './database/entities/content-ownership.entity';
|
|
import { ContentTradeEntity } from './database/entities/content-trade.entity';
|
|
import { ContentFavoriteEntity } from './database/entities/content-favorite.entity';
|
|
import { ContentVoteEntity } from './database/entities/content-vote.entity';
|
|
import { ContentReportEntity } from './database/entities/content-report.entity';
|
|
import {
|
|
ContentCategoryContentTypeEntity,
|
|
ContentCategoryEntity,
|
|
} from './database/entities/content-category.entity';
|
|
import { CreateContentService } from './services/create-content.service';
|
|
import { ContentRelationEntity } from './database/entities/content-relation.entity';
|
|
|
|
const entities = [
|
|
ContentEntity,
|
|
ContentRevisionEntity,
|
|
ContentModerationEntity,
|
|
ContentModerationBanEntity,
|
|
ContentAssetEntity,
|
|
ContentPriceEntity,
|
|
ContentOwnershipEntity,
|
|
ContentTradeEntity,
|
|
ContentFavoriteEntity,
|
|
ContentVoteEntity,
|
|
ContentReportEntity,
|
|
ContentCategoryEntity,
|
|
ContentCategoryContentTypeEntity,
|
|
ContentRelationEntity,
|
|
];
|
|
|
|
@Module({
|
|
imports: [
|
|
ConfigModule.forRoot({
|
|
ignoreEnvFile: process.env.NODE_ENV === 'development',
|
|
load: [makeKnex('catalog', __dirname), makeTypeOrm('catalog')],
|
|
}),
|
|
TypeOrmModule.forRootAsync({
|
|
imports: [ConfigModule],
|
|
inject: [ConfigService],
|
|
useFactory: (config: ConfigService) => ({
|
|
...config.get('typeorm'),
|
|
entities,
|
|
}),
|
|
}),
|
|
TypeOrmModule.forFeature(entities),
|
|
ClientsModule.register([
|
|
natsClient('catalog'),
|
|
natsClient('auth'),
|
|
natsClient('player'),
|
|
natsClient('assets'),
|
|
]),
|
|
],
|
|
controllers: [CatalogController],
|
|
providers: [CatalogService, CreateContentService],
|
|
})
|
|
export class CatalogModule implements OnModuleInit {
|
|
constructor(private readonly config: ConfigService) {}
|
|
|
|
async onModuleInit() {
|
|
const knexInstance = knex(this.config.get('knex'));
|
|
await knexInstance.migrate.latest();
|
|
await knexInstance.seed.run();
|
|
}
|
|
}
|