refactor: replace click tracker with direct spawn
This commit is contained in:
+26
-15
@@ -3,12 +3,12 @@ VALUES
|
||||
('User 1', 'secure_api_key_1'),
|
||||
('User 2', 'secure_api_key_2');
|
||||
|
||||
-- Create 200,000 links (100,000 per user)
|
||||
-- Create 20,000 links (10,000 per user)
|
||||
WITH RECURSIVE link_numbers(n) AS (
|
||||
SELECT 1
|
||||
UNION ALL
|
||||
SELECT n+1 FROM link_numbers
|
||||
LIMIT 200000
|
||||
LIMIT 20000
|
||||
)
|
||||
INSERT INTO links (user_id, slug, url)
|
||||
SELECT
|
||||
@@ -17,37 +17,44 @@ SELECT
|
||||
'https://sjdonado.com/page/' || n
|
||||
FROM link_numbers;
|
||||
|
||||
-- Create 200,000,000 clicks (1,000 per link)
|
||||
WITH RECURSIVE link_numbers(link_id) AS (
|
||||
SELECT id FROM links
|
||||
),
|
||||
click_batch(link_id, n) AS (
|
||||
SELECT link_id, 1 FROM link_numbers
|
||||
-- Create 1,000 clicks per link (20,000,000 total)
|
||||
-- Using batched approach for better performance
|
||||
CREATE TEMP TABLE link_ids AS SELECT id FROM links;
|
||||
|
||||
CREATE TEMP TABLE click_counts(link_id, count) AS
|
||||
WITH RECURSIVE counts(n) AS (
|
||||
SELECT 1
|
||||
UNION ALL
|
||||
SELECT link_id, n+1 FROM click_batch WHERE n < 1000
|
||||
SELECT n+1 FROM counts
|
||||
LIMIT 1000
|
||||
)
|
||||
SELECT l.id, c.n
|
||||
FROM link_ids l
|
||||
CROSS JOIN counts c;
|
||||
|
||||
-- Insert clicks from the count table
|
||||
INSERT INTO clicks (link_id, user_agent, browser, os, referer, country)
|
||||
SELECT
|
||||
link_id,
|
||||
CASE (n % 5)
|
||||
CASE (count % 5)
|
||||
WHEN 0 THEN 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
|
||||
WHEN 1 THEN 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)'
|
||||
WHEN 2 THEN 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_0)'
|
||||
WHEN 3 THEN 'Mozilla/5.0 (X11; Linux x86_64)'
|
||||
ELSE 'Mozilla/5.0 (Android 11; Mobile)'
|
||||
END,
|
||||
CASE (n % 3)
|
||||
CASE (count % 3)
|
||||
WHEN 0 THEN 'Chrome'
|
||||
WHEN 1 THEN 'Firefox'
|
||||
ELSE 'Safari'
|
||||
END,
|
||||
CASE (n % 4)
|
||||
CASE (count % 4)
|
||||
WHEN 0 THEN 'Windows'
|
||||
WHEN 1 THEN 'macOS'
|
||||
WHEN 2 THEN 'iOS'
|
||||
ELSE 'Android'
|
||||
END,
|
||||
CASE (n % 6)
|
||||
CASE (count % 6)
|
||||
WHEN 0 THEN 'https://sjdonado.com'
|
||||
WHEN 1 THEN 'https://donado.co'
|
||||
WHEN 2 THEN 'https://idonthavespotify.donado.co'
|
||||
@@ -55,7 +62,7 @@ SELECT
|
||||
WHEN 4 THEN 'https://github.com/sjdonado'
|
||||
ELSE NULL
|
||||
END,
|
||||
CASE (n % 10)
|
||||
CASE (count % 10)
|
||||
WHEN 0 THEN 'US'
|
||||
WHEN 1 THEN 'UK'
|
||||
WHEN 2 THEN 'Canada'
|
||||
@@ -67,4 +74,8 @@ SELECT
|
||||
WHEN 8 THEN 'India'
|
||||
ELSE 'China'
|
||||
END
|
||||
FROM click_batch;
|
||||
FROM click_counts;
|
||||
|
||||
-- Clean up
|
||||
DROP TABLE link_ids;
|
||||
DROP TABLE click_counts;
|
||||
|
||||
Reference in New Issue
Block a user