Initial commit of Descrybe v2 without local scratch artifacts.

Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
This commit is contained in:
2026-08-09 22:47:43 +02:00
commit 8580c996c3
1285 changed files with 325780 additions and 0 deletions
+109
View File
@@ -0,0 +1,109 @@
-- One-shot / re-runnable local cleanup for descrybe-v2.
-- Keeps: Platform Demo, A1 Slovenija, Guide Shopify, Guide WooCommerce
-- (matched case-insensitively by name).
-- Keeps plans: Free/Starter/Growth/Business/Enterprise + A1 + Platform Demo
-- + Legacy + archived Basic/Professional + Merkur trial (code/catalog).
-- Deletes orphan users that only belonged to removed companies.
-- Usage:
-- psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f scripts/cleanup-dev-tenants.sql
-- Never prints connection secrets.
BEGIN;
CREATE TEMP TABLE keep_companies ON COMMIT DROP AS
SELECT id, name
FROM companies
WHERE
lower(name) = 'platform demo'
OR lower(name) = 'a1 slovenija'
OR lower(name) LIKE '%shopify%'
OR lower(name) LIKE '%woocommerce%'
OR lower(name) ~ '(^|[^a-z0-9])woo([^a-z0-9]|$)'
OR (
lower(name) ~ '(^|[^a-z0-9])a1([^a-z0-9]|$)'
AND lower(name) NOT LIKE 'vars-page%'
)
OR (
lower(name) LIKE '%demo%'
AND lower(name) NOT LIKE '%auth smoke%'
);
DO $$
DECLARE
n int;
BEGIN
SELECT COUNT(*) INTO n FROM keep_companies;
IF n < 4 THEN
RAISE EXCEPTION 'keep_companies too small (%) - aborting cleanup', n;
END IF;
END $$;
CREATE TEMP TABLE delete_companies ON COMMIT DROP AS
SELECT c.id, c.name
FROM companies c
WHERE c.id NOT IN (SELECT id FROM keep_companies);
CREATE TEMP TABLE cleanup_stats (
key text PRIMARY KEY,
value bigint NOT NULL
) ON COMMIT DROP;
INSERT INTO cleanup_stats(key, value) VALUES
('companies_kept', (SELECT COUNT(*) FROM keep_companies)),
('companies_deleted', (SELECT COUNT(*) FROM delete_companies)),
('plans_before', (SELECT COUNT(*) FROM plans)),
('users_before', (SELECT COUNT(*) FROM users)),
('sessions_before', (SELECT COUNT(*) FROM sessions));
-- Opaque session store (token/data/expiry) — wipe so deleted-user cookies die.
DELETE FROM sessions;
DELETE FROM companies
WHERE id IN (SELECT id FROM delete_companies);
CREATE TEMP TABLE keep_users ON COMMIT DROP AS
SELECT u.id, u.email
FROM users u
WHERE
lower(u.email) IN (
'demo@descrybe.local',
'demo@descrybe.test',
'a1-primary@descrybe.local',
'guide-shopify@descrybe.local',
'guide-woocommerce@descrybe.local'
)
OR EXISTS (
SELECT 1 FROM memberships m WHERE m.user_id = u.id
);
DELETE FROM users
WHERE id NOT IN (SELECT id FROM keep_users);
CREATE TEMP TABLE keep_plans ON COMMIT DROP AS
SELECT p.id, p.name
FROM plans p
WHERE
lower(p.name) IN (
'free', 'starter', 'growth', 'business', 'enterprise',
'a1', 'platform demo', 'legacy',
'basic', 'professional', 'merkur trial'
)
OR EXISTS (
SELECT 1 FROM company_plans cp WHERE cp.plan_id = p.id
);
DELETE FROM plans
WHERE id NOT IN (SELECT id FROM keep_plans);
INSERT INTO cleanup_stats(key, value) VALUES
('plans_after', (SELECT COUNT(*) FROM plans)),
('companies_after', (SELECT COUNT(*) FROM companies)),
('users_after', (SELECT COUNT(*) FROM users)),
('sessions_after', (SELECT COUNT(*) FROM sessions));
SELECT key, value FROM cleanup_stats ORDER BY key;
SELECT id, name AS kept_company FROM keep_companies ORDER BY lower(name);
SELECT id, name AS kept_plan FROM plans ORDER BY id;
SELECT id, email AS kept_user FROM users ORDER BY email;
COMMIT;