#29 pass: database setting

This commit is contained in:
haerong22
2022-12-23 01:41:16 +09:00
parent b0b5fbde6d
commit edeee8b68d
5 changed files with 160 additions and 0 deletions

5
pass-batch/Makefile Normal file
View File

@@ -0,0 +1,5 @@
db-up:
docker-compose up -d --force-recreate
db-down:
docker-compose down -v

View File

@@ -0,0 +1,5 @@
[client]
default-character-set = utf8mb4
[mysqld]
authentication-policy = mysql_native_password

View 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='통계';

View 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');

View 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