From c33ec686f991fc18691863fb310eabc6e172d862 Mon Sep 17 00:00:00 2001 From: pricelees Date: Sun, 14 Sep 2025 16:37:24 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EA=B4=80=EB=A6=AC=EC=9E=90=20?= =?UTF-8?q?=EC=8A=A4=ED=82=A4=EB=A7=88=20=ED=83=80=EC=9E=85=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20=EC=97=94=ED=8B=B0=ED=8B=B0=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/persistence/AdminEntity.kt | 15 ++++++++++++++- src/main/resources/schema/schema-h2.sql | 13 ++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/roomescape/admin/infrastructure/persistence/AdminEntity.kt b/src/main/kotlin/roomescape/admin/infrastructure/persistence/AdminEntity.kt index 3de6097f..9f356427 100644 --- a/src/main/kotlin/roomescape/admin/infrastructure/persistence/AdminEntity.kt +++ b/src/main/kotlin/roomescape/admin/infrastructure/persistence/AdminEntity.kt @@ -10,16 +10,29 @@ import roomescape.common.entity.AuditingBaseEntity class AdminEntity( id: Long, + @Column(unique = true) val account: String, var password: String, val name: String, + + @Column(unique = true) var phone: String, @Enumerated(value = EnumType.STRING) - var permissionLevel: AdminPermissionLevel + val type: AdminType, + @Column(nullable = true) + var storeId: Long? = null, + + @Enumerated(value = EnumType.STRING) + var permissionLevel: AdminPermissionLevel ) : AuditingBaseEntity(id) +enum class AdminType { + HQ, + STORE +} + enum class AdminPermissionLevel( val privileges: Set ) { diff --git a/src/main/resources/schema/schema-h2.sql b/src/main/resources/schema/schema-h2.sql index cbcb63fd..d4b6fe73 100644 --- a/src/main/resources/schema/schema-h2.sql +++ b/src/main/resources/schema/schema-h2.sql @@ -74,11 +74,22 @@ create table if not exists admin( password varchar(255) not null, name varchar(20) not null, phone varchar(20) not null, + type varchar(20) not null, + store_id bigint, permission_level varchar(20) not null, created_at timestamp not null, created_by bigint not null, updated_at timestamp not null, - updated_by bigint not null + updated_by bigint not null, + + constraint uk_admin__account unique (account), + constraint uk_admin__phone unique (phone), + constraint chk_admin__type check (type in ('HQ', 'STORE')), + constraint chk_admin__store_id check ( + (type = 'HQ' AND store_id IS NULL) OR + (type = 'STORE' AND store_id IS NOT NULL) + ), + constraint fk_admin__store_id foreign key (store_id) references store (id) ); create table if not exists login_history(