Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions src/main/java/com/laporeon/library_api/model/Address.java
Original file line number Diff line number Diff line change
@@ -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 {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Não sei se tu vai querer usar builder pattern, mas se for, apenas a sugestão mesmo se quiser aproveitar a PR pra já tacar o @Builder nessas duas entidades

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Não cheguei a usar o padrão builder no java. O que acha melhor?

@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;
}
57 changes: 57 additions & 0 deletions src/main/java/com/laporeon/library_api/model/Person.java
Original file line number Diff line number Diff line change
@@ -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 = "people")
public class Person {
@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;
}
Original file line number Diff line number Diff line change
@@ -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
);
10 changes: 10 additions & 0 deletions src/main/resources/db/migration/V2__create-table-users.sql
Original file line number Diff line number Diff line change
@@ -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
);
Original file line number Diff line number Diff line change
@@ -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;