forked from CSI-KJSCE/Travel-policy-
code base
This commit is contained in:
101
backend/prisma/schema.prisma
Normal file
101
backend/prisma/schema.prisma
Normal file
@@ -0,0 +1,101 @@
|
||||
// Generator to create Prisma Client
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
binaryTargets = ["native", "darwin-arm64", "linux-musl-arm64-openssl-3.0.x"]
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
url = env("DATABASE_URL")
|
||||
relationMode = "prisma"
|
||||
}
|
||||
|
||||
enum Institute {
|
||||
KJSIDS
|
||||
SKSC
|
||||
KJSCE
|
||||
SIRC
|
||||
KJSIM
|
||||
SSA
|
||||
KJSCEd
|
||||
DLIS
|
||||
MSSMPA
|
||||
}
|
||||
|
||||
enum ApplicationStatus {
|
||||
REJECTED
|
||||
ACCEPTED
|
||||
PENDING
|
||||
}
|
||||
|
||||
enum Designation {
|
||||
HOD
|
||||
HOI
|
||||
VC
|
||||
ACCOUNTS
|
||||
FACULTY
|
||||
STUDENT
|
||||
}
|
||||
|
||||
model User {
|
||||
profileId String @id @default(uuid())
|
||||
userName String
|
||||
email String @unique @db.Text
|
||||
password String
|
||||
|
||||
institute Institute?
|
||||
department String?
|
||||
designation Designation
|
||||
|
||||
appliedApplications Application[] @relation("AppliedApplications")
|
||||
toValidateApplications Application[] @relation("ToValidateApplications")
|
||||
|
||||
@@index([email])
|
||||
}
|
||||
|
||||
model Application {
|
||||
applicationId String @id @default(uuid())
|
||||
applicantId String
|
||||
applicant User @relation("AppliedApplications", fields: [applicantId], references: [profileId])
|
||||
institute Institute
|
||||
department String
|
||||
|
||||
applicantName String
|
||||
applicationType String
|
||||
formData Json
|
||||
|
||||
formName String
|
||||
resubmission Boolean @default(false)
|
||||
|
||||
facultyValidation ApplicationStatus?
|
||||
hodValidation ApplicationStatus?
|
||||
hoiValidation ApplicationStatus?
|
||||
vcValidation ApplicationStatus?
|
||||
accountsValidation ApplicationStatus?
|
||||
|
||||
rejectionFeedback String?
|
||||
|
||||
totalExpense Float @default(0)
|
||||
|
||||
proofOfTravel Bytes?
|
||||
proofOfAccommodation Bytes?
|
||||
proofOfAttendance Bytes?
|
||||
expenseProof0 Bytes?
|
||||
expenseProof1 Bytes?
|
||||
expenseProof2 Bytes?
|
||||
expenseProof3 Bytes?
|
||||
expenseProof4 Bytes?
|
||||
expenseProof5 Bytes?
|
||||
expenseProof6 Bytes?
|
||||
expenseProof7 Bytes?
|
||||
expenseProof8 Bytes?
|
||||
expenseProof9 Bytes?
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
validators User[] @relation("ToValidateApplications")
|
||||
|
||||
@@index([applicantId])
|
||||
@@index([createdAt])
|
||||
}
|
||||
123
backend/prisma/seed.js
Normal file
123
backend/prisma/seed.js
Normal file
@@ -0,0 +1,123 @@
|
||||
import prisma from "../src/config/prismaConfig.js";
|
||||
|
||||
async function main() {
|
||||
// Common password for all users
|
||||
const commonPassword = "securePassword123";
|
||||
|
||||
// Applicant and Validator data
|
||||
const institutes = [
|
||||
"KJSIDS",
|
||||
"SKSC",
|
||||
"KJSCE",
|
||||
"SIRC",
|
||||
"KJSIM",
|
||||
"SSA",
|
||||
"KJSCEd",
|
||||
"DLIS",
|
||||
"MSSMPA",
|
||||
];
|
||||
const departments = [
|
||||
"Mechanical",
|
||||
"Electronics",
|
||||
"CBE",
|
||||
"Electronics & Telecommunication",
|
||||
"Computer",
|
||||
"Information Technology",
|
||||
"Science & Humanities",
|
||||
"Admin",
|
||||
"Library",
|
||||
];
|
||||
|
||||
// Create VC (single, no department or institute)
|
||||
console.log("Seeding VC...");
|
||||
await prisma.user.create({
|
||||
data: {
|
||||
userName: "Validator_VC",
|
||||
email: "vc@example.com",
|
||||
password: commonPassword,
|
||||
designation: "VC",
|
||||
},
|
||||
});
|
||||
|
||||
for (const institute of institutes) {
|
||||
// Create HOI for each institute
|
||||
console.log(`Seeding HOI for ${institute}...`);
|
||||
const hoiEmail = `hoi.${institute.toLowerCase()}@example.com`;
|
||||
|
||||
await prisma.user.create({
|
||||
data: {
|
||||
userName: `HOI_${institute}`,
|
||||
email: hoiEmail,
|
||||
password: commonPassword,
|
||||
institute,
|
||||
designation: "HOI",
|
||||
},
|
||||
});
|
||||
|
||||
// Create Accounts for each institute
|
||||
console.log(`Seeding Accounts for ${institute}...`);
|
||||
await prisma.user.create({
|
||||
data: {
|
||||
userName: `Validator_Accounts_${institute}`,
|
||||
email: `accounts.${institute.toLowerCase()}@example.com`,
|
||||
password: commonPassword,
|
||||
institute,
|
||||
designation: "ACCOUNTS",
|
||||
},
|
||||
});
|
||||
|
||||
for (const department of departments) {
|
||||
// Create HOD for each department of each institute
|
||||
console.log(`Seeding HOD for ${department} in ${institute}...`);
|
||||
const hodEmail = `hod.${department.toLowerCase()}.${institute.toLowerCase()}@example.com`;
|
||||
|
||||
await prisma.user.create({
|
||||
data: {
|
||||
userName: `HOD_${department}_${institute}`,
|
||||
email: hodEmail,
|
||||
password: commonPassword,
|
||||
institute,
|
||||
department,
|
||||
designation: "HOD",
|
||||
},
|
||||
});
|
||||
|
||||
// Create Faculty for each department of each institute
|
||||
console.log(`Seeding Faculty for ${department} in ${institute}...`);
|
||||
const facultyEmail = `faculty.${department.toLowerCase()}.${institute.toLowerCase()}@example.com`;
|
||||
|
||||
await prisma.user.create({
|
||||
data: {
|
||||
userName: `Faculty_${department}_${institute}`,
|
||||
email: facultyEmail,
|
||||
password: commonPassword,
|
||||
institute,
|
||||
department,
|
||||
designation: "FACULTY",
|
||||
},
|
||||
});
|
||||
// Create Student for each department of each institute
|
||||
console.log(`Seeding Student for ${department} in ${institute}...`);
|
||||
const studentEmail = `student.${department.toLowerCase()}.${institute.toLowerCase()}@example.com`;
|
||||
|
||||
await prisma.user.create({
|
||||
data: {
|
||||
userName: `Student_${department}_${institute}`,
|
||||
email: studentEmail,
|
||||
password: commonPassword,
|
||||
institute,
|
||||
department,
|
||||
designation: "STUDENT",
|
||||
},
|
||||
});
|
||||
}
|
||||
console.log("Seeding completed!");
|
||||
}
|
||||
}
|
||||
|
||||
main().catch((e) => {
|
||||
console.error(e);
|
||||
process.exit(1);
|
||||
}).finally(async () => {
|
||||
await prisma.$disconnect();
|
||||
});
|
||||
Reference in New Issue
Block a user