From 554e74d0d2b266cc34d19d5058f5bd58eb2a8d65 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kratochv=C3=ADl?= <xkrato10@fi.muni.cz>
Date: Fri, 17 Jun 2022 23:28:41 +0200
Subject: [PATCH] feat: director CRUD - update and remove methods

---
 .../src/api/directors/directors.controller.ts |  5 +--
 .../src/api/directors/directors.service.ts    | 33 +++++++++++++++++--
 2 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/backend/src/api/directors/directors.controller.ts b/backend/src/api/directors/directors.controller.ts
index b95aac4..26b0233 100644
--- a/backend/src/api/directors/directors.controller.ts
+++ b/backend/src/api/directors/directors.controller.ts
@@ -31,10 +31,7 @@ export class DirectorsController {
   }
 
   @Patch(':id')
-  async update(
-  @Param('id') id: string,
-    @Body() updateDirectorDto: UpdateDirectorDto,
-  ) {
+  async update(@Param('id') id: string, @Body() updateDirectorDto: UpdateDirectorDto) {
     return await this.directorsService.update(id, updateDirectorDto);
   }
 
diff --git a/backend/src/api/directors/directors.service.ts b/backend/src/api/directors/directors.service.ts
index 5def117..5d0c16c 100644
--- a/backend/src/api/directors/directors.service.ts
+++ b/backend/src/api/directors/directors.service.ts
@@ -26,10 +26,37 @@ export class DirectorsService {
   }
 
   update(id: string, updateDirectorDto: UpdateDirectorDto) {
-    return `This action updates a #${id} director`;
+    return this.prisma.director.update({
+      where: {
+        id,
+      },
+      data: {
+        ...updateDirectorDto,
+      },
+    });
   }
 
-  remove(id: string) {
-    return `This action removes a #${id} director`;
+  async remove(id: string) {
+    const directorMovie = await this.prisma.movie.findFirst({
+      where: {
+        directorId: id,
+      },
+      select: {
+        id: true
+      }
+    });
+
+    if (directorMovie === undefined) {
+      return this.prisma.director.update({
+        where: {
+          id,
+        },
+        data: {
+          deletedAt: new Date(),
+        },
+      });
+    }
+
+    return this.findOne(id);
   }
 }
-- 
GitLab