Skip to content
Merged
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
16 changes: 0 additions & 16 deletions apps/user-service/src/main/resources/application-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,6 @@ spring:
minimum-idle: 5
pool-name: HikariCP-MyBatis

# # JPA/Hibernate 설정
# jpa:
# hibernate:
# ddl-auto: update # create, create-drop, update, validate, none
# show-sql: true
# format-sql: true
# database: postgresql
# database-platform: org.hibernate.dialect.PostgreSQLDialect
# properties:
# hibernate:
# format_sql: true
# use_sql_comments: true
# jdbc:
# lob:
# non_contextual_creation: true

mybatis:
mapper-locations: classpath:mybatis/mapper/**/*.xml
type-aliases-package: com.gltkorea.icebang.dto
Expand Down
64 changes: 29 additions & 35 deletions apps/user-service/src/test/resources/sql/create-schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ DROP TABLE IF EXISTS "ROLE_PERMISSION";
DROP TABLE IF EXISTS "USER_ROLE";
DROP TABLE IF EXISTS "PERMISSION";
DROP TABLE IF EXISTS "ROLE";
DROP TABLE IF EXISTS "USER_GROUP";
DROP TABLE IF EXISTS "USER_GROUP_INFO";
DROP TABLE IF EXISTS "GROUP_INFO";
DROP TABLE IF EXISTS "USER";


-- 사용자 정보
-- 사용자 정보 (외부 노출 가능성 높음 -> UUID)
CREATE TABLE "USER" (
"user_id" VARCHAR(36) NOT NULL,
"name" VARCHAR(100) NULL,
Expand All @@ -34,71 +34,65 @@ CREATE TABLE "USER" (
PRIMARY KEY ("user_id")
);

-- 사용자 그룹 정보
CREATE TABLE "GROUP_INFO" (
"group_id" VARCHAR(36) NOT NULL,
"group_info_id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"name" VARCHAR(255) NULL,
"description" TEXT NULL,
"status" VARCHAR(50) NULL,
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("group_id")
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 사용자-그룹 관계
CREATE TABLE "USER_GROUP" (
"user_id" VARCHAR(36) NOT NULL,
"group_id" VARCHAR(36) NOT NULL,
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("user_id", "group_id"),
FOREIGN KEY ("user_id") REFERENCES "USER" ("user_id"),
FOREIGN KEY ("group_id") REFERENCES "GROUP_INFO" ("group_id")
);

-- 역할 정보
CREATE TABLE "ROLE" (
"role_id" VARCHAR(36) NOT NULL,
"role_id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"name" VARCHAR(50) NULL,
"code" VARCHAR(50) NULL UNIQUE,
"description" VARCHAR(255) NULL,
"status" VARCHAR(50) NULL,
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("role_id")
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 권한 정보
CREATE TABLE "PERMISSION" (
"permission_id" VARCHAR(36) NOT NULL,
"permission_id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"name" VARCHAR(50) NULL,
"code" VARCHAR(50) NULL UNIQUE,
"resource" VARCHAR(50) NULL,
"action" VARCHAR(50) NULL,
"description" VARCHAR(255) NULL,
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("permission_id")
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE "USER_GROUP_INFO" (
"user_group_info_id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"user_id" VARCHAR(36) NOT NULL, -- USER 테이블 참조
"group_info_id" BIGINT NOT NULL, -- GROUP_INFO 테이블 참조
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY ("user_id") REFERENCES "USER" ("user_id"),
FOREIGN KEY ("group_info_id") REFERENCES "GROUP_INFO" ("group_info_id"),
UNIQUE ("user_id", "group_info_id")
);

-- 사용자-역할 관계
CREATE TABLE "USER_ROLE" (
"user_id" VARCHAR(36) NOT NULL,
"role_id" VARCHAR(36) NOT NULL,
"user_role_id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"user_id" VARCHAR(36) NOT NULL, -- USER 테이블 참조
"role_id" BIGINT NOT NULL, -- ROLE 테이블 참조
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("user_id", "role_id"),
FOREIGN KEY ("user_id") REFERENCES "USER" ("user_id"),
FOREIGN KEY ("role_id") REFERENCES "ROLE" ("role_id")
FOREIGN KEY ("role_id") REFERENCES "ROLE" ("role_id"),
UNIQUE ("user_id", "role_id")
);

-- 역할-권한 관계
CREATE TABLE "ROLE_PERMISSION" (
"role_id" VARCHAR(36) NOT NULL,
"permission_id" VARCHAR(36) NOT NULL,
"role_permission_id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"role_id" BIGINT NOT NULL, -- ROLE 테이블 참조
"permission_id" BIGINT NOT NULL, -- PERMISSION 테이블 참조
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("role_id", "permission_id"),
FOREIGN KEY ("role_id") REFERENCES "ROLE" ("role_id"),
FOREIGN KEY ("permission_id") REFERENCES "PERMISSION" ("permission_id")
FOREIGN KEY ("permission_id") REFERENCES "PERMISSION" ("permission_id"),
UNIQUE ("role_id", "permission_id")
);
41 changes: 20 additions & 21 deletions apps/user-service/src/test/resources/sql/insert-user-data.sql
Original file line number Diff line number Diff line change
@@ -1,39 +1,38 @@
-- 데이터 삽입
INSERT INTO "USER" ("user_id", "name", "email", "password", "phone_number", "type", "status", "joined_at")
VALUES
('86b2414f-8e4d-4c3e-953e-1b6c7003c271', '홍길동', '[email protected]', 'hashed_password_1', '010-1234-5678', 'INDIVIDUAL', 'ACTIVE', NOW()),
('92d04a8b-185d-4f1b-85d1-9650d99d1234', '김철수', '[email protected]', 'hashed_1b590e829a28', '010-9876-5432', 'INDIVIDUAL', 'ACTIVE', NOW());

INSERT INTO "GROUP_INFO" ("group_id", "name", "description", "status")
INSERT INTO "GROUP_INFO" ("name", "description", "status")
VALUES
('0b5c1c4e-5e2a-438d-8c1d-1d2a3e3b4d5a', '개발팀', '애플리케이션 개발 그룹', 'ACTIVE'),
('5c3f7b2c-8a1e-45a8-9d2a-7e7f6a8e9d2b', '기획팀', '프로젝트 기획 그룹', 'ACTIVE');
('개발팀', '애플리케이션 개발 그룹', 'ACTIVE'), -- ID 1로 생성됨
('기획팀', '프로젝트 기획 그룹', 'ACTIVE'); -- ID 2로 생성됨

INSERT INTO "USER_GROUP" ("user_id", "group_id")
INSERT INTO "USER_GROUP_INFO" ("user_id", "group_info_id")
VALUES
('86b2414f-8e4d-4c3e-953e-1b6c7003c271', '0b5c1c4e-5e2a-438d-8c1d-1d2a3e3b4d5a'),
('92d04a8b-185d-4f1b-85d1-9650d99d1234', '5c3f7b2c-8a1e-45a8-9d2a-7e7f6a8e9d2b');
('86b2414f-8e4d-4c3e-953e-1b6c7003c271', 1), -- 홍길동 -> 개발팀
('92d04a8b-185d-4f1b-85d1-9650d99d1234', 2); -- 김철수 -> 기획팀

INSERT INTO "ROLE" ("role_id", "name", "code", "description", "status")
INSERT INTO "ROLE" ("name", "code", "description", "status")
VALUES
('e2c3a5f9-8d1a-4b72-9c3f-4e3b2c1d8a1e', '관리자', 'ADMIN', '모든 권한을 가진 역할', 'ACTIVE'),
('d1a2c3b4-5f6e-7d8c-9a0b-1c2d3e4f5a6b', '일반 사용자', 'USER', '기본 권한을 가진 역할', 'ACTIVE');
('관리자', 'ADMIN', '모든 권한을 가진 역할', 'ACTIVE'), -- ID 1로 생성됨
('일반 사용자', 'USER', '기본 권한을 가진 역할', 'ACTIVE'); -- ID 2로 생성됨

INSERT INTO "PERMISSION" ("permission_id", "name", "code", "resource", "action", "description")
INSERT INTO "PERMISSION" ("name", "code", "resource", "action", "description")
VALUES
('c3f5a2b8-7e1d-4c9a-8b1d-2e3f4a5b6c7d', '사용자 정보 읽기', 'USER_READ', 'USER', 'READ', '사용자 정보 조회 권한'),
('b5c6a7d8-1e2f-3a4b-5c6d-7e8f9a0b1c2d', '사용자 정보 수정', 'USER_WRITE', 'USER', 'WRITE', '사용자 정보 수정 권한'),
('a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d', '로그인', 'AUTH_LOGIN', 'AUTH', 'LOGIN', '로그인 권한');
('사용자 정보 읽기', 'USER_READ', 'USER', 'READ', '사용자 정보 조회 권한'), -- ID 1로 생성됨
('사용자 정보 수정', 'USER_WRITE', 'USER', 'WRITE', '사용자 정보 수정 권한'), -- ID 2로 생성됨
('로그인', 'AUTH_LOGIN', 'AUTH', 'LOGIN', '로그인 권한'); -- ID 3으로 생성됨

INSERT INTO "USER_ROLE" ("user_id", "role_id")
VALUES
('86b2414f-8e4d-4c3e-953e-1b6c7003c271', 'e2c3a5f9-8d1a-4b72-9c3f-4e3b2c1d8a1e'),
('92d04a8b-185d-4f1b-85d1-9650d99d1234', 'd1a2c3b4-5f6e-7d8c-9a0b-1c2d3e4f5a6b');
('86b2414f-8e4d-4c3e-953e-1b6c7003c271', 1), -- 홍길동 -> 관리자
('92d04a8b-185d-4f1b-85d1-9650d99d1234', 2); -- 김철수 -> 일반 사용자

INSERT INTO "ROLE_PERMISSION" ("role_id", "permission_id")
VALUES
('e2c3a5f9-8d1a-4b72-9c3f-4e3b2c1d8a1e', 'c3f5a2b8-7e1d-4c9a-8b1d-2e3f4a5b6c7d'),
('e2c3a5f9-8d1a-4b72-9c3f-4e3b2c1d8a1e', 'b5c6a7d8-1e2f-3a4b-5c6d-7e8f9a0b1c2d'),
('e2c3a5f9-8d1a-4b72-9c3f-4e3b2c1d8a1e', 'a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d'),
('d1a2c3b4-5f6e-7d8c-9a0b-1c2d3e4f5a6b', 'c3f5a2b8-7e1d-4c9a-8b1d-2e3f4a5b6c7d'),
('d1a2c3b4-5f6e-7d8c-9a0b-1c2d3e4f5a6b', 'a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d');
(1, 1), -- 관리자 -> 사용자 정보 읽기
(1, 2), -- 관리자 -> 사용자 정보 수정
(1, 3), -- 관리자 -> 로그인
(2, 1), -- 일반 사용자 -> 사용자 정보 읽기
(2, 3); -- 일반 사용자 -> 로그인
64 changes: 29 additions & 35 deletions docker/local/init-scripts/create-schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ DROP TABLE IF EXISTS "ROLE_PERMISSION";
DROP TABLE IF EXISTS "USER_ROLE";
DROP TABLE IF EXISTS "PERMISSION";
DROP TABLE IF EXISTS "ROLE";
DROP TABLE IF EXISTS "USER_GROUP";
DROP TABLE IF EXISTS "USER_GROUP_INFO";
DROP TABLE IF EXISTS "GROUP_INFO";
DROP TABLE IF EXISTS "USER";


-- 사용자 정보
-- 사용자 정보 (외부 노출 가능성 높음 -> UUID)
CREATE TABLE "USER" (
"user_id" VARCHAR(36) NOT NULL,
"name" VARCHAR(100) NULL,
Expand All @@ -34,71 +34,65 @@ CREATE TABLE "USER" (
PRIMARY KEY ("user_id")
);

-- 사용자 그룹 정보
CREATE TABLE "GROUP_INFO" (
"group_id" VARCHAR(36) NOT NULL,
"group_info_id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"name" VARCHAR(255) NULL,
"description" TEXT NULL,
"status" VARCHAR(50) NULL,
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("group_id")
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 사용자-그룹 관계
CREATE TABLE "USER_GROUP" (
"user_id" VARCHAR(36) NOT NULL,
"group_id" VARCHAR(36) NOT NULL,
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("user_id", "group_id"),
FOREIGN KEY ("user_id") REFERENCES "USER" ("user_id"),
FOREIGN KEY ("group_id") REFERENCES "GROUP_INFO" ("group_id")
);

-- 역할 정보
CREATE TABLE "ROLE" (
"role_id" VARCHAR(36) NOT NULL,
"role_id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"name" VARCHAR(50) NULL,
"code" VARCHAR(50) NULL UNIQUE,
"description" VARCHAR(255) NULL,
"status" VARCHAR(50) NULL,
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("role_id")
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 권한 정보
CREATE TABLE "PERMISSION" (
"permission_id" VARCHAR(36) NOT NULL,
"permission_id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"name" VARCHAR(50) NULL,
"code" VARCHAR(50) NULL UNIQUE,
"resource" VARCHAR(50) NULL,
"action" VARCHAR(50) NULL,
"description" VARCHAR(255) NULL,
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("permission_id")
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE "USER_GROUP_INFO" (
"user_group_info_id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"user_id" VARCHAR(36) NOT NULL, -- USER 테이블 참조
"group_info_id" BIGINT NOT NULL, -- GROUP_INFO 테이블 참조
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY ("user_id") REFERENCES "USER" ("user_id"),
FOREIGN KEY ("group_info_id") REFERENCES "GROUP_INFO" ("group_info_id"),
UNIQUE ("user_id", "group_info_id")
);

-- 사용자-역할 관계
CREATE TABLE "USER_ROLE" (
"user_id" VARCHAR(36) NOT NULL,
"role_id" VARCHAR(36) NOT NULL,
"user_role_id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"user_id" VARCHAR(36) NOT NULL, -- USER 테이블 참조
"role_id" BIGINT NOT NULL, -- ROLE 테이블 참조
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("user_id", "role_id"),
FOREIGN KEY ("user_id") REFERENCES "USER" ("user_id"),
FOREIGN KEY ("role_id") REFERENCES "ROLE" ("role_id")
FOREIGN KEY ("role_id") REFERENCES "ROLE" ("role_id"),
UNIQUE ("user_id", "role_id")
);

-- 역할-권한 관계
CREATE TABLE "ROLE_PERMISSION" (
"role_id" VARCHAR(36) NOT NULL,
"permission_id" VARCHAR(36) NOT NULL,
"role_permission_id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"role_id" BIGINT NOT NULL, -- ROLE 테이블 참조
"permission_id" BIGINT NOT NULL, -- PERMISSION 테이블 참조
"created_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("role_id", "permission_id"),
FOREIGN KEY ("role_id") REFERENCES "ROLE" ("role_id"),
FOREIGN KEY ("permission_id") REFERENCES "PERMISSION" ("permission_id")
FOREIGN KEY ("permission_id") REFERENCES "PERMISSION" ("permission_id"),
UNIQUE ("role_id", "permission_id")
);
Loading