Skip to content

Commit 9fda33d

Browse files
authored
Merge pull request #1590 from Northeastern-Electric-Racing/#1479-bom-schema
#1479 added bom to schema
2 parents 7da9c13 + e48c3bb commit 9fda33d

2 files changed

Lines changed: 178 additions & 0 deletions

File tree

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
-- CreateEnum
2+
CREATE TYPE "Material_Status" AS ENUM ('RECEIVED', 'ORDERED', 'SHIPPED', 'UNORDERED');
3+
4+
-- CreateTable
5+
CREATE TABLE "Unit" (
6+
"name" TEXT NOT NULL,
7+
8+
CONSTRAINT "Unit_pkey" PRIMARY KEY ("name")
9+
);
10+
11+
-- CreateTable
12+
CREATE TABLE "Assembly" (
13+
"assemblyId" TEXT NOT NULL,
14+
"name" TEXT NOT NULL,
15+
"pdmFileName" TEXT NOT NULL,
16+
"dateDeleted" TIMESTAMP(3),
17+
"userDeletedId" INTEGER,
18+
"dateCreated" TIMESTAMP(3) NOT NULL,
19+
"userCreatedId" INTEGER NOT NULL,
20+
"wbsElementId" INTEGER NOT NULL,
21+
22+
CONSTRAINT "Assembly_pkey" PRIMARY KEY ("assemblyId")
23+
);
24+
25+
-- CreateTable
26+
CREATE TABLE "Material" (
27+
"materialId" TEXT NOT NULL,
28+
"assembyId" TEXT,
29+
"name" TEXT NOT NULL,
30+
"wbsElementId" INTEGER NOT NULL,
31+
"dateDeleted" TIMESTAMP(3),
32+
"userDeletedId" INTEGER,
33+
"dateCreated" TIMESTAMP(3) NOT NULL,
34+
"userCreatedId" INTEGER NOT NULL,
35+
"staus" "Material_Status" NOT NULL,
36+
"materialTypeName" TEXT NOT NULL,
37+
"manufacturerName" TEXT NOT NULL,
38+
"manufacturerPartNumber" TEXT NOT NULL,
39+
"pdmFileName" TEXT,
40+
"quantity" INTEGER NOT NULL,
41+
"unitName" TEXT,
42+
"price" INTEGER NOT NULL,
43+
"subtotal" INTEGER NOT NULL,
44+
"linkUrl" TEXT NOT NULL,
45+
"notes" TEXT NOT NULL,
46+
47+
CONSTRAINT "Material_pkey" PRIMARY KEY ("materialId")
48+
);
49+
50+
-- CreateTable
51+
CREATE TABLE "Material_Type" (
52+
"name" TEXT NOT NULL,
53+
"dateCreated" TIMESTAMP(3) NOT NULL,
54+
"creatorId" INTEGER NOT NULL,
55+
56+
CONSTRAINT "Material_Type_pkey" PRIMARY KEY ("name")
57+
);
58+
59+
-- CreateTable
60+
CREATE TABLE "Manufacturer" (
61+
"name" TEXT NOT NULL,
62+
"dateCreated" TIMESTAMP(3) NOT NULL,
63+
"creatorId" INTEGER NOT NULL,
64+
65+
CONSTRAINT "Manufacturer_pkey" PRIMARY KEY ("name")
66+
);
67+
68+
-- CreateIndex
69+
CREATE UNIQUE INDEX "Assembly_name_key" ON "Assembly"("name");
70+
71+
-- CreateIndex
72+
CREATE UNIQUE INDEX "Material_name_key" ON "Material"("name");
73+
74+
-- AddForeignKey
75+
ALTER TABLE "Assembly" ADD CONSTRAINT "Assembly_userDeletedId_fkey" FOREIGN KEY ("userDeletedId") REFERENCES "User"("userId") ON DELETE SET NULL ON UPDATE CASCADE;
76+
77+
-- AddForeignKey
78+
ALTER TABLE "Assembly" ADD CONSTRAINT "Assembly_userCreatedId_fkey" FOREIGN KEY ("userCreatedId") REFERENCES "User"("userId") ON DELETE RESTRICT ON UPDATE CASCADE;
79+
80+
-- AddForeignKey
81+
ALTER TABLE "Assembly" ADD CONSTRAINT "Assembly_wbsElementId_fkey" FOREIGN KEY ("wbsElementId") REFERENCES "WBS_Element"("wbsElementId") ON DELETE RESTRICT ON UPDATE CASCADE;
82+
83+
-- AddForeignKey
84+
ALTER TABLE "Material" ADD CONSTRAINT "Material_assembyId_fkey" FOREIGN KEY ("assembyId") REFERENCES "Assembly"("assemblyId") ON DELETE SET NULL ON UPDATE CASCADE;
85+
86+
-- AddForeignKey
87+
ALTER TABLE "Material" ADD CONSTRAINT "Material_wbsElementId_fkey" FOREIGN KEY ("wbsElementId") REFERENCES "WBS_Element"("wbsElementId") ON DELETE RESTRICT ON UPDATE CASCADE;
88+
89+
-- AddForeignKey
90+
ALTER TABLE "Material" ADD CONSTRAINT "Material_userDeletedId_fkey" FOREIGN KEY ("userDeletedId") REFERENCES "User"("userId") ON DELETE SET NULL ON UPDATE CASCADE;
91+
92+
-- AddForeignKey
93+
ALTER TABLE "Material" ADD CONSTRAINT "Material_userCreatedId_fkey" FOREIGN KEY ("userCreatedId") REFERENCES "User"("userId") ON DELETE RESTRICT ON UPDATE CASCADE;
94+
95+
-- AddForeignKey
96+
ALTER TABLE "Material" ADD CONSTRAINT "Material_materialTypeName_fkey" FOREIGN KEY ("materialTypeName") REFERENCES "Material_Type"("name") ON DELETE RESTRICT ON UPDATE CASCADE;
97+
98+
-- AddForeignKey
99+
ALTER TABLE "Material" ADD CONSTRAINT "Material_manufacturerName_fkey" FOREIGN KEY ("manufacturerName") REFERENCES "Manufacturer"("name") ON DELETE RESTRICT ON UPDATE CASCADE;
100+
101+
-- AddForeignKey
102+
ALTER TABLE "Material" ADD CONSTRAINT "Material_unitName_fkey" FOREIGN KEY ("unitName") REFERENCES "Unit"("name") ON DELETE SET NULL ON UPDATE CASCADE;

src/backend/src/prisma/schema.prisma

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ model User {
110110
createdLinkTypes LinkType[] @relation(name: "linkTypeCreator")
111111
deletedReceipts Receipt[] @relation(name: "deletedReceipts")
112112
createdReceipts Receipt[] @relation(name: "receiptsCreatedBy")
113+
deletedAssemblies Assembly[] @relation(name: "assemblyDeleter")
114+
createdAssemblies Assembly[] @relation(name: "assemblyCreator")
115+
deletedMaterials Material[] @relation(name: "materialDeleter")
116+
createdMaterials Material[] @relation(name: "materialCreator")
113117
}
114118

115119
model Team {
@@ -252,6 +256,8 @@ model WBS_Element {
252256
tasks Task[]
253257
reimbursementProducts Reimbursement_Product[]
254258
links Link[] @relation(name: "links")
259+
assembies Assembly[]
260+
materials Material[]
255261
256262
@@unique([carNumber, projectNumber, workPackageNumber], name: "wbsNumber")
257263
}
@@ -451,3 +457,73 @@ model User_Secure_Settings {
451457
zipcode String
452458
phoneNumber String @unique
453459
}
460+
461+
enum Material_Status {
462+
RECEIVED
463+
ORDERED
464+
SHIPPED
465+
UNORDERED
466+
}
467+
468+
model Unit {
469+
name String @id
470+
materials Material[]
471+
}
472+
473+
model Assembly {
474+
assemblyId String @id @default(uuid())
475+
name String @unique
476+
pdmFileName String
477+
dateDeleted DateTime?
478+
userDeleted User? @relation(fields: [userDeletedId], references: [userId], name: "assemblyDeleter")
479+
userDeletedId Int?
480+
dateCreated DateTime
481+
userCreated User @relation(fields: [userCreatedId], references: [userId], name: "assemblyCreator")
482+
userCreatedId Int
483+
wbsElement WBS_Element @relation(fields: [wbsElementId], references: [wbsElementId])
484+
wbsElementId Int
485+
materials Material[]
486+
}
487+
488+
model Material {
489+
materialId String @id @default(uuid())
490+
assemby Assembly? @relation(fields: [assembyId], references: [assemblyId])
491+
assembyId String?
492+
name String @unique
493+
wbsElement WBS_Element @relation(fields: [wbsElementId], references: [wbsElementId])
494+
wbsElementId Int
495+
dateDeleted DateTime?
496+
userDeleted User? @relation(fields: [userDeletedId], references: [userId], name: "materialDeleter")
497+
userDeletedId Int?
498+
dateCreated DateTime
499+
userCreated User @relation(fields: [userCreatedId], references: [userId], name: "materialCreator")
500+
userCreatedId Int
501+
staus Material_Status
502+
materialType Material_Type @relation(fields: [materialTypeName], references: [name])
503+
materialTypeName String
504+
manufacturer Manufacturer @relation(fields: [manufacturerName], references: [name])
505+
manufacturerName String
506+
manufacturerPartNumber String
507+
pdmFileName String?
508+
quantity Int
509+
quantityUnit Unit? @relation(fields: [unitName], references: [name])
510+
unitName String?
511+
price Int
512+
subtotal Int
513+
linkUrl String
514+
notes String
515+
}
516+
517+
model Material_Type {
518+
name String @id
519+
dateCreated DateTime
520+
creatorId Int
521+
materials Material[]
522+
}
523+
524+
model Manufacturer {
525+
name String @id
526+
dateCreated DateTime
527+
creatorId Int
528+
materials Material[]
529+
}

0 commit comments

Comments
 (0)