File

apps/recallassess/recallassess-api/src/api/admin/course-module/config/course-module-config.service.ts

Extends

ModuleConfigBase

Index

Methods

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,
    });
  }
}

results matching ""

    No results matching ""