diff --git a/docker-compose.yaml b/docker-compose.yaml index 4d527a5..7f5ce35 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -8,10 +8,6 @@ services: - "8000:8000" env_file: - .env.docker - environment: - DATABASE_URL: ${DATABASE_URL} - REDIS_URL: ${REDIS_HOST} - NODE_ENV: ${NODE_ENV} depends_on: - db - redis @@ -23,10 +19,8 @@ services: image: postgres:17 container_name: my-uni-db restart: unless-stopped - environment: - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - POSTGRES_DB: ${POSTGRES_DB} + env_file: + - .env.docker ports: - "5432:5432" volumes: diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 5853ee7..c871472 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -231,7 +231,7 @@ model ContentManagement { // ========== Site Schema ========== model Website { - id String @id @default(cuid()) + id String @id @default(uuid()) name String slug String @unique data Json diff --git a/src/controllers/content-management/content-management.ts b/src/controllers/content-management/content-management.ts index 6fcef88..d5e174b 100644 --- a/src/controllers/content-management/content-management.ts +++ b/src/controllers/content-management/content-management.ts @@ -140,7 +140,9 @@ export class Contentmanagement { res.status(200).json({ message: "article created !", updatedArticles }); return; - } catch (error) {} + } catch (error) { + next(error.message); + } } // delete blog diff --git a/src/controllers/website/web-builder.ts b/src/controllers/website/web-builder.ts index bc53e93..3e3d3d2 100644 --- a/src/controllers/website/web-builder.ts +++ b/src/controllers/website/web-builder.ts @@ -72,4 +72,65 @@ export class WebBuilder { next(error.message); } } + + // update website + async updateWebsite( + req: Request, + res: Response, + next: NextFunction + ): Promise { + try { + const { id } = req.params; + const filedsToUpdate = req.body.data ?? req.body; + + const isWebsiteExist = await this.prisma.website.findFirst({ + where: { id: id }, + }); + + if (!isWebsiteExist) { + res.status(401).json({ message: "Website not found for update" }); + return; + } + + await this.prisma.website.update({ + where: { id: id }, + data: filedsToUpdate, + }); + + res.status(200).json({ message: "website Updated !" }); + return; + } catch (error) { + next(error.message); + } + } + + // delete website + async deleteWebsite( + req: Request, + res: Response, + next: NextFunction + ): Promise { + try { + const { id } = req.params; + const filedsToUpdate = req.body.data ?? req.body; + + const isWebsiteExist = await this.prisma.website.findFirst({ + where: { id: id }, + }); + + if (!isWebsiteExist) { + res.status(401).json({ message: "Website not found to delete" }); + return; + } + + await this.prisma.website.delete({ + where: { id: id }, + }); + + res.status(200).json({ message: "website Deleted !" }); + return; + } catch (error) { + next(error.message); + } + } } diff --git a/src/routes/website/web-builder.ts b/src/routes/website/web-builder.ts index bbe2fff..c0c7e7f 100644 --- a/src/routes/website/web-builder.ts +++ b/src/routes/website/web-builder.ts @@ -3,7 +3,10 @@ import { check_user_logged_in } from "../../lib/middlewares/check-user-logged-in import { userId } from "../../lib/middlewares/use-user-id"; import { isUserVerified } from "../../lib/middlewares/is-user-verified"; import { verifyInputFields } from "../../lib/middlewares/verify-fileds"; -import { websiteFields } from "../../config/types/web-builder"; +import { + updateWebsiteField, + websiteFields, +} from "../../config/types/web-builder"; import { WebBuilder } from "../../controllers/website/web-builder"; const router = express.Router(); @@ -23,4 +26,15 @@ router .route("/api/v1/get-website/:slug") .get(websiteControllers.getWebsiteData.bind(websiteControllers)); +router + .route("/api/v1/update-website/:id") + .put( + verifyInputFields(updateWebsiteField), + websiteControllers.updateWebsite.bind(websiteControllers) + ); + +router + .route("/api/v1/delete-website/:id") + .delete(websiteControllers.deleteWebsite.bind(websiteControllers)); + export default router;