forked from WHS-PentestingPlayground/Robotics
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.sql
More file actions
183 lines (157 loc) · 5.01 KB
/
Copy pathinit.sql
File metadata and controls
183 lines (157 loc) · 5.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
-- Oracle DB 초기화 스크립트 (gvenzl/oracle-free:slim용 - 개발 환경)
-- 테이블 생성 스크립트 (사용자는 APP_USER 환경변수로 자동 생성됨)
-- 개발용 계정: play / ground
-- gvenzl/oracle-free 이미지는 FREEPDB1 사용
ALTER SESSION SET CONTAINER = FREEPDB1;
-- 애플리케이션 사용자로 전환 (APP_USER 환경변수로 이미 생성됨)
ALTER SESSION SET CURRENT_SCHEMA = play;
-- 기존 테이블 삭제 (안전하게)
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE FILES CASCADE CONSTRAINTS';
EXCEPTION
WHEN OTHERS THEN NULL;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE COMMENTS CASCADE CONSTRAINTS';
EXCEPTION
WHEN OTHERS THEN NULL;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE BOARDS CASCADE CONSTRAINTS';
EXCEPTION
WHEN OTHERS THEN NULL;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE USERS CASCADE CONSTRAINTS';
EXCEPTION
WHEN OTHERS THEN NULL;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE PRODUCTS CASCADE CONSTRAINTS';
EXCEPTION
WHEN OTHERS THEN NULL;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP SEQUENCE USERS_SEQ';
EXCEPTION
WHEN OTHERS THEN NULL;
END;
/
BEGIN
EXECUTE IMMEDIATE 'DROP SEQUENCE PRODUCTS_SEQ';
EXCEPTION
WHEN OTHERS THEN NULL;
END;
/
-- USERS 테이블 생성 (schema.sql과 동일한 구조)
CREATE TABLE USERS (
ID NUMBER PRIMARY KEY,
USERNAME VARCHAR2(50) NOT NULL,
PASSWORD VARCHAR2(100) NOT NULL,
ROLE VARCHAR2(20) DEFAULT 'USER',
CREATED_AT TIMESTAMP(6)
);
-- USERS 테이블용 시퀀스 생성
CREATE SEQUENCE USERS_SEQ START WITH 1 INCREMENT BY 1;
-- USERS 테이블용 트리거 생성 (ID 자동 증가)
CREATE OR REPLACE TRIGGER USERS_TRG
BEFORE INSERT ON USERS
FOR EACH ROW
BEGIN
IF :NEW.ID IS NULL THEN
SELECT USERS_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END IF;
END;
/
-- BOARDS 테이블 생성 (schema.sql과 동일한 구조)
CREATE TABLE BOARDS (
ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
TITLE VARCHAR2(200),
CONTENT CLOB,
USER_ID NUMBER,
CREATED_AT TIMESTAMP,
IS_NOTICE NUMBER(1) DEFAULT 0
);
-- COMMENTS 테이블 생성
CREATE TABLE COMMENTS (
ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
BOARD_ID NUMBER,
USER_ID NUMBER,
CONTENT CLOB,
CREATED_AT TIMESTAMP
);
-- FILES 테이블 생성
CREATE TABLE FILES(
ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
BOARD_ID NUMBER,
FILE_NAME VARCHAR2(255),
FILE_PATH VARCHAR2(255),
UPLOADED_AT TIMESTAMP,
UPLOADED_BY NUMBER
);
-- PRODUCTS 테이블 생성
CREATE TABLE PRODUCTS (
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(100) NOT NULL,
PRICE NUMBER,
IMAGE_PATH VARCHAR2(255) NOT NULL,
DESCRIPTION VARCHAR2(1000),
CREATED_AT TIMESTAMP(6)
);
-- PRODUCTS 테이블용 시퀀스 생성
CREATE SEQUENCE PRODUCTS_SEQ START WITH 1 INCREMENT BY 1;
-- PRODUCTS 테이블용 트리거 생성 (ID 자동 증가)
CREATE OR REPLACE TRIGGER PRODUCTS_TRG
BEFORE INSERT ON PRODUCTS
FOR EACH ROW
BEGIN
IF :NEW.ID IS NULL THEN
SELECT PRODUCTS_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END IF;
END;
/
-- 시나리오용 고정 계정 생성
-- 관리자 계정 생성
INSERT INTO USERS (ID, USERNAME, PASSWORD, ROLE, CREATED_AT)
VALUES (1, 'admin', '85f455ba36624ed0f6a0751189f8e2b1', 'ADMIN', SYSTIMESTAMP);
-- 기업 회원 계정 생성
INSERT INTO USERS (ID, USERNAME, PASSWORD, ROLE, CREATED_AT)
VALUES (2, 'bob_edu', 'bed128365216c019988915ed3add75fb', 'BUSINESS', SYSTIMESTAMP);
-- 시나리오용 공지사항 생성 (관리자 ID 힌트 제공)
INSERT INTO BOARDS (TITLE, CONTENT, USER_ID, CREATED_AT, IS_NOTICE)
VALUES ('시스템 점검 안내',
'안녕하세요. 시스템 관리자입니다.<br>EduBot 제품 관련 정기 보안 점검을 실시합니다.<br>문의사항은 관리자에게 연락바랍니다.',
1,
SYSTIMESTAMP, 1);
-- 시퀀스 값 조정 (다음 일반 사용자는 ID 3부터 시작)
ALTER SEQUENCE USERS_SEQ RESTART START WITH 3;
INSERT INTO PRODUCTS (NAME, PRICE, IMAGE_PATH, DESCRIPTION, CREATED_AT)
VALUES (
'AlphaBot',
1500000,
'alphaBot.png',
'AlphaBot은 스마트 공장 자동화를 위한 지능형 운반 로봇입니다. 고성능 센서와 AI 기반 경로 최적화로 효율적인 물류 이동을 지원합니다.',
SYSTIMESTAMP
);
INSERT INTO PRODUCTS (NAME, PRICE, IMAGE_PATH, DESCRIPTION, CREATED_AT)
VALUES (
'CareBot',
1200000,
'careBot.png',
'CareBot은 병원 및 요양 시설에서 환자 케어를 돕는 서비스 로봇입니다. 음성 인식과 자율 주행 기능으로 안전하고 친근한 서비스를 제공합니다.',
SYSTIMESTAMP
);
INSERT INTO PRODUCTS (NAME, PRICE, IMAGE_PATH, DESCRIPTION, CREATED_AT)
VALUES (
'EduBot',
900000,
'eduBot.png',
'EduBot은 교육 현장에서 활용되는 인터랙티브 학습 로봇입니다. 다양한 콘텐츠와 상호작용으로 창의적이고 즐거운 학습 환경을 만듭니다.',
SYSTIMESTAMP
);
COMMIT;