Repository navigation
Expand file tree
/
Copy pathseed-demo-data.sql
More file actions
166 lines (153 loc) Β· 9.6 KB
/
Copy pathseed-demo-data.sql
File metadata and controls
166 lines (153 loc) Β· 9.6 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
-- HoneyRest local demo data
-- Safe to run repeatedly. It only owns rows prefixed with DEMO- and demo.review*@honeyrest.local.
START TRANSACTION;
INSERT INTO `user` (
created_at, updated_at, email, password_hash, social_type, social_id,
name, phone, marketing_agree, point, role, status, is_verified
)
VALUES
(NOW(6), NOW(6), 'demo.review01@honeyrest.local', NULL, 'DEMO', 'demo-review-01', 'μ¬ννλ λ―Όμ§', '01000001001', b'0', 0, 'USER', 'ACTIVE', b'1'),
(NOW(6), NOW(6), 'demo.review02@honeyrest.local', NULL, 'DEMO', 'demo-review-02', 'μ£Όλ§μ¬νκ°', '01000001002', b'0', 0, 'USER', 'ACTIVE', b'1'),
(NOW(6), NOW(6), 'demo.review03@honeyrest.local', NULL, 'DEMO', 'demo-review-03', 'ν¬λ μ€νΈλ¬λ²', '01000001003', b'0', 0, 'USER', 'ACTIVE', b'1'),
(NOW(6), NOW(6), 'demo.review04@honeyrest.local', NULL, 'DEMO', 'demo-review-04', 'μΌννλ', '01000001004', b'0', 0, 'USER', 'ACTIVE', b'1'),
(NOW(6), NOW(6), 'demo.review05@honeyrest.local', NULL, 'DEMO', 'demo-review-05', 'μ΄λ‘μ°μ±
', '01000001005', b'0', 0, 'USER', 'ACTIVE', b'1'),
(NOW(6), NOW(6), 'demo.review06@honeyrest.local', NULL, 'DEMO', 'demo-review-06', 'λ¬λΉμΊ νΌ', '01000001006', b'0', 0, 'USER', 'ACTIVE', b'1')
ON DUPLICATE KEY UPDATE
updated_at = VALUES(updated_at),
name = VALUES(name),
status = 'ACTIVE',
is_verified = b'1';
SET @demo_accommodation_id = (
SELECT accommodation_id FROM accommodation WHERE name = 'λΈλμ°λ' ORDER BY accommodation_id DESC LIMIT 1
);
SET @demo_room_id = (
SELECT room_id FROM room WHERE accommodation_id = @demo_accommodation_id ORDER BY room_id LIMIT 1
);
SET @demo_room_name = (SELECT name FROM room WHERE room_id = @demo_room_id);
SET @demo_accommodation_name = (SELECT name FROM accommodation WHERE accommodation_id = @demo_accommodation_id);
CREATE TEMPORARY TABLE demo_review_fixture (
seq INT PRIMARY KEY,
email VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
days_ago INT NOT NULL,
rating DECIMAL(3,2) NOT NULL,
cleanliness DECIMAL(3,2) NOT NULL,
service DECIMAL(3,2) NOT NULL,
facilities DECIMAL(3,2) NOT NULL,
location_score DECIMAL(3,2) NOT NULL,
like_count INT NOT NULL,
content TEXT NOT NULL,
reply TEXT NULL
);
INSERT INTO demo_review_fixture VALUES
(1, 'demo.review01@honeyrest.local', 86, 4.90, 5.00, 4.80, 4.90, 4.90, 18, 'μ¬μ§μμ λ³Έ λΆμκΈ°λ³΄λ€ μ€μ μ² μ λ§μ΄ λ μ’μμ΄μ. μΉ¨κ΅¬κ° ν¬κ·Όνκ³ κ°μ€λ μμ£Ό μ‘°μ©ν΄μ μ€λλ§μ νΉ μ¬μμ΅λλ€.', 'μ μ±μ€λ¬μ΄ νκΈ° κ°μ¬ν©λλ€. λ€μ λ°©λ¬Έλ νΈμνκ² μ€λΉν΄ λκ² μ΅λλ€.'),
(2, 'demo.review02@honeyrest.local', 79, 4.70, 4.80, 4.70, 4.60, 4.70, 11, '체ν¬μΈμ΄ λΉ λ₯΄κ³ μλ΄κ° μΉμ νμ΅λλ€. μμΉ¨μ μ°½λ¬Έμ μ΄μμ λ λ무 ν₯μ΄ λλ μ μ΄ νΉν μ’μμ΄μ.', NULL),
(3, 'demo.review03@honeyrest.local', 70, 5.00, 5.00, 5.00, 4.90, 5.00, 27, 'μ‘°μ©ν μ¬κ³ μΆμ΄μ μ ννλλ° μλ²½νμ΅λλ€. κ°μ€ λμ μ΄ νΈνκ³ μ£Όλ³ μ°μ±
μ½μ€λ κ°κΉμμ λΆλͺ¨λλ λ§μ‘±νμ
¨μ΄μ.', 'κ°μ‘± μ¬νμ μ’μ κΈ°μ΅μ λ릴 μ μμ΄ κΈ°μ©λλ€.'),
(4, 'demo.review04@honeyrest.local', 62, 4.60, 4.70, 4.80, 4.40, 4.50, 9, 'μ£Όμ°¨ 곡κ°μ΄ λλνκ³ κ°μ€μ΄ κΉλν΄μ. μ λ
μλ μ‘°λͺ
μ΄ λ°λ»ν΄μ μ¬μ§λ μμκ² λμμ΅λλ€.', NULL),
(5, 'demo.review05@honeyrest.local', 55, 4.80, 4.90, 4.70, 4.80, 4.80, 16, '침ꡬμ μμ€μ΄ κΉ¨λνκ³ νμν λΉνμ΄ μ μ€λΉλμ΄ μμμ΄μ. λ€μμλ μ΄ν μ΄μ λ¨Έλ¬Όκ³ μΆμ΅λλ€.', NULL),
(6, 'demo.review06@honeyrest.local', 48, 4.50, 4.60, 4.50, 4.50, 4.40, 7, 'κ°λ³κ² λ λ μ£Όλ§ μ¬νμ΄μλλ° κΈ°λ μ΄μμΌλ‘ νΈμνμ΅λλ€. λ¦μ 체ν¬μΈ λ¬Έμμλ λ΅λ³μ΄ λΉ¨λμ΄μ.', 'νΈμν μ£Όλ§μ΄ λμ
¨λ€λ λ€νμ
λλ€. λ€μ λ΅κ² μ΅λλ€.'),
(7, 'demo.review01@honeyrest.local', 39, 4.90, 4.90, 5.00, 4.80, 4.90, 21, 'λ λ²μ§Έ λ°©λ¬ΈμΈλ° μ¬μ ν κ΄λ¦¬κ° μ λμ΄ μλ€μ. μ²μ λ°λΌλ³΄λ©° λ§μλ μμΉ¨ 컀νΌκ° μ λ§ μ’μμ΅λλ€.', NULL),
(8, 'demo.review02@honeyrest.local', 31, 4.40, 4.50, 4.60, 4.20, 4.50, 5, 'κ°μ€μ΄ μλνκ³ μ§μλΆλ€μ΄ μΉμ νμ΄μ. μ£Όλ³μ΄ μ‘°μ©ν΄μ νΌμ μ¬κΈ°μλ λΆλ΄ μμμ΅λλ€.', NULL),
(9, 'demo.review03@honeyrest.local', 24, 4.80, 4.80, 4.90, 4.70, 4.80, 14, 'μμ΄μ ν¨κ» κ°λλ° κ°μ€μ΄ λκ³ μμ ν΄μ μ’μμ΄μ. μμ° μ μμλ₯Ό μ°Ύλ κ°μ‘±μκ² μΆμ²ν©λλ€.', NULL),
(10, 'demo.review04@honeyrest.local', 17, 4.70, 4.80, 4.70, 4.60, 4.70, 10, 'μ 체μ μΌλ‘ μ°¨λΆνκ³ μ λλ λλμ
λλ€. μμ½λΆν° 체ν¬μμκΉμ§ μλ΄κ° λͺ
νν΄μ νΈνμ΄μ.', NULL),
(11, 'demo.review05@honeyrest.local', 10, 5.00, 5.00, 4.90, 5.00, 5.00, 31, 'κΈ°λ
μΌ μ¬νμΌλ‘ λ°©λ¬Ένλλ° μ λ§ λ§μ‘±νμ΅λλ€. κ°μ€ 컨λμ
, μ λ§, μλΉμ€ λͺ¨λ νλ₯νμ΄μ.', 'μμ€ν λ μ λΈλμ°λλ₯Ό μ νν΄ μ£Όμ
μ κ°μ¬ν©λλ€.'),
(12, 'demo.review06@honeyrest.local', 4, 4.90, 5.00, 4.90, 4.80, 4.90, 23, 'λμ¬μμ λ©μ§ μμλ°λ μμ ν λ€λ₯Έ κ³³μ μ¨ κΈ°λΆμ΄μμ΄μ. μ¬λ°©λ¬Έ μμ¬ μμ΅λλ€.', NULL);
INSERT INTO reservation (
created_at, updated_at, user_id, room_id, accommodation_id, room_name,
reservation_number, check_in_date, check_out_date, guest_count,
guest_name, guest_phone, price, original_price, discount_amount,
status, special_requests, accommodation_name
)
SELECT
DATE_SUB(NOW(6), INTERVAL f.days_ago DAY), DATE_SUB(NOW(6), INTERVAL f.days_ago DAY),
u.user_id, @demo_room_id, @demo_accommodation_id, @demo_room_name,
CONCAT('DEMO-REVIEW-30-', LPAD(f.seq, 3, '0')),
DATE_SUB(CURDATE(), INTERVAL f.days_ago DAY),
DATE_ADD(DATE_SUB(CURDATE(), INTERVAL f.days_ago DAY), INTERVAL 1 DAY),
2, u.name, u.phone, 74000.00, 74000.00, 0.00,
'COMPLETED', 'λ‘컬 λ°λͺ¨ λ°μ΄ν°', @demo_accommodation_name
FROM demo_review_fixture f
JOIN `user` u ON u.email = f.email
WHERE @demo_accommodation_id IS NOT NULL AND @demo_room_id IS NOT NULL
ON DUPLICATE KEY UPDATE updated_at = VALUES(updated_at);
INSERT INTO review (
created_at, updated_at, reservation_id, user_id, accommodation_id, room_id,
rating, cleanliness_rating, service_rating, facilities_rating, location_rating,
content, reply, like_count, status
)
SELECT
DATE_SUB(NOW(6), INTERVAL f.days_ago DAY), DATE_SUB(NOW(6), INTERVAL f.days_ago DAY),
r.reservation_id, u.user_id, @demo_accommodation_id, @demo_room_id,
f.rating, f.cleanliness, f.service, f.facilities, f.location_score,
f.content, f.reply, f.like_count, 'PUBLISHED'
FROM demo_review_fixture f
JOIN `user` u ON u.email = f.email
JOIN reservation r ON r.reservation_number = CONCAT('DEMO-REVIEW-30-', LPAD(f.seq, 3, '0'))
WHERE NOT EXISTS (SELECT 1 FROM review existing WHERE existing.reservation_id = r.reservation_id);
-- Synchronize rows owned by this fixture when they already existed from an
-- earlier demo run.
UPDATE review rv
JOIN reservation r ON r.reservation_id = rv.reservation_id
JOIN demo_review_fixture f
ON r.reservation_number = CONCAT('DEMO-REVIEW-30-', LPAD(f.seq, 3, '0'))
JOIN `user` u ON u.email = f.email
SET rv.updated_at = DATE_SUB(NOW(6), INTERVAL f.days_ago DAY),
rv.user_id = u.user_id,
rv.accommodation_id = @demo_accommodation_id,
rv.room_id = @demo_room_id,
rv.rating = f.rating,
rv.cleanliness_rating = f.cleanliness,
rv.service_rating = f.service,
rv.facilities_rating = f.facilities,
rv.location_rating = f.location_score,
rv.content = f.content,
rv.reply = f.reply,
rv.like_count = f.like_count,
rv.status = 'PUBLISHED';
-- Make every active room searchable for the next 90 days without overwriting
-- prices that a host already configured.
INSERT IGNORE INTO price_calendar (room_id, date, price, created_at, updated_at, available_room)
SELECT
room.room_id,
DATE_ADD(CURDATE(), INTERVAL days.n DAY),
room.price,
NOW(6),
NOW(6),
room.total_rooms
FROM room
CROSS JOIN (
SELECT ones.n + tens.n * 10 AS n
FROM
(SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) ones
CROSS JOIN
(SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8) tens
) days
WHERE room.status = 'ACTIVE';
-- Keep denormalized list values consistent with the current room/review data.
UPDATE accommodation a
JOIN (
SELECT accommodation_id, MIN(price) AS min_price
FROM room
WHERE status = 'ACTIVE'
GROUP BY accommodation_id
) room_price ON room_price.accommodation_id = a.accommodation_id
SET a.min_price = room_price.min_price;
UPDATE accommodation a
JOIN (
SELECT accommodation_id, ROUND(AVG(rating), 1) AS average_rating
FROM review
WHERE status = 'PUBLISHED'
GROUP BY accommodation_id
) review_rating ON review_rating.accommodation_id = a.accommodation_id
SET a.rating = review_rating.average_rating;
-- Correct the known Hongcheon demo accommodation region only when the address
-- and target hierarchy match, so the statement stays safe to rerun.
UPDATE accommodation a
JOIN region main_region ON main_region.region_id = a.main_region_id
JOIN region target_region
ON target_region.parent_id = main_region.region_id
AND target_region.name = 'νμ²κ΅°'
SET a.sub_region_id = target_region.region_id
WHERE a.name = 'μ²μκΈλ¨ν'
AND a.address LIKE '%νμ²κ΅°%';
DROP TEMPORARY TABLE demo_review_fixture;
COMMIT;