From 00bf1cdf1a424281d6d154cb52fca2de76a77e24 Mon Sep 17 00:00:00 2001
From: Sebastian Bugge <vkbugge@hotmail.com>
Date: Wed, 19 Apr 2023 14:01:49 +0200
Subject: [PATCH 1/7] chore: add lombok dependency

---
 api/pom.xml | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/api/pom.xml b/api/pom.xml
index 795b0e4..6c384ca 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -58,7 +58,11 @@
 			<artifactId>spring-security-test</artifactId>
 			<scope>test</scope>
 		</dependency>
-	</dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+    </dependencies>
 
 	<build>
 		<plugins>
-- 
GitLab


From 7259841a24503681fa586156a136602fa86b73b1 Mon Sep 17 00:00:00 2001
From: Sebastian Bugge <vkbugge@hotmail.com>
Date: Wed, 19 Apr 2023 14:02:03 +0200
Subject: [PATCH 2/7] feat: add user database model

---
 .../main/java/no/freshify/api/model/User.java | 23 +++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 api/src/main/java/no/freshify/api/model/User.java

diff --git a/api/src/main/java/no/freshify/api/model/User.java b/api/src/main/java/no/freshify/api/model/User.java
new file mode 100644
index 0000000..0d7ea60
--- /dev/null
+++ b/api/src/main/java/no/freshify/api/model/User.java
@@ -0,0 +1,23 @@
+package no.freshify.api.model;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.Setter;
+
+@Entity
+@Getter
+@Setter
+public class User {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(nullable = false)
+    private String firstName;
+
+    @Column(nullable = false, unique = true)
+    private String email;
+
+    @Column(nullable = false)
+    private String password;
+}
-- 
GitLab


From 9a336198c50cac7c5ef48416e60912bb397611a6 Mon Sep 17 00:00:00 2001
From: Sebastian Bugge <vkbugge@hotmail.com>
Date: Wed, 19 Apr 2023 14:04:08 +0200
Subject: [PATCH 3/7] feat: add Household database model

---
 .../java/no/freshify/api/model/Household.java   | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
 create mode 100644 api/src/main/java/no/freshify/api/model/Household.java

diff --git a/api/src/main/java/no/freshify/api/model/Household.java b/api/src/main/java/no/freshify/api/model/Household.java
new file mode 100644
index 0000000..0cdb6cd
--- /dev/null
+++ b/api/src/main/java/no/freshify/api/model/Household.java
@@ -0,0 +1,17 @@
+package no.freshify.api.model;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.Setter;
+
+@Entity
+@Getter
+@Setter
+public class Household {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column
+    private String name;
+}
-- 
GitLab


From 44f516a67f74a6776d843c55bfc9bf19e57cc3f4 Mon Sep 17 00:00:00 2001
From: Sebastian Bugge <vkbugge@hotmail.com>
Date: Wed, 19 Apr 2023 14:07:55 +0200
Subject: [PATCH 4/7] feat: add item type database model

---
 .../java/no/freshify/api/model/ItemType.java    | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
 create mode 100644 api/src/main/java/no/freshify/api/model/ItemType.java

diff --git a/api/src/main/java/no/freshify/api/model/ItemType.java b/api/src/main/java/no/freshify/api/model/ItemType.java
new file mode 100644
index 0000000..b11b342
--- /dev/null
+++ b/api/src/main/java/no/freshify/api/model/ItemType.java
@@ -0,0 +1,17 @@
+package no.freshify.api.model;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.Setter;
+
+@Entity
+@Getter
+@Setter
+public class ItemType {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column
+    private String name;
+}
-- 
GitLab


From e3bda39832846c3db7031898e539f7b8825d4fc9 Mon Sep 17 00:00:00 2001
From: Sebastian Bugge <vkbugge@hotmail.com>
Date: Wed, 19 Apr 2023 14:12:43 +0200
Subject: [PATCH 5/7] feat: add shopping list entry database model

---
 .../freshify/api/model/ShoppingListEntry.java | 29 +++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100644 api/src/main/java/no/freshify/api/model/ShoppingListEntry.java

diff --git a/api/src/main/java/no/freshify/api/model/ShoppingListEntry.java b/api/src/main/java/no/freshify/api/model/ShoppingListEntry.java
new file mode 100644
index 0000000..55fbb1a
--- /dev/null
+++ b/api/src/main/java/no/freshify/api/model/ShoppingListEntry.java
@@ -0,0 +1,29 @@
+package no.freshify.api.model;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.Setter;
+
+@Entity
+@Getter
+@Setter
+public class ShoppingListEntry {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(nullable = false)
+    private Long count;
+
+    @Column(nullable = false)
+    private Boolean suggested = false;
+
+    @Column(nullable = false)
+    private Boolean checked = false;
+
+    @ManyToOne
+    private ItemType type;
+
+    @ManyToOne
+    private User addedBy;
+}
-- 
GitLab


From 9f6297569c99ec98866657be23e3b0f99b2d0b4c Mon Sep 17 00:00:00 2001
From: Sebastian Bugge <vkbugge@hotmail.com>
Date: Wed, 19 Apr 2023 14:18:07 +0200
Subject: [PATCH 6/7] feat: add item database model

---
 .../main/java/no/freshify/api/model/Item.java | 31 +++++++++++++++++++
 .../no/freshify/api/model/ItemStatus.java     |  6 ++++
 2 files changed, 37 insertions(+)
 create mode 100644 api/src/main/java/no/freshify/api/model/Item.java
 create mode 100644 api/src/main/java/no/freshify/api/model/ItemStatus.java

diff --git a/api/src/main/java/no/freshify/api/model/Item.java b/api/src/main/java/no/freshify/api/model/Item.java
new file mode 100644
index 0000000..2174034
--- /dev/null
+++ b/api/src/main/java/no/freshify/api/model/Item.java
@@ -0,0 +1,31 @@
+package no.freshify.api.model;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+@Entity
+@Getter
+@Setter
+public class Item {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(nullable = false)
+    private Date lastChanged;
+
+    @Column(nullable = false)
+    private Double remaining = 1.0;
+
+    @Column(nullable = false)
+    private Boolean suggested = false;
+
+    @Enumerated(EnumType.STRING)
+    private ItemStatus status;
+
+    @ManyToOne
+    private User addedBy;
+}
diff --git a/api/src/main/java/no/freshify/api/model/ItemStatus.java b/api/src/main/java/no/freshify/api/model/ItemStatus.java
new file mode 100644
index 0000000..4c4f8b7
--- /dev/null
+++ b/api/src/main/java/no/freshify/api/model/ItemStatus.java
@@ -0,0 +1,6 @@
+package no.freshify.api.model;
+
+public enum ItemStatus {
+    INVENTORY,
+    USED,
+}
-- 
GitLab


From 7e033fdcadce32365835a1c65f2543438fb99d57 Mon Sep 17 00:00:00 2001
From: Sebastian Bugge <vkbugge@hotmail.com>
Date: Wed, 19 Apr 2023 14:26:46 +0200
Subject: [PATCH 7/7] feat: add household member database model

---
 .../freshify/api/model/HouseholdMember.java   | 26 +++++++++++++++++++
 .../api/model/HouseholdMemberKey.java         | 20 ++++++++++++++
 .../api/model/HouseholdMemberRole.java        |  6 +++++
 3 files changed, 52 insertions(+)
 create mode 100644 api/src/main/java/no/freshify/api/model/HouseholdMember.java
 create mode 100644 api/src/main/java/no/freshify/api/model/HouseholdMemberKey.java
 create mode 100644 api/src/main/java/no/freshify/api/model/HouseholdMemberRole.java

diff --git a/api/src/main/java/no/freshify/api/model/HouseholdMember.java b/api/src/main/java/no/freshify/api/model/HouseholdMember.java
new file mode 100644
index 0000000..ff50978
--- /dev/null
+++ b/api/src/main/java/no/freshify/api/model/HouseholdMember.java
@@ -0,0 +1,26 @@
+package no.freshify.api.model;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.Setter;
+
+@Entity
+@Getter
+@Setter
+public class HouseholdMember {
+    @EmbeddedId
+    private HouseholdMemberKey id;
+
+    @ManyToOne
+    @MapsId("householdId")
+    @JoinColumn(name = "household_id")
+    private Household household;
+
+    @ManyToOne
+    @MapsId("userId")
+    @JoinColumn(name = "user_id")
+    private User user;
+
+    @Enumerated(EnumType.STRING)
+    private HouseholdMemberRole role;
+}
diff --git a/api/src/main/java/no/freshify/api/model/HouseholdMemberKey.java b/api/src/main/java/no/freshify/api/model/HouseholdMemberKey.java
new file mode 100644
index 0000000..19ea801
--- /dev/null
+++ b/api/src/main/java/no/freshify/api/model/HouseholdMemberKey.java
@@ -0,0 +1,20 @@
+package no.freshify.api.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Embeddable;
+import jakarta.persistence.GeneratedValue;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+@Embeddable
+@Getter
+@Setter
+public class HouseholdMemberKey implements Serializable {
+    @Column(name = "household_id")
+    private Long householdId;
+
+    @Column(name = "user_id")
+    private Long userId;
+}
diff --git a/api/src/main/java/no/freshify/api/model/HouseholdMemberRole.java b/api/src/main/java/no/freshify/api/model/HouseholdMemberRole.java
new file mode 100644
index 0000000..fe88acf
--- /dev/null
+++ b/api/src/main/java/no/freshify/api/model/HouseholdMemberRole.java
@@ -0,0 +1,6 @@
+package no.freshify.api.model;
+
+public enum HouseholdMemberRole {
+    USER,
+    SUPERUSER,
+}
-- 
GitLab