40031-vm/backend/src/db/models/vendor_risk_assessments.js
2026-05-18 09:57:01 +00:00

224 lines
2.9 KiB
JavaScript

const config = require('../../config');
const providers = config.providers;
const crypto = require('crypto');
const bcrypt = require('bcrypt');
const moment = require('moment');
module.exports = function(sequelize, DataTypes) {
const vendor_risk_assessments = sequelize.define(
'vendor_risk_assessments',
{
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
assessment_status: {
type: DataTypes.ENUM,
values: [
"draft",
"in_review",
"approved",
"rejected",
"needs_changes"
],
},
confidentiality_score: {
type: DataTypes.INTEGER,
},
security_score: {
type: DataTypes.INTEGER,
},
integration_readiness_score: {
type: DataTypes.INTEGER,
},
legal_specific_risk_score: {
type: DataTypes.INTEGER,
},
pricing_score: {
type: DataTypes.INTEGER,
},
support_score: {
type: DataTypes.INTEGER,
},
compliance_score: {
type: DataTypes.INTEGER,
},
overall_score: {
type: DataTypes.INTEGER,
},
findings: {
type: DataTypes.TEXT,
},
mitigations: {
type: DataTypes.TEXT,
},
started_at: {
type: DataTypes.DATE,
},
completed_at: {
type: DataTypes.DATE,
},
importHash: {
type: DataTypes.STRING(255),
allowNull: true,
unique: true,
},
},
{
timestamps: true,
paranoid: true,
freezeTableName: true,
},
);
vendor_risk_assessments.associate = (db) => {
/// loop through entities and it's fields, and if ref === current e[name] and create relation has many on parent entity
//end loop
db.vendor_risk_assessments.belongsTo(db.vendors, {
as: 'vendor',
foreignKey: {
name: 'vendorId',
},
constraints: false,
});
db.vendor_risk_assessments.belongsTo(db.ai_tools, {
as: 'tool',
foreignKey: {
name: 'toolId',
},
constraints: false,
});
db.vendor_risk_assessments.belongsTo(db.users, {
as: 'owner',
foreignKey: {
name: 'ownerId',
},
constraints: false,
});
db.vendor_risk_assessments.hasMany(db.file, {
as: 'evidence_files',
foreignKey: 'belongsToId',
constraints: false,
scope: {
belongsTo: db.vendor_risk_assessments.getTableName(),
belongsToColumn: 'evidence_files',
},
});
db.vendor_risk_assessments.belongsTo(db.users, {
as: 'createdBy',
});
db.vendor_risk_assessments.belongsTo(db.users, {
as: 'updatedBy',
});
};
return vendor_risk_assessments;
};