package catalog import ( "context" ) // Store is the persistence layer used by Service. The runtime uses // postgres.PgStore; tests use memoryStore (defined in catalog_test.go). type Store interface { // Load populates the in-memory cache at startup. Returns the full // snapshot: tracks (with waypoints and tags) and cars. Load(ctx context.Context) ([]TrackMeta, []CarMeta, error) // UpsertTrack inserts or updates a track along with its waypoints and // tags in a single transaction. UpsertTrack(ctx context.Context, t TrackMeta) error // DeleteTrack removes a track and all its waypoints / tags. DeleteTrack(ctx context.Context, id string) error // UpsertCar inserts or updates a car. UpsertCar(ctx context.Context, c CarMeta) error // DeleteCar removes a car by id. DeleteCar(ctx context.Context, id string) error // UpdateCarStats applies a partial mutation of read-mostly stats // fields on a car. Used by the race engine hooks. UpdateCarStats(ctx context.Context, id string, fn func(*CarMeta)) error }