diff --git a/src/lib/server/db/schema.ts b/src/lib/server/db/schema.ts index 1c8cc9b..2cc1ddf 100644 --- a/src/lib/server/db/schema.ts +++ b/src/lib/server/db/schema.ts @@ -2,7 +2,7 @@ import { sql, eq } from 'drizzle-orm'; import { integer, sqliteTable, text, sqliteView } from 'drizzle-orm/sqlite-core'; export const players = sqliteTable('players', { - id: integer('id').primaryKey({ autoIncrement: true }), + id: integer('players_id').primaryKey({ autoIncrement: true }), firstName: text('firstName').notNull(), lastName: text('lastName').notNull(), team: integer('team') @@ -12,25 +12,25 @@ export const players = sqliteTable('players', { }); export const teams = sqliteTable('teams', { - id: integer('id').primaryKey({ autoIncrement: true }), + id: integer('teams_id').primaryKey({ autoIncrement: true }), name: text('team_name').notNull(), color: text('color').notNull().default('white') }); export const divisions = sqliteTable('divisions', { - id: integer('id').primaryKey({ autoIncrement: true }), + id: integer('divisions_id').primaryKey({ autoIncrement: true }), name: text('div_name').notNull() }); export const scoringPresets = sqliteTable('scoringPresets', { - id: integer('id').primaryKey({ autoIncrement: true }), + id: integer('scoringPresets_id').primaryKey({ autoIncrement: true }), presetID: integer('preset').notNull(), placement: integer('placement').notNull().default(0), points: integer('points').notNull().default(0) }); export const eventTypes = sqliteTable('eventTypes', { - id: integer('id').primaryKey({ autoIncrement: true }), + id: integer('eventTypes_id').primaryKey({ autoIncrement: true }), name: text('event_name').notNull(), preset: integer('preset') .references(() => scoringPresets.presetID) @@ -38,7 +38,7 @@ export const eventTypes = sqliteTable('eventTypes', { }); export const registeredEvents = sqliteTable('registeredEvents', { - id: integer('id').primaryKey({ autoIncrement: true }), + id: integer('registeredEvents_id').primaryKey({ autoIncrement: true }), eventType: integer('event_type') .references(() => eventTypes.id) .notNull(), @@ -50,7 +50,7 @@ export const registeredEvents = sqliteTable('registeredEvents', { }); export const registeredPlayers = sqliteTable('registeredPlayers', { - id: integer('id').primaryKey({ autoIncrement: true }), + id: integer('registeredPlayers_id').primaryKey({ autoIncrement: true }), playerID: integer('player_registered') .references(() => players.id) .notNull(), @@ -61,7 +61,7 @@ export const registeredPlayers = sqliteTable('registeredPlayers', { }); export const mainLedger = sqliteTable('mainLedger', { - id: integer('id').primaryKey({ autoIncrement: true }), + id: integer('mainLedger_id').primaryKey({ autoIncrement: true }), timestamp: integer('ledger_timestamp', { mode: 'timestamp' }) .notNull() .default(sql`(unixepoch())`), @@ -71,7 +71,7 @@ export const mainLedger = sqliteTable('mainLedger', { }); export const scoreLedger = sqliteTable('scoresLedger', { - id: integer('id').primaryKey({ autoIncrement: true }), + id: integer('scoreLedger_id').primaryKey({ autoIncrement: true }), ledgerID: integer('ledger_address') .references(() => mainLedger.id) .notNull(), @@ -93,3 +93,37 @@ export const teamScoresView = sqliteView('teamScoresView').as((qb) => { .leftJoin(scoreLedger, eq(teams.id, scoreLedger.teamID)) .groupBy(teams.id, teams.name, teams.color); }); + +export const registeredEventsView = sqliteView('registeredEventsView').as((qb) => { + return qb + .select({ + eventId: registeredEvents.id, + eventName: eventTypes.name, + division: divisions.name, + state: registeredEvents.state, + timeCompleted: registeredEvents.timeCompleted + }) + .from(registeredEvents) + .innerJoin(eventTypes, eq(registeredEvents.eventType, eventTypes.id)) + .innerJoin(divisions, eq(registeredEvents.division, divisions.id)); +}); + +export const registeredEventPlayersView = sqliteView('registeredEventPlayersView').as((qb) => { + return qb + .select({ + playerId: players.id, + firstName: players.firstName, + lastName: players.lastName, + placement: registeredPlayers.placement, + eventId: registeredEvents.id, + eventName: eventTypes.name, + teamId: teams.id, + teamName: teams.name, + teamColor: teams.color + }) + .from(registeredPlayers) + .innerJoin(registeredEvents, eq(registeredPlayers.registeredEventID, registeredEvents.id)) + .innerJoin(eventTypes, eq(registeredEvents.eventType, eventTypes.id)) + .innerJoin(players, eq(registeredPlayers.playerID, players.id)) + .innerJoin(teams, eq(players.team, teams.id)); +});