Skip to content

Commit a44cf70

Browse files
committed
Fixed migrations
1 parent 022ae1f commit a44cf70

File tree

23 files changed

+542
-87
lines changed

23 files changed

+542
-87
lines changed

app/api/contractor/projects/[projectId]/materials/route.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ type ProjectProductWithProduct = {
3636
price: number;
3737
mainImage: string;
3838
};
39-
};
39+
}
4040

4141
// GET handler: Fetch all materials for a project
4242
export async function GET(
@@ -62,12 +62,19 @@ export async function GET(
6262
title: true,
6363
price: true,
6464
mainImage: true,
65+
description: true,
6566
},
6667
},
6768
},
6869
});
6970

70-
return NextResponse.json(materials);
71+
// Transform the data to include name property
72+
const transformedMaterials = materials.map((material: ProjectProductWithProduct) => ({
73+
...material,
74+
name: material.product.title,
75+
}));
76+
77+
return NextResponse.json(transformedMaterials);
7178
} catch (error) {
7279
console.error("Error fetching materials:", error);
7380
return new NextResponse("Internal Server Error", { status: 500 });
@@ -118,12 +125,19 @@ export async function POST(
118125
title: true,
119126
price: true,
120127
mainImage: true,
128+
description: true,
121129
},
122130
},
123131
},
124132
});
125133

126-
return NextResponse.json(material);
134+
// Add name property to response
135+
const transformedMaterial = {
136+
...material,
137+
name: material.product.title,
138+
};
139+
140+
return NextResponse.json(transformedMaterial);
127141
} catch (error) {
128142
console.error("Error creating material:", error);
129143
return new NextResponse("Internal Server Error", { status: 500 });

app/api/contractor/projects/route.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { getServerSession } from "next-auth";
22
import { NextResponse } from "next/server";
3-
import prisma from "@/utils/db";
3+
import prisma from "@/server/utills/db";
44

55
export async function GET() {
66
try {
@@ -18,7 +18,7 @@ export async function GET() {
1818
return new NextResponse("Unauthorized", { status: 401 });
1919
}
2020

21-
const projects = await prisma.project.findMany({
21+
const projects = await prisma.Project.findMany({
2222
where: { contractorId: user.id },
2323
orderBy: { createdAt: "desc" },
2424
});
@@ -57,7 +57,7 @@ export async function POST(req: Request) {
5757
}
5858

5959
console.log("[PROJECTS_POST] Creating project with:", { name, contractorId: user.id });
60-
const project = await prisma.project.create({
60+
const project = await prisma.Project.create({
6161
data: {
6262
name,
6363
contractorId: user.id,

app/projects/[projectId]/materials/page.tsx

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ interface Material {
2424
quantity: number;
2525
unit: string;
2626
productId: string;
27+
product?: {
28+
id: string;
29+
title: string;
30+
description?: string;
31+
price: number;
32+
mainImage: string;
33+
};
2734
}
2835

2936
interface Product {
@@ -58,7 +65,14 @@ export default function MaterialsPage() {
5865
throw new Error("Failed to fetch materials");
5966
}
6067
const materialsData = await materialsResponse.json();
61-
setMaterials(materialsData);
68+
69+
// Ensure each material has a name property, using product.title as fallback
70+
const processedMaterials = materialsData.map((material: any) => ({
71+
...material,
72+
name: material.name || (material.product?.title || "Unknown Material")
73+
}));
74+
75+
setMaterials(processedMaterials);
6276

6377
// Fetch available products catalog
6478
const productsResponse = await fetch('/api/products');
@@ -99,7 +113,14 @@ export default function MaterialsPage() {
99113

100114
// Update local state with new material
101115
const newMaterial = await response.json();
102-
setMaterials([...materials, newMaterial]);
116+
117+
// Make sure the material has a name property derived from the product if needed
118+
const materialWithName = {
119+
...newMaterial,
120+
name: newMaterial.name || (newMaterial.product?.title || "Unknown Material")
121+
};
122+
123+
setMaterials([...materials, materialWithName]);
103124

104125
// Update project item count
105126
await fetch(`/api/contractor/projects/${params.projectId}/recalculate`, {
Lines changed: 32 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,37 @@
11
-- CreateTable
2-
CREATE TABLE `Product` (
2+
CREATE TABLE `User` (
33
`id` VARCHAR(191) NOT NULL,
4-
`slug` VARCHAR(191) NOT NULL,
5-
`title` VARCHAR(191) NOT NULL,
6-
`mainImage` VARCHAR(191) NOT NULL,
7-
`price` INTEGER NOT NULL DEFAULT 0,
8-
`rating` INTEGER NOT NULL DEFAULT 0,
9-
`description` VARCHAR(191) NOT NULL,
10-
`manufacturer` VARCHAR(191) NOT NULL,
11-
`inStock` INTEGER NOT NULL DEFAULT 1,
12-
`categoryId` VARCHAR(191) NOT NULL,
4+
`email` VARCHAR(191) NOT NULL,
5+
`password` VARCHAR(191) NULL,
6+
`role` VARCHAR(191) NULL DEFAULT 'user',
137

14-
UNIQUE INDEX `Product_slug_key`(`slug`),
8+
UNIQUE INDEX `User_email_key`(`email`),
159
PRIMARY KEY (`id`)
1610
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
1711

1812
-- CreateTable
19-
CREATE TABLE `Image` (
20-
`imageID` VARCHAR(191) NOT NULL,
21-
`productID` VARCHAR(191) NOT NULL,
22-
`image` VARCHAR(191) NOT NULL,
13+
CREATE TABLE `Category` (
14+
`id` VARCHAR(191) NOT NULL,
15+
`name` VARCHAR(191) NOT NULL,
2316

24-
PRIMARY KEY (`imageID`)
17+
UNIQUE INDEX `Category_name_key`(`name`),
18+
PRIMARY KEY (`id`)
2519
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2620

2721
-- CreateTable
28-
CREATE TABLE `User` (
22+
CREATE TABLE `Product` (
2923
`id` VARCHAR(191) NOT NULL,
30-
`email` VARCHAR(191) NOT NULL,
31-
`password` VARCHAR(191) NULL,
32-
`role` VARCHAR(191) NULL DEFAULT 'user',
24+
`title` VARCHAR(191) NOT NULL,
25+
`price` INTEGER NOT NULL,
26+
`rating` INTEGER NOT NULL DEFAULT 0,
27+
`description` TEXT NOT NULL,
28+
`mainImage` VARCHAR(191) NULL,
29+
`slug` VARCHAR(191) NOT NULL,
30+
`manufacturer` VARCHAR(191) NULL,
31+
`inStock` INTEGER NOT NULL DEFAULT 0,
32+
`categoryId` VARCHAR(191) NOT NULL,
3333

34-
UNIQUE INDEX `User_email_key`(`email`),
34+
UNIQUE INDEX `Product_slug_key`(`slug`),
3535
PRIMARY KEY (`id`)
3636
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3737

@@ -66,20 +66,11 @@ CREATE TABLE `customer_order_product` (
6666
PRIMARY KEY (`id`)
6767
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
6868

69-
-- CreateTable
70-
CREATE TABLE `Category` (
71-
`id` VARCHAR(191) NOT NULL,
72-
`name` VARCHAR(191) NOT NULL,
73-
74-
UNIQUE INDEX `Category_name_key`(`name`),
75-
PRIMARY KEY (`id`)
76-
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
77-
7869
-- CreateTable
7970
CREATE TABLE `Wishlist` (
8071
`id` VARCHAR(191) NOT NULL,
81-
`productId` VARCHAR(191) NOT NULL,
8272
`userId` VARCHAR(191) NOT NULL,
73+
`productId` VARCHAR(191) NOT NULL,
8374

8475
PRIMARY KEY (`id`)
8576
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -96,13 +87,11 @@ CREATE TABLE `Project` (
9687
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
9788

9889
-- CreateTable
99-
CREATE TABLE `Material` (
90+
CREATE TABLE `ProjectProduct` (
10091
`id` VARCHAR(191) NOT NULL,
101-
`name` VARCHAR(191) NOT NULL,
102-
`description` VARCHAR(191) NULL,
10392
`quantity` INTEGER NOT NULL,
104-
`unit` VARCHAR(191) NOT NULL,
10593
`projectId` VARCHAR(191) NOT NULL,
94+
`productId` VARCHAR(191) NOT NULL,
10695

10796
PRIMARY KEY (`id`)
10897
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -111,19 +100,23 @@ CREATE TABLE `Material` (
111100
ALTER TABLE `Product` ADD CONSTRAINT `Product_categoryId_fkey` FOREIGN KEY (`categoryId`) REFERENCES `Category`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
112101

113102
-- AddForeignKey
114-
ALTER TABLE `customer_order_product` ADD CONSTRAINT `customer_order_product_customerOrderId_fkey` FOREIGN KEY (`customerOrderId`) REFERENCES `Customer_order`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
103+
ALTER TABLE `customer_order_product` ADD CONSTRAINT `customer_order_product_customerOrderId_fkey` FOREIGN KEY (`customerOrderId`) REFERENCES `Customer_order`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
115104

116105
-- AddForeignKey
117106
ALTER TABLE `customer_order_product` ADD CONSTRAINT `customer_order_product_productId_fkey` FOREIGN KEY (`productId`) REFERENCES `Product`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
118107

108+
-- AddForeignKey
109+
ALTER TABLE `Wishlist` ADD CONSTRAINT `Wishlist_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
110+
119111
-- AddForeignKey
120112
ALTER TABLE `Wishlist` ADD CONSTRAINT `Wishlist_productId_fkey` FOREIGN KEY (`productId`) REFERENCES `Product`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
121113

122114
-- AddForeignKey
123-
ALTER TABLE `Wishlist` ADD CONSTRAINT `Wishlist_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
115+
ALTER TABLE `Project` ADD CONSTRAINT `Project_contractorId_fkey` FOREIGN KEY (`contractorId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
124116

125117
-- AddForeignKey
126-
ALTER TABLE `Project` ADD CONSTRAINT `Project_contractorId_fkey` FOREIGN KEY (`contractorId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
118+
ALTER TABLE `ProjectProduct` ADD CONSTRAINT `ProjectProduct_projectId_fkey` FOREIGN KEY (`projectId`) REFERENCES `Project`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
127119

128120
-- AddForeignKey
129-
ALTER TABLE `Material` ADD CONSTRAINT `Material_projectId_fkey` FOREIGN KEY (`projectId`) REFERENCES `Project`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
121+
ALTER TABLE `ProjectProduct` ADD CONSTRAINT `ProjectProduct_productId_fkey` FOREIGN KEY (`productId`) REFERENCES `Product`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
122+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
-- CreateTable
2+
CREATE TABLE `Product` (
3+
`id` VARCHAR(191) NOT NULL,
4+
`slug` VARCHAR(191) NOT NULL,
5+
`title` VARCHAR(191) NOT NULL,
6+
`mainImage` VARCHAR(191) NOT NULL,
7+
`price` INTEGER NOT NULL DEFAULT 0,
8+
`rating` INTEGER NOT NULL DEFAULT 0,
9+
`description` VARCHAR(191) NOT NULL,
10+
`manufacturer` VARCHAR(191) NOT NULL,
11+
`category` VARCHAR(191) NOT NULL,
12+
`inStock` INTEGER NOT NULL DEFAULT 1,
13+
14+
UNIQUE INDEX `Product_slug_key`(`slug`),
15+
PRIMARY KEY (`id`)
16+
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
17+
18+
-- CreateTable
19+
CREATE TABLE `Image` (
20+
`imageID` VARCHAR(191) NOT NULL,
21+
`productID` VARCHAR(191) NOT NULL,
22+
`image` VARCHAR(191) NOT NULL,
23+
24+
PRIMARY KEY (`imageID`)
25+
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
26+
27+
-- CreateTable
28+
CREATE TABLE `User` (
29+
`id` VARCHAR(191) NOT NULL,
30+
`email` VARCHAR(191) NOT NULL,
31+
`password` VARCHAR(191) NULL,
32+
33+
UNIQUE INDEX `User_email_key`(`email`),
34+
PRIMARY KEY (`id`)
35+
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-- CreateTable
2+
CREATE TABLE `Order` (
3+
`id` VARCHAR(191) NOT NULL,
4+
`name` VARCHAR(191) NOT NULL,
5+
`lastname` VARCHAR(191) NOT NULL,
6+
`phone` VARCHAR(191) NOT NULL,
7+
`email` VARCHAR(191) NOT NULL,
8+
`company` VARCHAR(191) NULL,
9+
`adress` VARCHAR(191) NOT NULL,
10+
`apartment` VARCHAR(191) NULL,
11+
`city` VARCHAR(191) NOT NULL,
12+
`country` VARCHAR(191) NOT NULL,
13+
`postalCode` INTEGER NOT NULL,
14+
15+
UNIQUE INDEX `Order_email_key`(`email`),
16+
PRIMARY KEY (`id`)
17+
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-- AlterTable
2+
ALTER TABLE `user` ADD COLUMN `role` VARCHAR(191) NULL DEFAULT 'user';
3+
4+
-- CreateTable
5+
CREATE TABLE `Category` (
6+
`id` VARCHAR(191) NOT NULL,
7+
`name` VARCHAR(191) NOT NULL,
8+
9+
PRIMARY KEY (`id`)
10+
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
Warnings:
3+
4+
- You are about to drop the column `category` on the `product` table. All the data in the column will be lost.
5+
- Added the required column `categoryId` to the `Product` table without a default value. This is not possible if the table is not empty.
6+
7+
*/
8+
-- AlterTable
9+
ALTER TABLE `product` DROP COLUMN `category`,
10+
ADD COLUMN `categoryId` VARCHAR(191) NOT NULL;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
-- AddForeignKey
2+
ALTER TABLE `Product` ADD CONSTRAINT `Product_categoryId_fkey` FOREIGN KEY (`categoryId`) REFERENCES `Category`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
Warnings:
3+
4+
- You are about to drop the `order` table. If the table is not empty, all the data it contains will be lost.
5+
6+
*/
7+
-- DropTable
8+
DROP TABLE `order`;
9+
10+
-- CreateTable
11+
CREATE TABLE `Customer_order` (
12+
`id` VARCHAR(191) NOT NULL,
13+
`name` VARCHAR(191) NOT NULL,
14+
`lastname` VARCHAR(191) NOT NULL,
15+
`phone` VARCHAR(191) NOT NULL,
16+
`email` VARCHAR(191) NOT NULL,
17+
`company` VARCHAR(191) NOT NULL,
18+
`adress` VARCHAR(191) NOT NULL,
19+
`apartment` VARCHAR(191) NOT NULL,
20+
`postalCode` VARCHAR(191) NOT NULL,
21+
`dateTime` DATETIME(3) NULL DEFAULT CURRENT_TIMESTAMP(3),
22+
`status` VARCHAR(191) NOT NULL,
23+
`total` INTEGER NOT NULL,
24+
25+
PRIMARY KEY (`id`)
26+
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

0 commit comments

Comments
 (0)