From 33e5f6c2aa02bbf78c165cea9e290d3095fae5a0 Mon Sep 17 00:00:00 2001 From: jesperancinha Date: Tue, 30 Jan 2024 17:34:59 +0100 Subject: [PATCH] Finishes the wrong example --- .../bad/controllers/BadDislikesController.kt | 4 +-- .../repeateddislikes/bad/domain/Domain.kt | 9 +++--- .../repeateddislikes/bad/dtos/Dtos.kt | 32 +++++++++++++++++++ .../repeateddislikes/bad/services/Service.kt | 5 +-- repeated-dislikes/src/main/resources/data.sql | 25 ++++++++++++++- .../src/main/resources/schema.sql | 6 ++-- 6 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/dtos/Dtos.kt diff --git a/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/controllers/BadDislikesController.kt b/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/controllers/BadDislikesController.kt index d53d5ae..3fb8f6a 100644 --- a/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/controllers/BadDislikesController.kt +++ b/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/controllers/BadDislikesController.kt @@ -14,8 +14,8 @@ class BadDislikesController( @GetMapping("users/all") fun getAllUsers() = dislikeService.getAllUsers() - @GetMapping("reports/all") - fun getAllReports() = dislikeService.getAllReports() + @GetMapping("receipts/all") + fun getAllReceipts() = dislikeService.getAllReceipts() @GetMapping("shops/all") fun getAllShops() = dislikeService.getAllShops() diff --git a/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/domain/Domain.kt b/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/domain/Domain.kt index d967a04..c397f77 100644 --- a/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/domain/Domain.kt +++ b/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/domain/Domain.kt @@ -13,7 +13,7 @@ data class User( @GeneratedValue(strategy = GenerationType.UUID) val id: UUID, val name: String, - @ManyToMany(cascade = [CascadeType.DETACH], fetch = FetchType.EAGER) + @ManyToMany(cascade = [CascadeType.DETACH], fetch = FetchType.LAZY) @JoinTable( schema = SCHEMA_BAD, name = "bad_dislikes_relations", @@ -21,12 +21,12 @@ data class User( inverseJoinColumns = [JoinColumn(name="receipt_id")] ) val receipts: List, - @ManyToMany(cascade = [CascadeType.DETACH], fetch = FetchType.EAGER) + @ManyToMany(cascade = [CascadeType.DETACH], fetch = FetchType.LAZY) @JoinTable( schema = SCHEMA_BAD, name = "bad_dislikes_relations", joinColumns = [JoinColumn(name= "user_id")], - inverseJoinColumns = [JoinColumn(name="receipt_id")] + inverseJoinColumns = [JoinColumn(name="shop_id")] ) val shops: List ) @@ -44,6 +44,7 @@ data class Receipt( ) + @Table(name = "shops", schema = SCHEMA_BAD) @Entity data class Shop( @@ -51,7 +52,7 @@ data class Shop( @GeneratedValue(strategy = GenerationType.UUID) val id: UUID, val name: String, - @ManyToMany(cascade = [CascadeType.DETACH], fetch = FetchType.EAGER) + @ManyToMany(cascade = [CascadeType.DETACH], fetch = FetchType.LAZY) @JoinTable( schema = SCHEMA_BAD, name = "bad_dislikes_relations", diff --git a/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/dtos/Dtos.kt b/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/dtos/Dtos.kt new file mode 100644 index 0000000..d646c27 --- /dev/null +++ b/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/dtos/Dtos.kt @@ -0,0 +1,32 @@ +package org.jesperancinha.repeateddislikes.bad.dtos + +import org.jesperancinha.repeateddislikes.bad.domain.User +import java.util.* + +data class UserDTO( + val id: UUID, + val name: String, + val receipts: List, + val shops: List +) + +data class ReceiptDTO( + val id: UUID, + val user: UserDTO, + val shop: ShopDTO +) + + +data class ShopDTO( + val id: UUID, + val name: String, + val receipts: List +) + + +fun User.toDto() = UserDTO ( + id = id, + name = name, + receipts = receipts.map { it.id }, + shops = shops.map { it.name } +) \ No newline at end of file diff --git a/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/services/Service.kt b/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/services/Service.kt index dcd6b37..4f13915 100644 --- a/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/services/Service.kt +++ b/repeated-dislikes/src/main/kotlin/org/jesperancinha/repeateddislikes/bad/services/Service.kt @@ -3,6 +3,7 @@ package org.jesperancinha.repeateddislikes.bad.services import org.jesperancinha.repeateddislikes.bad.dao.ReceiptRepository import org.jesperancinha.repeateddislikes.bad.dao.ShopRepository import org.jesperancinha.repeateddislikes.bad.dao.UserRepository +import org.jesperancinha.repeateddislikes.bad.dtos.toDto import org.springframework.stereotype.Service @Service @@ -11,9 +12,9 @@ class DislikeService( val receiptRepository: ReceiptRepository, val shopRepository: ShopRepository ) { - fun getAllUsers() = userRepository.findAll() + fun getAllUsers() = userRepository.findAll().map { it.toDto() } - fun getAllReports() = receiptRepository.findAll() + fun getAllReceipts() = receiptRepository.findAll() fun getAllShops() = shopRepository.findAll() } \ No newline at end of file diff --git a/repeated-dislikes/src/main/resources/data.sql b/repeated-dislikes/src/main/resources/data.sql index 2a07440..ccbb89e 100644 --- a/repeated-dislikes/src/main/resources/data.sql +++ b/repeated-dislikes/src/main/resources/data.sql @@ -1 +1,24 @@ -SELECT LOG(2); \ No newline at end of file +insert into BAD.USERS (ID, NAME) +values (random_uuid(), 'Liking Cat 1'); +insert into BAD.SHOPS (ID, NAME) +values (random_uuid(), 'Cats Para Dice'); +SET @receipt1=random_uuid(); +SET @receipt2=random_uuid(); +insert into BAD.RECEIPTS (ID, USER_ID, SHOP_ID) +values (@receipt1, + (select ID from BAD.USERS WHERE NAME = 'Liking Cat 1'), + (select ID from BAD.SHOPS WHERE NAME = 'Cats Para Dice') + ); +insert into BAD.BAD_DISLIKES_RELATIONS (ID, USER_ID, SHOP_ID, RECEIPT_ID) +values (random_uuid(), + (select ID from BAD.USERS WHERE NAME = 'Liking Cat 1'), + (select ID from BAD.SHOPS WHERE NAME = 'Cats Para Dice'), + @receipt1 + ); + +insert into BAD.BAD_DISLIKES_RELATIONS (ID, USER_ID, SHOP_ID, RECEIPT_ID) +values (random_uuid(), + (select ID from BAD.USERS WHERE NAME = 'Liking Cat 1'), + (select ID from BAD.SHOPS WHERE NAME = 'Cats Para Dice'), + @receipt2 + ); diff --git a/repeated-dislikes/src/main/resources/schema.sql b/repeated-dislikes/src/main/resources/schema.sql index e6bc2ec..0c681e5 100644 --- a/repeated-dislikes/src/main/resources/schema.sql +++ b/repeated-dislikes/src/main/resources/schema.sql @@ -11,9 +11,9 @@ CREATE SCHEMA IF NOT EXISTS BAD; CREATE TABLE IF NOT EXISTS BAD.BAD_DISLIKES_RELATIONS ( id UUID NOT NULL DEFAULT random_uuid() PRIMARY KEY, - user_id INT NOT NULL, - shop_id INT NOT NULL, - receipt_id INT NOT NULL + user_id UUID NOT NULL, + shop_id UUID NOT NULL, + receipt_id UUID NOT NULL ); CREATE TABLE IF NOT EXISTS BAD.USERS