diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index fed074a..c3ecf1c 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -1,6 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/scripts/AddIndex.sql b/scripts/AddIndex.sql new file mode 100644 index 0000000..8458b4c --- /dev/null +++ b/scripts/AddIndex.sql @@ -0,0 +1,91 @@ +create table academy +( + bid char(6) not null + primary key, + business_name varchar(100) not null, + business_owner varchar(50) not null, + business_number varchar(20) not null, + business_date datetime not null, + business_address varchar(200) not null, + business_contact varchar(15) not null, + uid varchar(70) not null +); + +create table payload +( + pid char(22) not null + primary key, + title varchar(100) not null, + subtitle varchar(100) null, + body varchar(255) not null, + alert_yn tinyint(1) default 1 not null, + category char(4) not null, + content text null +); + +create table push_cabinet +( + uid varchar(70) not null, + pid char(22) not null, + send_date datetime not null, + check_yn tinyint(1) default 0 not null, + primary key (uid, pid), + constraint fk_pushcabinet_pid_to_payload + foreign key (pid) references payload (pid) + on update cascade on delete cascade, + constraint fk_pushcabinet_uid_to_user + foreign key (uid) references user (uid) + on update cascade on delete cascade +); + + +ALTER TABLE payload + ADD COLUMN bid CHAR(6) NOT NULL DEFAULT '000000' AFTER pid +; + +ALTER TABLE payload + DROP PRIMARY KEY , + ADD PRIMARY KEY (bid, pid) +; + +ALTER TABLE payload + ADD CONSTRAINT fk_payload_bid_to_academy + FOREIGN KEY (bid) REFERENCES academy(bid) + ON UPDATE CASCADE ON DELETE CASCADE +; + + +# //------// +ALTER TABLE push_cabinet + ADD COLUMN bid CHAR(6) NOT NULL DEFAULT 'AA0000' AFTER uid +; + +ALTER TABLE push_cabinet + DROP PRIMARY KEY, + ADD PRIMARY KEY (bid, uid, pid) +; + + +ALTER TABLE push_cabinet + DROP FOREIGN KEY fk_pushcabinet_pid_to_payload +; + +ALTER TABLE push_cabinet + DROP FOREIGN KEY fk_pushcabinet_uid_to_user +; + +ALTER TABLE push_cabinet + ADD CONSTRAINT fk_pushcabinet_payload + FOREIGN KEY (bid, pid) REFERENCES payload(bid, pid) + ON UPDATE CASCADE ON DELETE CASCADE +; + + +ALTER TABLE push_cabinet + ADD CONSTRAINT fk_pushcabinet_bid_to_academy + FOREIGN KEY (bid) REFERENCES academy(bid) + ON UPDATE CASCADE ON DELETE CASCADE +; + + + diff --git a/scripts/Chat.sql b/scripts/Chat.sql new file mode 100644 index 0000000..d2ad44c --- /dev/null +++ b/scripts/Chat.sql @@ -0,0 +1,56 @@ +CREATE TABLE chat_room +( + cid CHAR(16) NOT NULL PRIMARY KEY, -- 채팅방 구분 코드: 6(bid) + 6(yyyyMMdd) + 4(숫자 카운트) + bid CHAR(6) NOT NULL, -- 학원 구분 코드 + name TEXT NOT NULL, -- 채팅방 이름 + type CHAR(4) NOT NULL, -- 채팅방 유형 (1:1, 그룹 등) + create_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 생성 일자 + open_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 오픈 일자 + close_date DATETIME, -- 중지 일자 (채팅방 종료 처리) + FOREIGN KEY (bid) REFERENCES academy (bid) ON DELETE CASCADE ON UPDATE CASCADE +); + +CREATE TABLE chat_join +( + cid CHAR(16) NOT NULL, -- 채팅방 구분 코드 + uid VARCHAR(70) NOT NULL, -- 사용자 구분 코드 + join_date DATETIME NOT NULL, -- 채팅방 입장 시간 + mid CHAR(36), -- 마지막 확인한 메시지 ID + is_notice BOOLEAN DEFAULT TRUE, -- 알림 설정 여부 + PRIMARY KEY (cid, uid), + FOREIGN KEY (cid) REFERENCES chat_room (cid) ON DELETE CASCADE ON UPDATE CASCADE, + FOREIGN KEY (uid) REFERENCES user (uid) ON DELETE CASCADE ON UPDATE CASCADE, + FOREIGN KEY (mid) REFERENCES chat_message (mid) ON UPDATE CASCADE +); + +CREATE TABLE chat_message +( + mid CHAR(36) NOT NULL PRIMARY KEY, -- 메시지 구분 코드(UUID) + cid CHAR(16) NOT NULL, -- 채팅방 구분 코드 + uid VARCHAR(70) NOT NULL, -- 사용자 구분 코드 + create_date DATETIME NOT NULL, -- 메시지 작성 일자 + content TEXT NOT NULL, -- 메시지 내용 + is_hidden BOOLEAN NOT NULL DEFAULT FALSE, -- 가리기 여부 + media_url TEXT, -- 첨부 파일 링크 + read_count INT NOT NULL DEFAULT 0, -- 읽은 사람 수 + blind BOOLEAN NOT NULL DEFAULT FALSE, -- 신고로 인해 블라인드 처리 여부 + check_report BOOLEAN NOT NULL DEFAULT FALSE, -- 신고 검토 여부 + FOREIGN KEY (cid) REFERENCES chat_room (cid) ON DELETE CASCADE ON UPDATE CASCADE, + FOREIGN KEY (uid) REFERENCES user (uid) ON DELETE CASCADE ON UPDATE CASCADE +); + +CREATE INDEX idx_chat_message_cid ON chat_message(cid); +CREATE INDEX idx_chat_message_cid_create_date ON chat_message(cid, create_date); +CREATE INDEX idx_chat_message_uid_cid ON chat_message(uid, cid); + +CREATE TABLE report_list +( + cid CHAR(16) NOT NULL, -- 채팅방 구분 코드 + uid VARCHAR(70) NOT NULL, -- 신고자 사용자 코드 + mid CHAR(36) NOT NULL, -- 신고된 메시지 ID + report TEXT, -- 신고 사유 + PRIMARY KEY (cid, uid, mid), + FOREIGN KEY (cid) REFERENCES chat_room (cid) ON DELETE CASCADE ON UPDATE CASCADE, + FOREIGN KEY (uid) REFERENCES user (uid) ON DELETE CASCADE ON UPDATE CASCADE, + FOREIGN KEY (mid) REFERENCES chat_message (mid) ON DELETE CASCADE ON UPDATE CASCADE +); diff --git a/scripts/Push.sql b/scripts/Push.sql new file mode 100644 index 0000000..8ba32cc --- /dev/null +++ b/scripts/Push.sql @@ -0,0 +1,117 @@ +CREATE TABLE payload ( + pid CHAR(22) NOT NULL PRIMARY KEY , + title VARCHAR(100) NOT NULL , + subtitle VARCHAR(100) , + body VARCHAR(255) NOT NULL , + alert_yn BOOLEAN NOT NULL DEFAULT TRUE, + category CHAR(4) NOT NULL , + content TEXT +); + + +CREATE TABLE push_cabinet ( + uid CHAR(6) NOT NULL , + pid CHAR(22) NOT NULL , + send_date DATETIME NOT NULL , + check_yn BOOLEAN NOT NULL DEFAULT FALSE, + PRIMARY KEY (uid, pid), + CONSTRAINT fk_pushcabinet_uid_to_user FOREIGN KEY (uid) + REFERENCES user(uid) + ON UPDATE CASCADE + ON DELETE CASCADE, + CONSTRAINT fk_pushcabinet_pid_to_payload FOREIGN KEY (pid) + REFERENCES payload(pid) + ON UPDATE CASCADE + ON DELETE CASCADE +); + + + +INSERT INTO payload(pid, title, subtitle, body, category, content) +VALUES ( + 'AP202503054Q81114002W7', + 'PUSH 확인 TEST', + 'PUSH 확인 TEST - SUB', + 'PUSH를 테스트하기 위해서 작성된 내용입니다. TEST 메시지입나다.', + 'PC00', + NULL + ); + + + +INSERT INTO payload(pid, title, subtitle, body, category, content) +VALUES ( + 'AP202503051S41516009J9', + 'PUSH 확인 TEST2', + NULL, + 'PUSH를 테스트하기 위해서 작성된 두번째 내용입니다. 두번째 TEST 메시지입나다.', + 'PC00', + NULL + ); + + + +ALTER TABLE push_cabinet DROP FOREIGN KEY fk_pushcabinet_uid_to_user; + +ALTER TABLE push_cabinet + ADD CONSTRAINT fk_pushcabinet_uid_to_user + FOREIGN KEY (uid) REFERENCES user(uid) + ON UPDATE CASCADE ON DELETE CASCADE; + + +CREATE TABLE log_push ( + bid CHAR(6) NOT NULL , + pid CHAR(22) NOT NULL , + create_date DATETIME NOT NULL , + modify_date DATETIME NOT NULL , + create_uid VARCHAR(70) NOT NULL , + modify_uid VARCHAR(70) NOT NULL , + PRIMARY KEY (bid, pid), + CONSTRAINT fk_logpush_to_payload FOREIGN KEY (bid, pid) + REFERENCES payload(bid, pid) + ON UPDATE CASCADE + ON DELETE CASCADE +); + + + + +SELECT cabinet.uid, cabinet.pid, cabinet.send_date, payload.title +FROM + (select push_cabinet.pid, push_cabinet.uid, push_cabinet.send_date FROM push_cabinet where uid = 'AMsean.kim20241201') As cabinet +inner JOIN + (select payload.title, payload.pid FROM payload) as payload +on cabinet.pid = payload.pid +order by send_date +; + + +CREATE TABLE push_cabinet +( + id INT AUTO_INCREMENT PRIMARY KEY, -- 대리 키로 추가 + uid VARCHAR(70) NOT NULL, + bid CHAR(6) DEFAULT 'AA0000' NOT NULL, + pid CHAR(22) NOT NULL, + send_date DATETIME NOT NULL, + check_yn TINYINT(1) DEFAULT 0 NOT NULL, + content TEXT, -- 커스텀 이벤트 내용 저장 (필요 시 TEXT나 VARCHAR로 조정) + + CONSTRAINT fk_pushcabinet_bid_to_academy + FOREIGN KEY (bid) REFERENCES academy (bid) + ON UPDATE CASCADE ON DELETE CASCADE, + CONSTRAINT fk_pushcabinet_payload + FOREIGN KEY (bid, pid) REFERENCES payload (bid, pid) + ON UPDATE CASCADE ON DELETE CASCADE +); + +-- 조회 성능 향상을 위해 pid 컬럼에 대한 인덱스 추가 (필요 시 uid, send_date 등의 인덱스도 고려) +CREATE INDEX idx_pushcabinet_pid ON push_cabinet (pid); + +ALTER TABLE push_cabinet +ADD CONSTRAINT fk_pushcabinet_bid_to_academy + FOREIGN KEY (bid) REFERENCES academy (bid) + ON UPDATE CASCADE ON DELETE CASCADE; +ALTER TABLE push_cabinet + ADD CONSTRAINT fk_pushcabinet_payload + FOREIGN KEY (bid, pid) REFERENCES payload (bid, pid) + ON UPDATE CASCADE ON DELETE CASCADE; \ No newline at end of file diff --git a/scripts/Token.sql b/scripts/Token.sql index cf2107b..e118e2d 100644 --- a/scripts/Token.sql +++ b/scripts/Token.sql @@ -6,4 +6,5 @@ CREATE TABLE token ( expire_date datetime not null , revoke_date datetime, constraint fk_token_uid_to_user foreign key (uid) references user (uid) on update cascade on delete cascade -); \ No newline at end of file +); + diff --git a/scripts/User.sql b/scripts/User.sql new file mode 100644 index 0000000..3d7bbe4 --- /dev/null +++ b/scripts/User.sql @@ -0,0 +1,18 @@ +CREATE TABLE api_header ( + specific_id VARCHAR(255) PRIMARY KEY NOT NULL , + connect_date DATETIME NOT NULL , + h_key CHAR(18) NOT NULL, + h_value TEXT NOT NULL +); + +# INSERT INTO api_header(specific_id, connect_date, h_key, h_value) +# VALUES (2025-03-19,'iOS_AM_Connect_Key',''); + +# INSERT INTO api_header(h_key, h_value) +# VALUES ('And_AM_Connect_Key',''); +# +# INSERT INTO api_header(h_key, h_value) +# VALUES ('Web_AM_Connect_Key',''); + + +SHOW TABLE STATUS WHERE Name = 'permission'; diff --git a/scripts/log.sql b/scripts/log.sql new file mode 100644 index 0000000..138231f --- /dev/null +++ b/scripts/log.sql @@ -0,0 +1,38 @@ +create table log_push +( + bid char(6) not null, + pid char(22) not null, + create_date datetime not null, + create_uid varchar(70) not null, + log text null, + lid int auto_increment + primary key +); + +create table log_user +( + bid char(6) not null, + pid char(22) not null, + create_date datetime not null, + create_uid varchar(70) not null, + log text null, + lid int auto_increment + primary key +); + + +create table log_project +( + lid int auto_increment primary key, + create_date datetime not null default NOW(), + log text null +); + +create table log_chat +( + lid int auto_increment primary key, + create_date datetime not null, + create_uid varchar(70) not null, + cid CHAR(16) NOT NULL, + log text null +); \ No newline at end of file