mirror of
https://github.com/AmanTahiliani/box-box.git
synced 2026-08-07 11:54:59 -04:00
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package store
|
|
|
|
import "database/sql"
|
|
|
|
// SessionDatasetCounts holds row counts for session-scoped datasets.
|
|
type SessionDatasetCounts struct {
|
|
Drivers int
|
|
Results int
|
|
StartingGrid int
|
|
Stints int
|
|
PitStops int
|
|
Positions int
|
|
RaceControl int
|
|
Weather int
|
|
Laps int
|
|
}
|
|
|
|
// CountSessionDatasets returns row counts for ingested session datasets.
|
|
func (s *Store) CountSessionDatasets(sessionKey int) (SessionDatasetCounts, error) {
|
|
var c SessionDatasetCounts
|
|
err := s.db.QueryRow(`
|
|
SELECT
|
|
(SELECT COUNT(*) FROM session_drivers WHERE session_key = ?),
|
|
(SELECT COUNT(*) FROM session_results WHERE session_key = ?),
|
|
(SELECT COUNT(*) FROM starting_grid WHERE session_key = ?),
|
|
(SELECT COUNT(*) FROM stints WHERE session_key = ?),
|
|
(SELECT COUNT(*) FROM pit_stops WHERE session_key = ?),
|
|
(SELECT COUNT(*) FROM positions WHERE session_key = ?),
|
|
(SELECT COUNT(*) FROM race_control WHERE session_key = ?),
|
|
(SELECT COUNT(*) FROM weather WHERE session_key = ?),
|
|
(SELECT COUNT(*) FROM laps WHERE session_key = ?)
|
|
`,
|
|
sessionKey, sessionKey, sessionKey, sessionKey, sessionKey,
|
|
sessionKey, sessionKey, sessionKey, sessionKey,
|
|
).Scan(
|
|
&c.Drivers,
|
|
&c.Results,
|
|
&c.StartingGrid,
|
|
&c.Stints,
|
|
&c.PitStops,
|
|
&c.Positions,
|
|
&c.RaceControl,
|
|
&c.Weather,
|
|
&c.Laps,
|
|
)
|
|
if err == sql.ErrNoRows {
|
|
return SessionDatasetCounts{}, nil
|
|
}
|
|
return c, err
|
|
}
|