mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
course,tasklist,task and completed validation
Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
+21
-1
@@ -90,6 +90,21 @@ const TaskRequirement = sequelize.define('TaskRequirement', {
|
||||
timestamps: true,
|
||||
});
|
||||
|
||||
// ─── Junction: Task ↔ Task (explicit prerequisite graph) ──────────────────────
|
||||
const TaskPrerequisite = sequelize.define('TaskPrerequisite', {
|
||||
id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true },
|
||||
task_id: { type: DataTypes.UUID, allowNull: false, references: { model: 'tasks', key: 'task_id' }, onDelete: 'CASCADE', },
|
||||
prerequisite_task_id: { type: DataTypes.UUID, allowNull: false, references: { model: 'tasks', key: 'task_id' }, onDelete: 'CASCADE', },
|
||||
}, {
|
||||
tableName: 'task_prerequisites',
|
||||
timestamps: true,
|
||||
indexes: [
|
||||
{ unique: true, fields: ['task_id', 'prerequisite_task_id'], name: 'uq_task_prerequisite' },
|
||||
{ fields: ['task_id'], name: 'idx_tp_task_id' },
|
||||
{ fields: ['prerequisite_task_id'], name: 'idx_tp_prerequisite_task_id' },
|
||||
],
|
||||
});
|
||||
|
||||
TaskList.hasMany(Task, { foreignKey: 'task_list_id', as: 'tasks' });
|
||||
Task.belongsTo(TaskList, { foreignKey: 'task_list_id', as: 'taskList' });
|
||||
Task.hasMany(TaskRequirement, { foreignKey: 'task_id', as: 'requirements' });
|
||||
@@ -99,4 +114,9 @@ TaskRequirement.belongsTo(Task, { foreignKey: 'task_id', as: 'task' });
|
||||
TaskList.belongsToMany(mdl_UserGroups, { through: TaskListGroup, foreignKey: 'task_list_id', otherKey: 'group_id', as: 'groups', });
|
||||
mdl_UserGroups.belongsToMany(TaskList, { through: TaskListGroup, foreignKey: 'group_id', otherKey: 'task_list_id', as: 'taskLists', });
|
||||
|
||||
module.exports = { Task, TaskList, TaskRequirement, TaskListGroup, mdl_UserGroups };
|
||||
// Task ↔ Task (self-referential many-to-many through TaskPrerequisite)
|
||||
// 'prerequisites' — tasks THIS task depends on. 'dependents' — tasks that depend on THIS task.
|
||||
Task.belongsToMany(Task, { through: TaskPrerequisite, foreignKey: 'task_id', otherKey: 'prerequisite_task_id', as: 'prerequisites' });
|
||||
Task.belongsToMany(Task, { through: TaskPrerequisite, foreignKey: 'prerequisite_task_id', otherKey: 'task_id', as: 'dependents' });
|
||||
|
||||
module.exports = { Task, TaskList, TaskRequirement, TaskListGroup, TaskPrerequisite, mdl_UserGroups };
|
||||
Reference in New Issue
Block a user