#29 pass: database setting
This commit is contained in:
5
pass-batch/Makefile
Normal file
5
pass-batch/Makefile
Normal file
@@ -0,0 +1,5 @@
|
||||
db-up:
|
||||
docker-compose up -d --force-recreate
|
||||
|
||||
db-down:
|
||||
docker-compose down -v
|
||||
5
pass-batch/db/conf.d/custom.cnf
Normal file
5
pass-batch/db/conf.d/custom.cnf
Normal file
@@ -0,0 +1,5 @@
|
||||
[client]
|
||||
default-character-set = utf8mb4
|
||||
|
||||
[mysqld]
|
||||
authentication-policy = mysql_native_password
|
||||
108
pass-batch/db/initdb.d/create_table.sql
Normal file
108
pass-batch/db/initdb.d/create_table.sql
Normal file
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
id varchar(20)
|
||||
status, event varchar(10) - enum
|
||||
그 외 varchar(50)
|
||||
*/
|
||||
|
||||
CREATE TABLE `package`
|
||||
(
|
||||
`package_seq` int NOT NULL AUTO_INCREMENT COMMENT '패키지 순번',
|
||||
`package_name` varchar(50) NOT NULL COMMENT '패키지 이름',
|
||||
`count` int DEFAULT NULL COMMENT '이용권 수, NULL인 경우 무제한',
|
||||
`period` int DEFAULT NULL COMMENT '기간(일), NULL인 경우 무제한',
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성 일시',
|
||||
`modified_at` timestamp DEFAULT NULL COMMENT '수정 일시',
|
||||
PRIMARY KEY (`package_seq`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='패키지';
|
||||
|
||||
CREATE TABLE `pass`
|
||||
(
|
||||
`pass_seq` int NOT NULL AUTO_INCREMENT COMMENT '이용권 순번',
|
||||
`package_seq` int NOT NULL COMMENT '패키지 순번',
|
||||
`user_id` varchar(20) NOT NULL COMMENT '사용자 ID',
|
||||
`status` varchar(10) NOT NULL COMMENT '상태',
|
||||
`remaining_count` int DEFAULT NULL COMMENT '잔여 이용권 수, NULL인 경우 무제한',
|
||||
`started_at` timestamp NOT NULL COMMENT '시작 일시',
|
||||
`ended_at` timestamp DEFAULT NULL COMMENT '종료 일시, NULL인 경우 무제한',
|
||||
`expired_at` timestamp DEFAULT NULL COMMENT '만료 일시',
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성 일시',
|
||||
`modified_at` timestamp DEFAULT NULL COMMENT '수정 일시',
|
||||
PRIMARY KEY (`pass_seq`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='이용권';
|
||||
|
||||
CREATE TABLE `bulk_pass`
|
||||
(
|
||||
`bulk_pass_seq` int NOT NULL AUTO_INCREMENT COMMENT '대량 이용권 순번',
|
||||
`package_seq` int NOT NULL COMMENT '패키지 순번',
|
||||
`user_group_id` varchar(20) NOT NULL COMMENT '사용자 그룹 ID',
|
||||
`status` varchar(10) NOT NULL COMMENT '상태',
|
||||
`count` int DEFAULT NULL COMMENT '이용권 수, NULL인 경우 무제한',
|
||||
`started_at` timestamp NOT NULL COMMENT '시작 일시',
|
||||
`ended_at` timestamp DEFAULT NULL COMMENT '종료 일시, NULL인 경우 무제한',
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성 일시',
|
||||
`modified_at` timestamp DEFAULT NULL COMMENT '수정 일시',
|
||||
PRIMARY KEY (`bulk_pass_seq`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='대량 이용권, 다수의 이용자에게 이용권을 지급하기 위함';
|
||||
|
||||
CREATE TABLE `booking`
|
||||
(
|
||||
`booking_seq` int NOT NULL AUTO_INCREMENT COMMENT '예약 순번',
|
||||
`pass_seq` int NOT NULL COMMENT '이용권 순번',
|
||||
`user_id` varchar(20) NOT NULL COMMENT '사용자 ID',
|
||||
`status` varchar(10) NOT NULL COMMENT '상태',
|
||||
`used_pass` tinyint(1) NOT NULL DEFAULT '0' COMMENT '이용권 사용 여부',
|
||||
`attended` tinyint(1) NOT NULL DEFAULT '0' COMMENT '출석 여부',
|
||||
`started_at` timestamp NOT NULL COMMENT '시작 일시',
|
||||
`ended_at` timestamp NOT NULL COMMENT '종료 일시',
|
||||
`cancelled_at` timestamp DEFAULT NULL COMMENT '취소 일시',
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성 일시',
|
||||
`modified_at` timestamp DEFAULT NULL COMMENT '수정 일시',
|
||||
PRIMARY KEY (`booking_seq`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='예약';
|
||||
|
||||
CREATE TABLE `user`
|
||||
(
|
||||
`user_id` varchar(20) NOT NULL COMMENT '사용자 ID',
|
||||
`user_name` varchar(50) NOT NULL COMMENT '사용자 이름',
|
||||
`status` varchar(10) NOT NULL COMMENT '상태',
|
||||
`phone` varchar(50) DEFAULT NULL COMMENT '연락처',
|
||||
`meta` TEXT DEFAULT NULL COMMENT '메타 정보, JSON',
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성 일시',
|
||||
`modified_at` timestamp DEFAULT NULL COMMENT '수정 일시',
|
||||
PRIMARY KEY (`user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='사용자';
|
||||
|
||||
CREATE TABLE `user_group_mapping`
|
||||
(
|
||||
`user_group_id` varchar(20) NOT NULL COMMENT '사용자 그룹 ID',
|
||||
`user_id` varchar(20) NOT NULL COMMENT '사용자 ID',
|
||||
`user_group_name` varchar(50) NOT NULL COMMENT '사용자 그룹 이름',
|
||||
`description` varchar(50) NOT NULL COMMENT '설명',
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성 일시',
|
||||
`modified_at` timestamp DEFAULT NULL COMMENT '수정 일시',
|
||||
PRIMARY KEY (`user_group_id`, `user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='사용자 그룹 매핑';
|
||||
|
||||
CREATE TABLE `notification`
|
||||
(
|
||||
`notification_seq` int NOT NULL AUTO_INCREMENT COMMENT '알람 순번',
|
||||
`uuid` varchar(20) NOT NULL COMMENT '사용자 uuid (카카오톡)',
|
||||
`event` varchar(10) NOT NULL COMMENT '이벤트',
|
||||
`text` varchar(1000) NOT NULL COMMENT '알람 내용',
|
||||
`sent` tinyint(1) NOT NULL DEFAULT '0' COMMENT '발송 여부',
|
||||
`sent_at` timestamp DEFAULT NULL COMMENT '발송 일시',
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성 일시',
|
||||
`modified_at` timestamp DEFAULT NULL COMMENT '수정 일시',
|
||||
PRIMARY KEY (`notification_seq`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='알람';
|
||||
|
||||
CREATE TABLE `statistics`
|
||||
(
|
||||
`statistics_seq` int NOT NULL AUTO_INCREMENT COMMENT '통계 순번',
|
||||
`statistics_at` timestamp NOT NULL COMMENT '통계 일시',
|
||||
`all_count` int NOT NULL DEFAULT 0 COMMENT '전체 횟수',
|
||||
`attended_count` int NOT NULL DEFAULT 0 COMMENT '출석 횟수',
|
||||
`cancelled_count` int NOT NULL DEFAULT 0 COMMENT '취소 횟수',
|
||||
PRIMARY KEY (`statistics_seq`),
|
||||
INDEX idx_statistics_at (`statistics_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='통계';
|
||||
25
pass-batch/db/initdb.d/insert_data.sql
Normal file
25
pass-batch/db/initdb.d/insert_data.sql
Normal file
@@ -0,0 +1,25 @@
|
||||
INSERT INTO package (package_name, count, period, created_at)
|
||||
VALUES ('Starter PT 10회', 10, 60, '2022-08-01 00:00:00'),
|
||||
('Starter PT 20회', 20, 120, '2022-08-01 00:00:00'),
|
||||
('Starter PT 30회', 30, 180, '2022-08-01 00:00:00'),
|
||||
('무료 이벤트 필라테스 1회', 1, NULL, '2022-08-01 00:00:00'),
|
||||
('바디 챌린지 PT 4주', NULL, 28, '2022-08-01 00:00:00'),
|
||||
('바디 챌린지 PT 8주', NULL, 48, '2022-08-01 00:00:00'),
|
||||
('인바디 상담', NULL, NULL, '2022-08-01 00:00:00');
|
||||
|
||||
INSERT INTO `user` (user_id, user_name, status, phone, meta, created_at)
|
||||
VALUES ('A1000000', '우영우', 'ACTIVE', '01011112222', NULL, '2022-08-01 00:00:00'),
|
||||
('A1000001', '최수연', 'ACTIVE', '01033334444', NULL, '2022-08-01 00:00:00'),
|
||||
('A1000002', '이준호', 'INACTIVE', '01055556666', NULL, '2022-08-01 00:00:00'),
|
||||
('B1000010', '권민우', 'ACTIVE', '01077778888', NULL, '2022-08-01 00:00:00'),
|
||||
('B1000011', '동그라미', 'INACTIVE', '01088889999', NULL, '2022-08-01 00:00:00'),
|
||||
('B2000000', '한선영', 'ACTIVE', '01099990000', NULL, '2022-08-01 00:00:00'),
|
||||
('B2000001', '태수미', 'ACTIVE', '01000001111', NULL, '2022-08-01 00:00:00');
|
||||
|
||||
INSERT INTO user_group_mapping (user_group_id, user_id, user_group_name, description, created_at)
|
||||
VALUES ('HANBADA', 'A1000000', '한바다', '한바다 임직원 그룹', '2022-08-01 00:00:00'),
|
||||
('HANBADA', 'A1000001', '한바다', '한바다 임직원 그룹', '2022-08-01 00:00:00'),
|
||||
('HANBADA', 'A1000002', '한바다', '한바다 임직원 그룹', '2022-08-01 00:00:00'),
|
||||
('HANBADA', 'B1000010', '한바다', '한바다 임직원 그룹', '2022-08-01 00:00:00'),
|
||||
('HANBADA', 'B2000000', '한바다', '한바다 임직원 그룹', '2022-08-01 00:00:00'),
|
||||
('TAESAN', 'B2000001', '태산', '태산 임직원 그룹', '2022-08-01 00:00:00');
|
||||
17
pass-batch/docker-compose.yml
Normal file
17
pass-batch/docker-compose.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mysql:
|
||||
container_name: mysql_local
|
||||
image: mysql:8.0.30
|
||||
volumes:
|
||||
- ./db/conf.d:/etc/mysql/conf.d
|
||||
- ./db/initdb.d:/docker-entrypoint-initdb.d
|
||||
ports:
|
||||
- "13306:3306"
|
||||
environment:
|
||||
- MYSQL_DATABASE=pass_local
|
||||
- MYSQL_USER=pass_local_user
|
||||
- MYSQL_PASSWORD=test1234
|
||||
- MYSQL_ROOT_PASSWORD=test1234
|
||||
- TZ=Asia/Seoul
|
||||
Reference in New Issue
Block a user