-- Development data. Apply with: -- psql "$DATABASE_URL" -f db/seed.sql BEGIN; INSERT INTO public.users (id, external_id, firstname, "name", email, oidc_sub, admin) VALUES (1, '100001', 'Alice', 'Martin', 'alice.martin@epfl.ch', 'oidc-sub-alice', TRUE), (2, '100002', 'Bob', 'Dupont', 'bob.dupont@epfl.ch', 'oidc-sub-bob', FALSE), (3, NULL, 'Chloé', 'Favre', 'chloe.favre@epfl.ch', 'oidc-sub-chloe', FALSE) ON CONFLICT DO NOTHING; -- Units are Whiskey's "groups". In real life the rows are created on the fly at -- login; these are placeholders for development. INSERT INTO public.units ("name") VALUES ('agepoly'), ('clic'), ('S4S'), ('Balélec') ON CONFLICT ("name") DO NOTHING; -- Resolved by name so the seed never depends on generated ids INSERT INTO public.units_users (user_id, unit_id) SELECT membership.user_id, u.id FROM (VALUES (1, 'agepoly'), (2, 'agepoly'), (2, 'clic'), (1, 'S4S'), (1, 'Balélec'), (3, 'clic') ) AS membership (user_id, unit_name) JOIN public.units u ON u."name" = membership.unit_name ON CONFLICT DO NOTHING; INSERT INTO public.bikes (id, "name", key_number, key_quantity, drivetrain, battery, "size", status) VALUES (1, '1000', 'K-1042', 2, 'Shimano Nexus 8', 'BAT-A12', 'large', 'in_service'), (2, '2000', 'K-1043', 2, 'Shimano Nexus 8', 'BAT-A13', 'large', 'in_service'), (3, '3000', 'K-1044', 1, 'Rohloff Speedhub', NULL, 'small', 'out_of_service'), (4, '4000', 'K-1042', 2, 'Shimano Nexus 8', 'BAT-A12', 'small', 'in_service'), (5, '5000', 'K-1043', 2, 'Shimano Nexus 8', 'BAT-A13', 'small', 'in_service') ON CONFLICT DO NOTHING; -- Reservations across the current week, one per status, so the admin page and -- the calendar always have something to show. Times are relative to `now()`. INSERT INTO public.reservations (id, unit_id, start_time, end_time, requester_id, telegram, "description", linka_emails, status) SELECT r.id, u.id, r.start_time, r.end_time, r.requester_id, r.telegram, r."description", r.linka_emails, r.status FROM (VALUES (1, 'agepoly', date_trunc('day', now()) - interval '1 day' + interval '8 hours', date_trunc('day', now()) + interval '1 day' + interval '18 hours', 1, '@alice_martin', 'Transport du matériel pour la rentrée', ARRAY['alice.martin@epfl.ch'], 'ongoing'::reservation_status), (2, 'clic', date_trunc('day', now()) + interval '1 day' + interval '9 hours', date_trunc('day', now()) + interval '2 days' + interval '17 hours', 3, '@chloe_favre', 'Déménagement du stock de la commission', ARRAY['chloe.favre@epfl.ch'], 'approved'::reservation_status), (3, 'agepoly', date_trunc('day', now()) + interval '3 days' + interval '10 hours', date_trunc('day', now()) + interval '3 days' + interval '19 hours', 2, '@bob_dupont', 'Livraison des boissons pour la soirée', ARRAY['bob.dupont@epfl.ch','alice.martin@epfl.ch'], 'requested'::reservation_status), (4, 'clic', date_trunc('day', now()) + interval '4 days' + interval '7 hours', date_trunc('day', now()) + interval '4 days' + interval '12 hours', 3, '@chloe_favre', 'Récupération de matériel informatique', ARRAY['chloe.favre@epfl.ch'], 'requested'::reservation_status), (5, 'agepoly', date_trunc('day', now()) - interval '20 days' + interval '9 hours', date_trunc('day', now()) - interval '19 days' + interval '18 hours', 1, '@alice_martin', 'Ancienne sortie, archivée', ARRAY['alice.martin@epfl.ch'], 'archived'::reservation_status), (6, 'clic', date_trunc('day', now()) + interval '6 days' + interval '14 hours', date_trunc('day', now()) + interval '6 days' + interval '18 hours', 2, '@bob_dupont', 'Annulée faute de conducteur', ARRAY['bob.dupont@epfl.ch'], 'cancelled'::reservation_status) ) AS r (id, unit_name, start_time, end_time, requester_id, telegram, "description", linka_emails, status) JOIN public.units u ON u."name" = r.unit_name ON CONFLICT DO NOTHING; INSERT INTO public.reservations_users (reservation_id, user_id) VALUES (1, 1), (1, 2), (2, 3), (3, 2), (3, 1), (4, 3), (5, 1), (6, 2) ON CONFLICT DO NOTHING; INSERT INTO public.reservations_bikes (reservation_id, bike_id) VALUES (1, 1), (1, 2), (2, 3), (3, 1), (3, 4), (4, 2), (5, 5), (6, 4) ON CONFLICT DO NOTHING; -- Keep the sequences in sync with the explicit ids inserted above SELECT setval('public.units_id_seq', (SELECT COALESCE(MAX(id), 1) FROM public.units)); SELECT setval('public.users_id_seq', (SELECT COALESCE(MAX(id), 1) FROM public.users)); SELECT setval('public.bikes_id_seq', (SELECT COALESCE(MAX(id), 1) FROM public.bikes)); SELECT setval('public.reservations_id_seq', (SELECT COALESCE(MAX(id), 1) FROM public.reservations)); COMMIT;