apps/recallassess/recallassess-api/src/api/admin/course-module/config/course-module-config.service.ts
ModuleConfigBase
Methods |
| getConfiguration |
getConfiguration()
|
|
Returns :
ModuleConfig
|
import { ColumnConfig, ColumnType } from "@bish-nest/core/app-config/column-config.class";
import { MediaConfig } from "@bish-nest/core/app-config/media-config.class";
import { ModuleConfig } from "@bish-nest/core/app-config/module-config.class";
import { ModuleConfigBase } from "@bish-nest/core/app-config/module-config-base.class";
import { Injectable } from "@nestjs/common";
import { MediaName, MediaType } from "@prisma/client";
import { CourseModuleAddDto } from "../dto/course-module-add.dto";
import { CourseModuleDetailDto } from "../dto/course-module-detail.dto";
import { CourseModuleListDto } from "../dto/course-module-list.dto";
import { CourseModuleListSimpleDto } from "../dto/course-module-list-simple.dto";
import { CourseModuleSaveDto } from "../dto/course-module-save.dto";
import { courseModuleLinks } from "./course-module-links-config.service";
@Injectable()
export class CourseModuleConfig extends ModuleConfigBase {
getConfiguration(): ModuleConfig {
const columns: ColumnConfig[] = [
new ColumnConfig({ name: "id", type: ColumnType.Integer }),
new ColumnConfig({ name: "course_module_code" }),
new ColumnConfig({ name: "title" }),
new ColumnConfig({ name: "description" }),
new ColumnConfig({ name: "short_description" }),
new ColumnConfig({ name: "sort_order", type: ColumnType.Integer }),
new ColumnConfig({ name: "is_published", type: ColumnType.Boolean }),
new ColumnConfig({ name: "exclude_from_bat", type: ColumnType.Boolean }),
new ColumnConfig({ name: "flag", type: ColumnType.Boolean }),
new ColumnConfig({ name: "created_at", type: ColumnType.DateTime }),
new ColumnConfig({ name: "updated_at", type: ColumnType.DateTime }),
];
const mediaArr: MediaConfig[] = [
new MediaConfig({
name: MediaName.COURSE_MODULE__IMAGE,
mediaRelationName: "courseModulePhotos",
mediaRelationObj: {
courseModulePhotos: {
where: { media_type: MediaType.IMAGE, media_name: MediaName.COURSE_MODULE__IMAGE },
},
},
mediaRelationFromMediaTable: "courseModule",
}),
];
// Include all Prisma-backed columns in keyword search.
// For string columns, keyword search uses "contains" with case-insensitive mode.
// Numeric/boolean/datetime columns are handled by BNestDataUtil (equals/range where appropriate).
const keywordSearchCols: string[] = [
"id",
"course_module_code",
"title",
"description",
"short_description",
"sort_order",
"is_published",
"exclude_from_bat",
"flag",
"created_at",
"updated_at",
];
return new ModuleConfig({
name: "course-module",
columns,
keywordSearchCols,
mediaArr,
links: courseModuleLinks,
relationObjToIncludeForList: {},
relationObjToIncludeForDetail: {
userCreatedBy: true,
userUpdatedBy: true,
},
listDto: CourseModuleListDto,
detailDto: CourseModuleDetailDto,
addDto: CourseModuleAddDto,
saveDto: CourseModuleSaveDto,
simpleDto: CourseModuleListSimpleDto,
});
}
}