From c76dbbc03b322e40aefbe65a236e882c4be0de1e Mon Sep 17 00:00:00 2001 From: matheusgondra Date: Sat, 3 Jan 2026 12:40:57 -0300 Subject: [PATCH 1/5] feat: create addresses migration --- .../resources/db/migration/V1__create-table-addresses.sql | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/main/resources/db/migration/V1__create-table-addresses.sql diff --git a/src/main/resources/db/migration/V1__create-table-addresses.sql b/src/main/resources/db/migration/V1__create-table-addresses.sql new file mode 100644 index 0000000..dfbbed0 --- /dev/null +++ b/src/main/resources/db/migration/V1__create-table-addresses.sql @@ -0,0 +1,8 @@ +CREATE TABLE addresses ( + id SERIAL PRIMARY KEY, + street VARCHAR NOT NULL, + number INTEGER NOT NULL, + city VARCHAR(50) NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); \ No newline at end of file From 3b1964d7a3781683a5eac38e73f995949bbbb60a Mon Sep 17 00:00:00 2001 From: matheusgondra Date: Sat, 3 Jan 2026 12:43:28 -0300 Subject: [PATCH 2/5] feat: create users migration --- .../resources/db/migration/V2__create-table-users.sql | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/main/resources/db/migration/V2__create-table-users.sql diff --git a/src/main/resources/db/migration/V2__create-table-users.sql b/src/main/resources/db/migration/V2__create-table-users.sql new file mode 100644 index 0000000..8a39bcd --- /dev/null +++ b/src/main/resources/db/migration/V2__create-table-users.sql @@ -0,0 +1,10 @@ +CREATE TABLE users ( + id UUID PRIMARY KEY, + name VARCHAR(50) NOT NULL, + cpf VARCHAR(11) NOT NULL UNIQUE, + birth_date DATE NOT NULL, + password VARCHAR NOT NULL, + address_id INTEGER REFERENCES addresses(id), + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); \ No newline at end of file From 88ae199785b47a6dc51c058180a0ba5398ac5b2e Mon Sep 17 00:00:00 2001 From: matheusgondra Date: Sat, 3 Jan 2026 12:49:08 -0300 Subject: [PATCH 3/5] feat: create Address model --- .../laporeon/library_api/model/Address.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/main/java/com/laporeon/library_api/model/Address.java diff --git a/src/main/java/com/laporeon/library_api/model/Address.java b/src/main/java/com/laporeon/library_api/model/Address.java new file mode 100644 index 0000000..54ba5a4 --- /dev/null +++ b/src/main/java/com/laporeon/library_api/model/Address.java @@ -0,0 +1,44 @@ +package com.laporeon.library_api.model; + +import java.time.LocalDateTime; + +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@AllArgsConstructor +@Data +@Entity +@Table(name = "addresses") +public class Address { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false) + private String street; + + @Column(nullable = false) + private Integer number; + + @Column(nullable = false, length = 50) + private String city; + + @CreationTimestamp + @Column(name = "created_at") + private LocalDateTime createdAt; + + @UpdateTimestamp + @Column(name = "updated_at") + private LocalDateTime updatedAt; +} From bd97d59ccf405963ece0334d547a79fcb142e6dd Mon Sep 17 00:00:00 2001 From: matheusgondra Date: Sat, 3 Jan 2026 12:54:21 -0300 Subject: [PATCH 4/5] feat: create User model --- .../com/laporeon/library_api/model/User.java | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/main/java/com/laporeon/library_api/model/User.java diff --git a/src/main/java/com/laporeon/library_api/model/User.java b/src/main/java/com/laporeon/library_api/model/User.java new file mode 100644 index 0000000..a9dbf30 --- /dev/null +++ b/src/main/java/com/laporeon/library_api/model/User.java @@ -0,0 +1,57 @@ +package com.laporeon.library_api.model; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.UUID; + +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "users") +public class User { + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; + + @Column(nullable = false, length = 50) + private String name; + + @Column(nullable = false, unique = true, length = 11) + private String cpf; + + @Column(name = "birth_date", nullable = false) + private LocalDate birthDate; + + @Column(nullable = false) + private String password; + + @ToString.Exclude + @OneToOne + @JoinColumn(name = "address_id") + private Address address; + + @CreationTimestamp + @Column(name = "created_at") + private LocalDateTime createdAt; + + @UpdateTimestamp + @Column(name = "updated_at") + private LocalDateTime updatedAt; +} From 777324f09d36a580cce49f5f4ea79c9db9e09d08 Mon Sep 17 00:00:00 2001 From: matheusgondra Date: Sat, 3 Jan 2026 13:02:51 -0300 Subject: [PATCH 5/5] fix: rename entity and database table --- .../laporeon/library_api/model/{User.java => Person.java} | 4 ++-- .../resources/db/migration/V3__rename-users-to-people.sql | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) rename src/main/java/com/laporeon/library_api/model/{User.java => Person.java} (96%) create mode 100644 src/main/resources/db/migration/V3__rename-users-to-people.sql diff --git a/src/main/java/com/laporeon/library_api/model/User.java b/src/main/java/com/laporeon/library_api/model/Person.java similarity index 96% rename from src/main/java/com/laporeon/library_api/model/User.java rename to src/main/java/com/laporeon/library_api/model/Person.java index a9dbf30..ebe2899 100644 --- a/src/main/java/com/laporeon/library_api/model/User.java +++ b/src/main/java/com/laporeon/library_api/model/Person.java @@ -24,8 +24,8 @@ @NoArgsConstructor @AllArgsConstructor @Entity -@Table(name = "users") -public class User { +@Table(name = "people") +public class Person { @Id @GeneratedValue(strategy = GenerationType.UUID) private UUID id; diff --git a/src/main/resources/db/migration/V3__rename-users-to-people.sql b/src/main/resources/db/migration/V3__rename-users-to-people.sql new file mode 100644 index 0000000..fcf249d --- /dev/null +++ b/src/main/resources/db/migration/V3__rename-users-to-people.sql @@ -0,0 +1,5 @@ +ALTER TABLE users RENAME TO people; + +ALTER TABLE people RENAME CONSTRAINT users_pkey TO people_pkey; +ALTER TABLE people RENAME CONSTRAINT users_address_id_fkey TO people_address_id_fkey; +ALTER TABLE people RENAME CONSTRAINT users_cpf_key TO people_cpf_key; \ No newline at end of file