57 lines
1.9 KiB
JavaScript
57 lines
1.9 KiB
JavaScript
import { sqliteTable, sqliteView, integer, text, primaryKey } from 'drizzle-orm/sqlite-core';
|
|
import { sql } from 'drizzle-orm';
|
|
|
|
export const prefixes = sqliteTable('prefixes', {
|
|
name: text('name').primaryKey(),
|
|
color: text('color'),
|
|
weight: integer('weight').default(0)
|
|
});
|
|
|
|
export const tickets = sqliteTable('tickets', {
|
|
prefix: text('prefix'),
|
|
t_id: integer('t_id'),
|
|
first_name: text('first_name').default(''),
|
|
last_name: text('last_name').default(''),
|
|
phone_number: text('phone_number').default(''),
|
|
preference: text('preference').default('CALL')
|
|
}, (table) => [
|
|
primaryKey({columns: [table.prefix, table.t_id]})
|
|
]);
|
|
|
|
export const baskets = sqliteTable('baskets', {
|
|
prefix: text('prefix'),
|
|
b_id: integer('b_id'),
|
|
description: text('description').default(''),
|
|
donors: text('donors').default(''),
|
|
winning_ticket: integer('winning_ticket').default(0)
|
|
}, (table) => [
|
|
primaryKey({columns: [table.prefix, table.b_id]})
|
|
]);
|
|
|
|
export const combined = sqliteView('combined', {
|
|
prefix: text('prefix'),
|
|
b_id: integer('b_id'),
|
|
winning_ticket: integer('winning_ticket'),
|
|
winner: text('winner')
|
|
}).as(
|
|
sql`SELECT b.prefix, b.b_id, b.winning_ticket, CONCAT(t.last_name, ', ', t.first_name) AS winner
|
|
FROM baskets b LEFT JOIN tickets t
|
|
ON b.prefix = t.prefix AND b.winning_ticket = t.t_id
|
|
ORDER BY b.prefix, b.b_id`
|
|
);
|
|
|
|
export const report = sqliteView('report', {
|
|
prefix: text('prefix'),
|
|
winner_name: text('winner_name'),
|
|
phone_number: text('phone_number'),
|
|
preference: text('preference'),
|
|
b_id: integer('b_id'),
|
|
winning_ticket: integer('winning_ticket'),
|
|
description: text('description')
|
|
}).as(
|
|
sql`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`
|
|
); |