feat: add party-size queueing and call modes
This commit is contained in:
4
server/migrations/000009_public_visitor_actor.down.sql
Normal file
4
server/migrations/000009_public_visitor_actor.down.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
DELETE FROM users AS public_user
|
||||
WHERE public_user.username = 'public-visitor'
|
||||
AND NOT EXISTS (SELECT 1 FROM queue_tickets WHERE created_by = public_user.id)
|
||||
AND NOT EXISTS (SELECT 1 FROM idempotency_keys WHERE user_id = public_user.id);
|
||||
3
server/migrations/000009_public_visitor_actor.up.sql
Normal file
3
server/migrations/000009_public_visitor_actor.up.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
INSERT INTO users (username, password_hash, role, active)
|
||||
VALUES ('public-visitor', '!', 'STAFF', false)
|
||||
ON CONFLICT (username) DO NOTHING;
|
||||
@@ -0,0 +1,5 @@
|
||||
ALTER TABLE projects
|
||||
DROP CONSTRAINT IF EXISTS projects_experienced_people_start_check;
|
||||
|
||||
ALTER TABLE projects
|
||||
DROP COLUMN IF EXISTS experienced_people_start;
|
||||
6
server/migrations/000010_experienced_people_start.up.sql
Normal file
6
server/migrations/000010_experienced_people_start.up.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
ALTER TABLE projects
|
||||
ADD COLUMN experienced_people_start integer NOT NULL DEFAULT 0;
|
||||
|
||||
ALTER TABLE projects
|
||||
ADD CONSTRAINT projects_experienced_people_start_check
|
||||
CHECK (experienced_people_start BETWEEN 0 AND 1000000000);
|
||||
34
server/migrations/000011_party_size_and_call_modes.down.sql
Normal file
34
server/migrations/000011_party_size_and_call_modes.down.sql
Normal file
@@ -0,0 +1,34 @@
|
||||
ALTER TABLE call_batches
|
||||
DROP CONSTRAINT IF EXISTS call_batches_people_count_check,
|
||||
DROP CONSTRAINT IF EXISTS call_batches_ticket_count_check,
|
||||
DROP CONSTRAINT IF EXISTS call_batches_requested_count_check,
|
||||
DROP CONSTRAINT IF EXISTS call_batches_call_mode_check;
|
||||
|
||||
ALTER TABLE call_batches
|
||||
DROP COLUMN IF EXISTS people_count,
|
||||
DROP COLUMN IF EXISTS ticket_count,
|
||||
DROP COLUMN IF EXISTS requested_count,
|
||||
DROP COLUMN IF EXISTS call_mode;
|
||||
|
||||
ALTER TABLE queue_tickets
|
||||
DROP CONSTRAINT IF EXISTS queue_tickets_party_size_check;
|
||||
|
||||
ALTER TABLE queue_tickets
|
||||
DROP COLUMN IF EXISTS party_size;
|
||||
|
||||
ALTER TABLE projects
|
||||
DROP CONSTRAINT IF EXISTS projects_party_size_range_check,
|
||||
DROP CONSTRAINT IF EXISTS projects_min_party_size_check,
|
||||
DROP CONSTRAINT IF EXISTS projects_call_people_default_limit_check,
|
||||
DROP CONSTRAINT IF EXISTS projects_max_call_people_count_check,
|
||||
DROP CONSTRAINT IF EXISTS projects_call_ticket_default_limit_check,
|
||||
DROP CONSTRAINT IF EXISTS projects_max_call_ticket_count_check,
|
||||
DROP CONSTRAINT IF EXISTS projects_call_mode_check;
|
||||
|
||||
ALTER TABLE projects
|
||||
DROP COLUMN IF EXISTS max_party_size,
|
||||
DROP COLUMN IF EXISTS min_party_size,
|
||||
DROP COLUMN IF EXISTS max_call_people_count,
|
||||
DROP COLUMN IF EXISTS default_call_people_count,
|
||||
DROP COLUMN IF EXISTS max_call_ticket_count,
|
||||
DROP COLUMN IF EXISTS call_mode;
|
||||
59
server/migrations/000011_party_size_and_call_modes.up.sql
Normal file
59
server/migrations/000011_party_size_and_call_modes.up.sql
Normal file
@@ -0,0 +1,59 @@
|
||||
ALTER TABLE projects
|
||||
ADD COLUMN call_mode varchar(16) NOT NULL DEFAULT 'BOTH',
|
||||
ADD COLUMN max_call_ticket_count integer NOT NULL DEFAULT 100,
|
||||
ADD COLUMN default_call_people_count integer NOT NULL DEFAULT 1,
|
||||
ADD COLUMN max_call_people_count integer NOT NULL DEFAULT 100,
|
||||
ADD COLUMN min_party_size integer NOT NULL DEFAULT 1,
|
||||
ADD COLUMN max_party_size integer NOT NULL DEFAULT 10;
|
||||
|
||||
ALTER TABLE projects
|
||||
ADD CONSTRAINT projects_call_mode_check
|
||||
CHECK (call_mode IN ('TICKET', 'PEOPLE', 'BOTH')),
|
||||
ADD CONSTRAINT projects_max_call_ticket_count_check
|
||||
CHECK (max_call_ticket_count BETWEEN 1 AND 10000),
|
||||
ADD CONSTRAINT projects_call_ticket_default_limit_check
|
||||
CHECK (call_batch_size <= max_call_ticket_count),
|
||||
ADD CONSTRAINT projects_max_call_people_count_check
|
||||
CHECK (max_call_people_count BETWEEN 1 AND 10000),
|
||||
ADD CONSTRAINT projects_call_people_default_limit_check
|
||||
CHECK (default_call_people_count BETWEEN 1 AND max_call_people_count),
|
||||
ADD CONSTRAINT projects_min_party_size_check
|
||||
CHECK (min_party_size BETWEEN 1 AND 10000),
|
||||
ADD CONSTRAINT projects_party_size_range_check
|
||||
CHECK (max_party_size BETWEEN min_party_size AND 10000);
|
||||
|
||||
ALTER TABLE queue_tickets
|
||||
ADD COLUMN party_size integer NOT NULL DEFAULT 1;
|
||||
|
||||
ALTER TABLE queue_tickets
|
||||
ADD CONSTRAINT queue_tickets_party_size_check
|
||||
CHECK (party_size BETWEEN 1 AND 10000);
|
||||
|
||||
ALTER TABLE call_batches
|
||||
ADD COLUMN call_mode varchar(16) NOT NULL DEFAULT 'TICKET',
|
||||
ADD COLUMN requested_count integer NOT NULL DEFAULT 1,
|
||||
ADD COLUMN ticket_count integer NOT NULL DEFAULT 1,
|
||||
ADD COLUMN people_count integer NOT NULL DEFAULT 1;
|
||||
|
||||
UPDATE call_batches AS batch
|
||||
SET ticket_count = totals.ticket_count,
|
||||
people_count = totals.people_count
|
||||
FROM (
|
||||
SELECT cbt.call_batch_id,
|
||||
count(*)::integer AS ticket_count,
|
||||
COALESCE(sum(ticket.party_size), 0)::integer AS people_count
|
||||
FROM call_batch_tickets AS cbt
|
||||
JOIN queue_tickets AS ticket ON ticket.id = cbt.ticket_id
|
||||
GROUP BY cbt.call_batch_id
|
||||
) AS totals
|
||||
WHERE totals.call_batch_id = batch.id;
|
||||
|
||||
ALTER TABLE call_batches
|
||||
ADD CONSTRAINT call_batches_call_mode_check
|
||||
CHECK (call_mode IN ('TICKET', 'PEOPLE')),
|
||||
ADD CONSTRAINT call_batches_requested_count_check
|
||||
CHECK (requested_count > 0),
|
||||
ADD CONSTRAINT call_batches_ticket_count_check
|
||||
CHECK (ticket_count > 0),
|
||||
ADD CONSTRAINT call_batches_people_count_check
|
||||
CHECK (people_count > 0);
|
||||
@@ -0,0 +1,6 @@
|
||||
ALTER TABLE projects
|
||||
DROP CONSTRAINT projects_batch_size_check;
|
||||
|
||||
ALTER TABLE projects
|
||||
ADD CONSTRAINT projects_batch_size_check
|
||||
CHECK (call_batch_size BETWEEN 1 AND 100);
|
||||
6
server/migrations/000012_expand_ticket_call_limit.up.sql
Normal file
6
server/migrations/000012_expand_ticket_call_limit.up.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
ALTER TABLE projects
|
||||
DROP CONSTRAINT projects_batch_size_check;
|
||||
|
||||
ALTER TABLE projects
|
||||
ADD CONSTRAINT projects_batch_size_check
|
||||
CHECK (call_batch_size BETWEEN 1 AND 10000);
|
||||
Reference in New Issue
Block a user