MOPC-App/prisma/seed-jury-demo.sql

96 lines
3.2 KiB
MySQL
Raw Permalink Normal View History

-- Create demo jury member
INSERT INTO "User" (id, email, name, role, status, "passwordHash", "mustSetPassword", "passwordSetAt", "onboardingCompletedAt", "expertiseTags", "notificationPreference", "createdAt", "updatedAt")
VALUES (
'demo-jury-member-001',
'jury.demo@monaco-opc.com',
'Dr. Marie Laurent',
'JURY_MEMBER',
'ACTIVE',
'$2b$12$xUQpxLay9.0CJ08GvXrjm.yls.bp0Yeaa4TF5b4kLsIJGLrVMCVZ.',
false,
NOW(),
NOW(),
ARRAY['Marine Biology', 'Ocean Conservation', 'Sustainable Innovation'],
'EMAIL',
NOW(),
NOW()
)
ON CONFLICT (email) DO UPDATE SET
"passwordHash" = EXCLUDED."passwordHash",
"mustSetPassword" = false,
status = 'ACTIVE',
"onboardingCompletedAt" = NOW(),
"updatedAt" = NOW();
-- Get the user ID
DO $$
DECLARE
jury_id TEXT;
round_id TEXT;
proj RECORD;
form_exists BOOLEAN;
BEGIN
SELECT id INTO jury_id FROM "User" WHERE email = 'jury.demo@monaco-opc.com';
RAISE NOTICE 'Jury user ID: %', jury_id;
-- Get round
SELECT id INTO round_id FROM "Round" WHERE slug = 'mopc-2026-round-1';
RAISE NOTICE 'Round ID: %', round_id;
IF round_id IS NULL THEN
RAISE EXCEPTION 'Round not found!';
END IF;
-- Open voting window
UPDATE "Round" SET
status = 'ACTIVE',
"votingStartAt" = NOW() - INTERVAL '7 days',
"votingEndAt" = NOW() + INTERVAL '30 days'
WHERE id = round_id;
RAISE NOTICE 'Voting window opened';
-- Assign 8 projects
FOR proj IN
SELECT id, title FROM "Project" WHERE "roundId" = round_id ORDER BY "createdAt" DESC LIMIT 8
LOOP
INSERT INTO "Assignment" (id, "userId", "projectId", "roundId", method, "isRequired", "isCompleted", "createdAt")
VALUES (
'demo-assign-' || substr(proj.id, 1, 15),
jury_id,
proj.id,
round_id,
'MANUAL',
true,
false,
NOW()
)
ON CONFLICT ("userId", "projectId", "roundId") DO NOTHING;
RAISE NOTICE 'Assigned: %', proj.title;
END LOOP;
-- Check if evaluation form exists
SELECT EXISTS(SELECT 1 FROM "EvaluationForm" WHERE "roundId" = round_id) INTO form_exists;
IF NOT form_exists THEN
INSERT INTO "EvaluationForm" (id, "roundId", name, "isActive", "criteriaJson", "createdAt", "updatedAt")
VALUES (
'demo-eval-form-001',
round_id,
'Round 1 Evaluation',
true,
'[{"id":"innovation","label":"Innovation & Originality","description":"How innovative is the proposed solution?","scale":10,"weight":25,"required":true},{"id":"feasibility","label":"Technical Feasibility","description":"Is the solution technically viable?","scale":10,"weight":25,"required":true},{"id":"impact","label":"Environmental Impact","description":"What is the potential positive impact on ocean health?","scale":10,"weight":30,"required":true},{"id":"team","label":"Team Capability","description":"Does the team have the skills to execute?","scale":10,"weight":20,"required":true}]'::jsonb,
NOW(),
NOW()
);
RAISE NOTICE 'Created evaluation form';
ELSE
RAISE NOTICE 'Evaluation form already exists';
END IF;
RAISE NOTICE '========================================';
RAISE NOTICE 'Setup complete!';
RAISE NOTICE 'Email: jury.demo@monaco-opc.com';
RAISE NOTICE 'Password: JuryDemo2026!';
RAISE NOTICE '========================================';
END $$;