From e6eb2807ae7c67d15fda958f25094a4609bf4a15 Mon Sep 17 00:00:00 2001 From: Dilan Gilluly Date: Sat, 27 Sep 2025 23:30:29 -0400 Subject: [PATCH] Added counts view to schema --- db/schema.sql | 10 +++++++++- webapp/src/lib/server/db/schema.js | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/db/schema.sql b/db/schema.sql index a6bb6d3..93a4c3c 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -38,4 +38,12 @@ CREATE VIEW IF NOT EXISTS report AS SELECT b.prefix, CONCAT(t.last_name, ", ", t.first_name) AS winner_name, t.phone_number, t.preference, b.b_id, b.winning_ticket, b.description FROM baskets b LEFT JOIN tickets t ON b.prefix = t.prefix AND b.winning_ticket = t.t_id -ORDER BY b.prefix, winner_name, t.phone_number, t.preference, b.b_id; \ No newline at end of file +ORDER BY b.prefix, winner_name, t.phone_number, t.preference, b.b_id; + +CREATE VIEW IF NOT EXISTS counts AS +SELECT prefix, COUNT(*) AS total_sold, COUNT(DISTINCT CONCAT(first_name,last_name,phone_number)) AS unique_sold +FROM tickets +GROUP BY prefix +UNION ALL +SELECT 'Total' AS prefix, COUNT(*) AS total_sold, COUNT(DISTINCT CONCAT(first_name,last_name,phone_number)) AS unique_sold +FROM tickets; \ No newline at end of file diff --git a/webapp/src/lib/server/db/schema.js b/webapp/src/lib/server/db/schema.js index 38de75c..ad84a88 100644 --- a/webapp/src/lib/server/db/schema.js +++ b/webapp/src/lib/server/db/schema.js @@ -54,4 +54,17 @@ export const report = sqliteView('report', { FROM baskets b LEFT JOIN tickets t ON b.prefix = t.prefix AND b.winning_ticket = t.t_id ORDER BY b.prefix, winner_name, t.phone_number, t.preference, b.b_id` -); \ No newline at end of file +); + +export const counts = sqliteView('counts', { + prefix: text('prefix'), + total_sold: integer('total_sold'), + unique_sold: integer('unique_sold') +}).as( + sql`SELECT prefix, COUNT(*) AS total_sold, COUNT(DISTINCT CONCAT(first_name,last_name,phone_number)) AS unique_sold + FROM tickets + GROUP BY prefix + UNION ALL + SELECT 'Total' AS prefix, COUNT(*) AS total_sold, COUNT(DISTINCT CONCAT(first_name,last_name,phone_number)) AS unique_sold + FROM tickets;` +) \ No newline at end of file