forked from hangshuo652/aurak
feat: implement QuestionBank CRUD with pagination and template query
- Add pagination support to findAll (page, limit query params) - Add findByTemplateId method to service - Add GET /by-template/:templateId endpoint to controller - Service already includes CRUD for QuestionBank and QuestionBankItem
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
|
||||
import { ConfigModule, ConfigService } from '@nestjs/config';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { ScheduleModule } from '@nestjs/schedule';
|
||||
import { ServeStaticModule } from '@nestjs/serve-static';
|
||||
import { join } from 'path';
|
||||
import { APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core';
|
||||
import { AppController } from './app.controller';
|
||||
import { AppService } from './app.service';
|
||||
import { ApiModule } from './api/api.module';
|
||||
import { ElasticsearchModule } from './elasticsearch/elasticsearch.module';
|
||||
import { UploadModule } from './upload/upload.module';
|
||||
import { ChatModule } from './chat/chat.module';
|
||||
import { AuthModule } from './auth/auth.module';
|
||||
import { I18nModule } from './i18n/i18n.module';
|
||||
import { JwtAuthGuard } from './auth/jwt-auth.guard';
|
||||
import { CombinedAuthGuard } from './auth/combined-auth.guard';
|
||||
import { KnowledgeBaseModule } from './knowledge-base/knowledge-base.module';
|
||||
import { ModelConfigModule } from './model-config/model-config.module';
|
||||
import { UserModule } from './user/user.module';
|
||||
import { TikaModule } from './tika/tika.module';
|
||||
import { VisionModule } from './vision/vision.module';
|
||||
import { LibreOfficeModule } from './libreoffice/libreoffice.module';
|
||||
import { Pdf2ImageModule } from './pdf2image/pdf2image.module';
|
||||
import { VisionPipelineModule } from './vision-pipeline/vision-pipeline.module';
|
||||
import { KnowledgeGroupModule } from './knowledge-group/knowledge-group.module';
|
||||
import { SearchHistoryModule } from './search-history/search-history.module';
|
||||
import { NoteModule } from './note/note.module';
|
||||
import { PodcastModule } from './podcasts/podcast.module';
|
||||
import { ImportTaskModule } from './import-task/import-task.module';
|
||||
import { AssessmentModule } from './assessment/assessment.module';
|
||||
import { I18nMiddleware } from './i18n/i18n.middleware';
|
||||
import { TenantMiddleware } from './tenant/tenant.middleware';
|
||||
import { User } from './user/user.entity';
|
||||
import { UserSetting } from './user/user-setting.entity';
|
||||
import { ModelConfig } from './model-config/model-config.entity';
|
||||
import { KnowledgeBase } from './knowledge-base/knowledge-base.entity';
|
||||
import { KnowledgeGroup } from './knowledge-group/knowledge-group.entity';
|
||||
import { SearchHistory } from './search-history/search-history.entity';
|
||||
import { ChatMessage } from './search-history/chat-message.entity';
|
||||
import { Note } from './note/note.entity';
|
||||
import { NoteCategory } from './note/note-category.entity';
|
||||
import { PodcastEpisode } from './podcasts/entities/podcast-episode.entity';
|
||||
import { ImportTask } from './import-task/import-task.entity';
|
||||
import { AssessmentSession } from './assessment/entities/assessment-session.entity';
|
||||
import { AssessmentQuestion } from './assessment/entities/assessment-question.entity';
|
||||
import { AssessmentAnswer } from './assessment/entities/assessment-answer.entity';
|
||||
import { AssessmentTemplate } from './assessment/entities/assessment-template.entity';
|
||||
import { Tenant } from './tenant/tenant.entity';
|
||||
import { TenantSetting } from './tenant/tenant-setting.entity';
|
||||
import { ApiKey } from './auth/entities/api-key.entity';
|
||||
import { TenantMember } from './tenant/tenant-member.entity';
|
||||
import { TenantModule } from './tenant/tenant.module';
|
||||
import { SuperAdminModule } from './super-admin/super-admin.module';
|
||||
import { AdminModule } from './admin/admin.module';
|
||||
import { FeishuModule } from './feishu/feishu.module';
|
||||
import { FeishuBot } from './feishu/entities/feishu-bot.entity';
|
||||
import { FeishuAssessmentSession } from './feishu/entities/feishu-assessment-session.entity';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
ConfigModule.forRoot({
|
||||
isGlobal: true,
|
||||
ignoreEnvFile: false,
|
||||
}),
|
||||
ServeStaticModule.forRoot({
|
||||
rootPath: join(process.cwd(), 'uploads'),
|
||||
serveRoot: '/uploads',
|
||||
}),
|
||||
ScheduleModule.forRoot(),
|
||||
TypeOrmModule.forRootAsync({
|
||||
imports: [ConfigModule],
|
||||
inject: [ConfigService],
|
||||
useFactory: (configService: ConfigService) => ({
|
||||
type: 'better-sqlite3',
|
||||
database: configService.get<string>('DATABASE_PATH'),
|
||||
entities: [
|
||||
User,
|
||||
UserSetting,
|
||||
ModelConfig,
|
||||
KnowledgeBase,
|
||||
KnowledgeGroup,
|
||||
SearchHistory,
|
||||
ChatMessage,
|
||||
Note,
|
||||
NoteCategory,
|
||||
PodcastEpisode,
|
||||
ImportTask,
|
||||
AssessmentSession,
|
||||
AssessmentQuestion,
|
||||
AssessmentAnswer,
|
||||
AssessmentTemplate,
|
||||
Tenant,
|
||||
TenantSetting,
|
||||
TenantMember,
|
||||
ApiKey,
|
||||
FeishuBot,
|
||||
FeishuAssessmentSession,
|
||||
],
|
||||
synchronize: true, // Auto-create database schema. Disable in production.
|
||||
}),
|
||||
}),
|
||||
AuthModule,
|
||||
I18nModule,
|
||||
UserModule,
|
||||
TenantModule,
|
||||
ModelConfigModule,
|
||||
KnowledgeBaseModule,
|
||||
KnowledgeGroupModule,
|
||||
SearchHistoryModule,
|
||||
NoteModule,
|
||||
PodcastModule,
|
||||
TikaModule,
|
||||
VisionModule,
|
||||
LibreOfficeModule,
|
||||
Pdf2ImageModule,
|
||||
VisionPipelineModule,
|
||||
ApiModule,
|
||||
ElasticsearchModule,
|
||||
UploadModule,
|
||||
ChatModule,
|
||||
ImportTaskModule,
|
||||
AssessmentModule,
|
||||
SuperAdminModule,
|
||||
AdminModule,
|
||||
FeishuModule,
|
||||
],
|
||||
controllers: [AppController],
|
||||
providers: [
|
||||
AppService,
|
||||
{
|
||||
provide: APP_GUARD,
|
||||
useClass: CombinedAuthGuard,
|
||||
},
|
||||
],
|
||||
})
|
||||
export class AppModule implements NestModule {
|
||||
configure(consumer: MiddlewareConsumer) {
|
||||
consumer.apply(I18nMiddleware, TenantMiddleware).forRoutes('*');
|
||||
}
|
||||
}
|
||||
// Trigger restart correct
|
||||
Reference in New Issue
Block a user