30830/backend/src/db/seeders/20231127130745-sample-data.js
2025-04-19 01:16:12 +00:00

246 lines
5.6 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Analyses = db.analyses;
const Documents = db.documents;
const Notifications = db.notifications;
const AnalysesData = [
{
// type code here for "relation_one" field
summary: 'Summary of Contract Agreement 2023',
key_points: 'Key obligations and terms',
comments: 'Suggestions for improvement',
completed_at: new Date('2023-10-01T12:00:00Z'),
},
{
// type code here for "relation_one" field
summary: 'Summary of Service Terms',
key_points: 'Important clauses and conditions',
comments: 'Legal clarifications needed',
completed_at: new Date('2023-10-02T13:30:00Z'),
},
{
// type code here for "relation_one" field
summary: 'Summary of NDA Template',
key_points: 'Confidentiality obligations',
comments: 'Review for legal compliance',
completed_at: new Date('2023-10-03T11:15:00Z'),
},
];
const DocumentsData = [
{
title: 'Contract Agreement 2023',
// type code here for "files" field
// type code here for "relation_one" field
uploaded_at: new Date('2023-10-01T10:00:00Z'),
},
{
title: 'Service Terms Document',
// type code here for "files" field
// type code here for "relation_one" field
uploaded_at: new Date('2023-10-02T11:30:00Z'),
},
{
title: 'NDA Template',
// type code here for "files" field
// type code here for "relation_one" field
uploaded_at: new Date('2023-10-03T09:15:00Z'),
},
];
const NotificationsData = [
{
// type code here for "relation_one" field
message: 'Your document analysis is complete.',
read: true,
sent_at: new Date('2023-10-01T12:05:00Z'),
},
{
// type code here for "relation_one" field
message: 'New document uploaded successfully.',
read: true,
sent_at: new Date('2023-10-02T11:35:00Z'),
},
{
// type code here for "relation_one" field
message: 'Analysis report is ready for download.',
read: true,
sent_at: new Date('2023-10-03T11:20:00Z'),
},
];
// Similar logic for "relation_many"
async function associateAnalysisWithDocument() {
const relatedDocument0 = await Documents.findOne({
offset: Math.floor(Math.random() * (await Documents.count())),
});
const Analysis0 = await Analyses.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Analysis0?.setDocument) {
await Analysis0.setDocument(relatedDocument0);
}
const relatedDocument1 = await Documents.findOne({
offset: Math.floor(Math.random() * (await Documents.count())),
});
const Analysis1 = await Analyses.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Analysis1?.setDocument) {
await Analysis1.setDocument(relatedDocument1);
}
const relatedDocument2 = await Documents.findOne({
offset: Math.floor(Math.random() * (await Documents.count())),
});
const Analysis2 = await Analyses.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Analysis2?.setDocument) {
await Analysis2.setDocument(relatedDocument2);
}
}
async function associateDocumentWithUploaded_by() {
const relatedUploaded_by0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Document0 = await Documents.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Document0?.setUploaded_by) {
await Document0.setUploaded_by(relatedUploaded_by0);
}
const relatedUploaded_by1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Document1 = await Documents.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Document1?.setUploaded_by) {
await Document1.setUploaded_by(relatedUploaded_by1);
}
const relatedUploaded_by2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Document2 = await Documents.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Document2?.setUploaded_by) {
await Document2.setUploaded_by(relatedUploaded_by2);
}
}
async function associateNotificationWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Notification0 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Notification0?.setUser) {
await Notification0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Notification1 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Notification1?.setUser) {
await Notification1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Notification2 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Notification2?.setUser) {
await Notification2.setUser(relatedUser2);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await Analyses.bulkCreate(AnalysesData);
await Documents.bulkCreate(DocumentsData);
await Notifications.bulkCreate(NotificationsData);
await Promise.all([
// Similar logic for "relation_many"
await associateAnalysisWithDocument(),
await associateDocumentWithUploaded_by(),
await associateNotificationWithUser(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('analyses', null, {});
await queryInterface.bulkDelete('documents', null, {});
await queryInterface.bulkDelete('notifications', null, {});
},
};