diff --git a/src/main/java/org/runimo/runimo/runimo/domain/Runimo.java b/src/main/java/org/runimo/runimo/runimo/domain/Runimo.java new file mode 100644 index 00000000..89920f4e --- /dev/null +++ b/src/main/java/org/runimo/runimo/runimo/domain/Runimo.java @@ -0,0 +1,34 @@ +package org.runimo.runimo.runimo.domain; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.runimo.runimo.common.BaseEntity; + +@Entity +@Table(name = "runimo") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class Runimo extends BaseEntity { + @Column(name = "name") + private String name; + + @Column(name = "code") + private String code; + + @Column(name = "description") + private String description; + + @Enumerated(EnumType.STRING) + @Column(name = "type", nullable = false) + private RunimoType type; + + @Builder + public Runimo(String name, String description, RunimoType type) { + this.name = name; + this.description = description; + this.type = type; + } +} diff --git a/src/main/java/org/runimo/runimo/runimo/domain/RunimoType.java b/src/main/java/org/runimo/runimo/runimo/domain/RunimoType.java new file mode 100644 index 00000000..47777520 --- /dev/null +++ b/src/main/java/org/runimo/runimo/runimo/domain/RunimoType.java @@ -0,0 +1,23 @@ +package org.runimo.runimo.runimo.domain; + +import lombok.Getter; + +import java.util.Arrays; +import java.util.List; + +@Getter +public enum RunimoType { + RABBIT("R-101", "토끼"), + DOG("R-102", "강아지"), + DUCK("R-103", "오리"), + WOLF("R-104", "늑대"), + ; + + private final String code; + private final String name; + + RunimoType(String code, String name) { + this.code = code; + this.name = name; + } +} diff --git a/src/main/java/org/runimo/runimo/runimo/domain/UserRunimo.java b/src/main/java/org/runimo/runimo/runimo/domain/UserRunimo.java new file mode 100644 index 00000000..cfd147e8 --- /dev/null +++ b/src/main/java/org/runimo/runimo/runimo/domain/UserRunimo.java @@ -0,0 +1,31 @@ +package org.runimo.runimo.runimo.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.runimo.runimo.common.BaseEntity; + +@Entity +@Table(name = "user_runimo") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +public class UserRunimo extends BaseEntity { + + @Column(name = "user_id", nullable = false) + private Long userId; + + @Column(name = "runimo_id", nullable = false) + private Long runimoId; + + @Builder + public UserRunimo(Long id, Long userId, Long runimoId) { + this.id = id; + this.userId = userId; + this.runimoId = runimoId; + } +} diff --git a/src/main/resources/sql/schema.sql b/src/main/resources/sql/schema.sql index 9915da96..139aad22 100644 --- a/src/main/resources/sql/schema.sql +++ b/src/main/resources/sql/schema.sql @@ -132,6 +132,28 @@ CREATE TABLE `incubating_eggs` `deleted_at` TIMESTAMP ); +CREATE TABLE `runimo` +( + `id` BIGINT PRIMARY KEY AUTO_INCREMENT, + `name` varchar(255), + `code` varchar(255), + `description` varchar(255), + `type` varchar(255) NOT NULL, + `created_at` timestamp, + `updated_at` timestamp, + `deleted_at` timestamp +); + +CREATE TABLE `user_runimo` +( + `id` BIGINT PRIMARY KEY AUTO_INCREMENT, + `user_id` BIGINT NOT NULL, + `runimo_id` BIGINT NOT NULL, + `created_at` timestamp, + `updated_at` timestamp, + `deleted_at` timestamp +); + ALTER TABLE `user_token` ADD FOREIGN KEY (`user_id`) REFERENCES `users` (`id`); diff --git a/src/test/resources/sql/schema.sql b/src/test/resources/sql/schema.sql index 9915da96..20d75941 100644 --- a/src/test/resources/sql/schema.sql +++ b/src/test/resources/sql/schema.sql @@ -132,6 +132,29 @@ CREATE TABLE `incubating_eggs` `deleted_at` TIMESTAMP ); + +CREATE TABLE `runimo` +( + `id` BIGINT PRIMARY KEY AUTO_INCREMENT, + `name` varchar(255), + `code` varchar(255), + `description` varchar(255), + `type` varchar(255) NOT NULL, + `created_at` timestamp, + `updated_at` timestamp, + `deleted_at` timestamp +); + +CREATE TABLE `user_runimo` +( + `id` BIGINT PRIMARY KEY AUTO_INCREMENT, + `user_id` BIGINT NOT NULL, + `runimo_id` BIGINT NOT NULL, + `created_at` timestamp, + `updated_at` timestamp, + `deleted_at` timestamp +); + ALTER TABLE `user_token` ADD FOREIGN KEY (`user_id`) REFERENCES `users` (`id`);