feat(tags): add tags to test cases (#299)

This commit is contained in:
Eliezer Castro
2025-10-15 19:18:09 -03:00
committed by GitHub
parent 8fe288e875
commit 1ebf1a1572
17 changed files with 567 additions and 1 deletions

View File

@@ -0,0 +1,36 @@
function definecaseTags(sequelize, DataTypes) {
const caseTags = sequelize.define('caseTags', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true,
},
caseId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: 'cases',
key: 'id',
},
onDelete: 'CASCADE',
},
tagId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: 'tags',
key: 'id',
},
onDelete: 'CASCADE',
},
});
caseTags.associate = (models) => {
caseTags.belongsTo(models.Case, { foreignKey: 'caseId', onDelete: 'CASCADE' });
caseTags.belongsTo(models.Tags, { foreignKey: 'tagId', onDelete: 'CASCADE' });
};
return caseTags;
}
export default definecaseTags;

View File

@@ -55,6 +55,11 @@ function defineCase(sequelize, DataTypes) {
Case.belongsToMany(models.Step, {
through: 'caseSteps',
});
Case.belongsToMany(models.Tags, {
through: 'caseTags',
foreignKey: 'caseId',
otherKey: 'tagId',
});
};
return Case;

34
backend/models/tags.js Normal file
View File

@@ -0,0 +1,34 @@
function defineTag(sequelize, DataTypes) {
const Tags = sequelize.define('Tags', {
name: {
type: DataTypes.STRING,
allowNull: false,
},
projectId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: 'projects',
key: 'id',
},
onDelete: 'CASCADE',
},
});
Tags.associate = (models) => {
Tags.belongsTo(models.Project, {
foreignKey: 'projectId',
onDelete: 'CASCADE',
});
Tags.belongsToMany(models.Case, {
through: 'caseTags',
foreignKey: 'tagId',
otherKey: 'caseId',
});
};
return Tags;
}
export default defineTag;