48 lines
1.4 KiB
SQL
48 lines
1.4 KiB
SQL
-- 1. Generate 100 Users
|
|
-- Password is a bcrypt hash for "password123"
|
|
INSERT INTO "User" (email, name, display_name, password)
|
|
WITH RECURSIVE
|
|
cnt(n) AS (
|
|
SELECT 1
|
|
UNION ALL
|
|
SELECT n+1 FROM cnt WHERE n < 100
|
|
)
|
|
SELECT
|
|
'user' || n || '@example.com',
|
|
'user_' || n,
|
|
'User ' || n,
|
|
'$2b$10$EpjVIByL7WqitL96.t65he1usN8L6j0r6n/1q7R8U6O1Y2v6y/L2.' -- password123
|
|
FROM cnt;
|
|
|
|
-- 2. Generate 700 Parent Posts
|
|
-- Distributed across the 100 users
|
|
INSERT INTO "Post" (title, content, userId, createdAt)
|
|
WITH RECURSIVE
|
|
cnt(n) AS (
|
|
SELECT 1
|
|
UNION ALL
|
|
SELECT n+1 FROM cnt WHERE n < 700
|
|
)
|
|
SELECT
|
|
'Post Title #' || n,
|
|
'This is the body content for sample post number ' || n || '. It contains some placeholder text for testing purposes.',
|
|
(ABS(RANDOM()) % 100) + 1, -- Random userId between 1 and 100
|
|
datetime('now', '-' || (ABS(RANDOM()) % 365) || ' days') -- Random date in the last year
|
|
FROM cnt;
|
|
|
|
-- 3. Generate 200 Replies
|
|
-- Linked to random parent posts (IDs 1-700)
|
|
INSERT INTO "Post" (title, content, userId, parentId, createdAt)
|
|
WITH RECURSIVE
|
|
cnt(n) AS (
|
|
SELECT 1
|
|
UNION ALL
|
|
SELECT n+1 FROM cnt WHERE n < 200
|
|
)
|
|
SELECT
|
|
'Reply #' || n,
|
|
'I am replying to an existing post to test the self-relation logic.',
|
|
(ABS(RANDOM()) % 100) + 1, -- Random author
|
|
(ABS(RANDOM()) % 700) + 1, -- Random parent post ID
|
|
datetime('now', '-' || (ABS(RANDOM()) % 30) || ' days') -- Random date in last 30 days
|
|
FROM cnt;
|