feat: add topic model

This commit is contained in:
Innei
2022-05-18 22:40:35 +08:00
parent fd32568e8c
commit 2ebabec6a0
4 changed files with 70 additions and 34 deletions

View File

@@ -0,0 +1,29 @@
import { IsOptional, IsString, MaxLength } from 'class-validator'
import { index, modelOptions, prop } from '@typegoose/typegoose'
import { BaseModel } from '~/shared/model/base.model'
@modelOptions({
options: {
customName: 'Topic',
},
})
@index({ name: 1 })
export class TopicModel extends BaseModel {
@prop({ default: '' })
@MaxLength(400, { message: '描述信息最多 400 个字符' })
@IsOptional()
@IsString({ message: '描述信息必须是字符串' })
description?: string
@prop()
@IsString({ message: '简介必须是字符串' })
introduce: string
@prop({ unique: true })
name: string
@prop({ unique: true })
id: string
}

View File

@@ -0,0 +1,4 @@
import { Module } from '@nestjs/common'
@Module({})
export class TopicModule {}

View File

@@ -0,0 +1,34 @@
import { AnalyzeModel } from '~/modules/analyze/analyze.model'
import { CategoryModel } from '~/modules/category/category.model'
import { CommentModel } from '~/modules/comment/comment.model'
import { OptionModel } from '~/modules/configs/configs.model'
import { LinkModel } from '~/modules/link/link.model'
import { NoteModel } from '~/modules/note/note.model'
import { PageModel } from '~/modules/page/page.model'
import { PostModel } from '~/modules/post/post.model'
import { ProjectModel } from '~/modules/project/project.model'
import { RecentlyModel } from '~/modules/recently/recently.model'
import { SayModel } from '~/modules/say/say.model'
import { ServerlessStorageModel } from '~/modules/serverless/serverless.model'
import { SnippetModel } from '~/modules/snippet/snippet.model'
import { TopicModel } from '~/modules/topic/topic.model'
import { UserModel } from '~/modules/user/user.model'
import { getProviderByTypegooseClass } from '~/transformers/model.transformer'
export const databaseModels = [
AnalyzeModel,
CategoryModel,
CommentModel,
LinkModel,
NoteModel,
OptionModel,
PageModel,
PostModel,
ProjectModel,
RecentlyModel,
TopicModel,
SayModel,
ServerlessStorageModel,
SnippetModel,
UserModel,
].map((model) => getProviderByTypegooseClass(model))

View File

@@ -1,43 +1,12 @@
import { Global, Module } from '@nestjs/common'
import { AnalyzeModel } from '~/modules/analyze/analyze.model'
import { CommentModel } from '~/modules/comment/comment.model'
import { OptionModel } from '~/modules/configs/configs.model'
import { LinkModel } from '~/modules/link/link.model'
import { NoteModel } from '~/modules/note/note.model'
import { PageModel } from '~/modules/page/page.model'
import { ProjectModel } from '~/modules/project/project.model'
import { RecentlyModel } from '~/modules/recently/recently.model'
import { SayModel } from '~/modules/say/say.model'
import { ServerlessStorageModel } from '~/modules/serverless/serverless.model'
import { SnippetModel } from '~/modules/snippet/snippet.model'
import { getProviderByTypegooseClass } from '~/transformers/model.transformer'
import { CategoryModel } from '../../modules/category/category.model'
import { PostModel } from '../../modules/post/post.model'
import { UserModel } from '../../modules/user/user.model'
import { databaseModels } from './database.models'
import { databaseProvider } from './database.provider'
import { DatabaseService } from './database.service'
const models = [
AnalyzeModel,
CategoryModel,
CommentModel,
LinkModel,
NoteModel,
OptionModel,
PageModel,
PostModel,
ProjectModel,
RecentlyModel,
SayModel,
ServerlessStorageModel,
SnippetModel,
UserModel,
].map((model) => getProviderByTypegooseClass(model))
@Module({
providers: [DatabaseService, databaseProvider, ...models],
exports: [DatabaseService, databaseProvider, ...models],
providers: [DatabaseService, databaseProvider, ...databaseModels],
exports: [DatabaseService, databaseProvider, ...databaseModels],
})
@Global()
export class DatabaseModule {}