add db migration

This commit is contained in:
2025-06-20 11:06:39 +08:00
parent 67e4466687
commit 13b5bc629a
8 changed files with 119 additions and 23 deletions
+5 -2
View File
@@ -9,12 +9,15 @@ import { SearchService } from '@/modules/content/services';
import { SanitizeService } from '@/modules/content/services/SanitizeService';
import { PostService } from '@/modules/content/services/post.service';
import { PostSubscriber } from '@/modules/content/subscribers/post.subscriber';
import { DatabaseModule } from '@/modules/database/database.module';
import { addSubscribers } from '@/modules/database/utils';
import { Configure } from '../config/configure';
import { defauleContentConfig } from './config';
import * as subscribers from './subscribers';
import { ContentConfig } from './types';
@Module({})
@@ -23,7 +26,7 @@ export class ContentModule {
const config = await configure.get<ContentConfig>('content', defauleContentConfig);
const providers: ModuleMetadata['providers'] = [
...Object.values(services),
PostSubscriber,
...(await addSubscribers(configure, Object.values(subscribers))),
{
provide: PostService,
inject: [
+1
View File
@@ -0,0 +1 @@
export * from './post.subscriber';
@@ -1,33 +1,33 @@
import { Optional } from '@nestjs/common';
import { isNil } from 'lodash';
import { DataSource, EventSubscriber, ObjectType } from 'typeorm';
import { Configure } from '@/modules/config/configure';
import { PostBodyType } from '@/modules/content/constants';
import { PostEntity } from '@/modules/content/entities/post.entity';
import { PostRepository } from '@/modules/content/repositories/post.repository';
import { SanitizeService } from '@/modules/content/services/SanitizeService';
import { BaseSubscriber } from '@/modules/database/base/subscriber';
@EventSubscriber()
export class PostSubscriber extends BaseSubscriber<PostEntity> {
protected entity: ObjectType<PostEntity> = PostEntity;
constructor(
protected dataSource: DataSource,
protected postRepository: PostRepository,
protected configure: Configure,
@Optional() protected sanitizeService: SanitizeService,
protected _configure: Configure,
) {
super(dataSource);
super(dataSource, _configure);
}
get configure(): Configure {
return this._configure;
}
async afterLoad(entity: PostEntity) {
if (
(await this.configure.get('content.htmlEnabled')) &&
!isNil(this.sanitizeService) &&
entity.type === PostBodyType.HTML
) {
entity.body = this.sanitizeService.sanitize(entity.body);
const sanitizeService = (await this.configure.get('content.htmlEnabled'))
? this.container.get(SanitizeService)
: undefined;
if (!isNil(sanitizeService) && entity.type === PostBodyType.HTML) {
entity.body = sanitizeService.sanitize(entity.body);
}
}
}