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 8520e8aa4ca12429b526281cce2f466ad735e299..f56b95e001eb1ae13ed4093509cb4ad354c81b4a 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 706071fb66c60702f9d1495bbdf2f8e7db533f31..eb30e2e3479e06fdd576a877c832f3e27b2f1959 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); + } }