code base

This commit is contained in:
ANUJ7MADKE
2025-07-13 22:49:55 +05:30
parent d4f21c9a99
commit cd43f0e98e
96 changed files with 17779 additions and 0 deletions

View 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
View 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();
});