37 lines
2.3 KiB
JavaScript
37 lines
2.3 KiB
JavaScript
const { DataTypes } = require("sequelize");
|
|
const sequelize = require("../../config/db.config");
|
|
|
|
const Course = sequelize.define("Course", {
|
|
course_id: { type: DataTypes.BIGINT, primaryKey: true, autoIncrement: true, hidden: true, order: 0, filterable: true },
|
|
uuid: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, allowNull: false, unique: true, hidden: true, order: 0, filterable: true },
|
|
title: { type: DataTypes.STRING(255), allowNull: false, hidden: false, order: 2, filterable: true },
|
|
description: { type: DataTypes.TEXT, allowNull: true, hidden: true, order: 0, filterable: true },
|
|
course_code: { type: DataTypes.STRING(50), allowNull: true, unique: true, hidden: false, order: 1, filterable: true },
|
|
order_index: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 0, hidden: false, order: 7, filterable: false },
|
|
level: { type: DataTypes.ENUM("beginner", "intermediate", "advanced"), allowNull: true, hidden: false, order: 3, filterable: true },
|
|
subscription: { type: DataTypes.STRING(50), allowNull: false, defaultValue: "free", hidden: false, order: 4, filterable: true },
|
|
duration_seconds: { type: DataTypes.INTEGER, allowNull: true, defaultValue: 0, hidden: false, order: 8, filterable: false },
|
|
badge_color: { type: DataTypes.STRING(50), allowNull: true, defaultValue: "purple" },
|
|
badge_asset_id: { type: DataTypes.BIGINT, allowNull: true },
|
|
badge_image_url: { type: DataTypes.TEXT, allowNull: true },
|
|
createdBy: { type: DataTypes.BIGINT, allowNull: true },
|
|
updatedBy: { type: DataTypes.BIGINT, allowNull: true },
|
|
deletedBy: { type: DataTypes.BIGINT, allowNull: true },
|
|
}, {
|
|
tableName: "courses",
|
|
timestamps: true,
|
|
paranoid: true,
|
|
});
|
|
|
|
// ── Junction Tables ───────────────────────────────────────────────────────────
|
|
|
|
const CourseProductCategory = sequelize.define("CourseProductCategory", {
|
|
id: { type: DataTypes.BIGINT, primaryKey: true, autoIncrement: true },
|
|
course_id: { type: DataTypes.BIGINT, allowNull: false },
|
|
category_id: { type: DataTypes.BIGINT, allowNull: false },
|
|
}, { tableName: "course_product_categories", timestamps: true });
|
|
|
|
module.exports = {
|
|
Course,
|
|
CourseProductCategory,
|
|
}; |