From 17929d0ca0ffe4aca50e768e74e392faf127efb2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Gargalovi=C4=8D?= <xgargal@fi.muni.cz>
Date: Tue, 11 Apr 2023 12:13:33 +0200
Subject: [PATCH] changed id to Long and added delete and update

---
 .../common/DomainObject.java                  |  6 +++--
 .../common/DomainService.java                 | 25 ++++++++++++++++++-
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/common/DomainObject.java b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/common/DomainObject.java
index 8520e8aa..f56b95e0 100644
--- a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/common/DomainObject.java
+++ b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/common/DomainObject.java
@@ -1,5 +1,7 @@
 package org.fuseri.modulelanguageschool.common;
 
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
 import jakarta.persistence.Id;
 import jakarta.persistence.MappedSuperclass;
 import lombok.Getter;
@@ -13,6 +15,6 @@ import java.util.UUID;
 public abstract class DomainObject {
 
     @Id
-    private String id = UUID.randomUUID().toString();
-}
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;}
 
diff --git a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/common/DomainService.java b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/common/DomainService.java
index 706071fb..eb30e2e3 100644
--- a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/common/DomainService.java
+++ b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/common/DomainService.java
@@ -1,5 +1,6 @@
 package org.fuseri.modulelanguageschool.common;
 
+import jakarta.persistence.EntityNotFoundException;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
@@ -10,7 +11,7 @@ public abstract class DomainService<T extends DomainObject> {
 
     public static final int DEFAULT_PAGE_SIZE = 10;
 
-    public abstract JpaRepository<T, String> getRepository();
+    public abstract JpaRepository<T, Long> getRepository();
 
     @Transactional
     public T create(T entity) {
@@ -26,4 +27,26 @@ public abstract class DomainService<T extends DomainObject> {
     public Page<T> findAll(int page) {
         return getRepository().findAll(PageRequest.of(page, DEFAULT_PAGE_SIZE));
     }
+
+    /**
+     * Delete an entity with specified id
+     * @param id id of the entity to delete
+     */
+    public void delete(long id) {
+        getRepository().deleteById(id);
+    }
+
+
+    /**
+     * Update an entity
+     *
+     * @param entity the entity to update
+     * @return the updated entity
+     */
+    public T update(T entity) {
+        if (!getRepository().existsById(entity.getId())) {
+            throw new EntityNotFoundException("Entity with id " + entity.getId() + " not found.");
+        }
+        return getRepository().save(entity);
+    }
 }
-- 
GitLab