refactor(db): move the heard-IATA lookup into sqlc

This commit is contained in:
MrAlders0n
2026-10-02 16:53:32 -04:00
committed by MrAlders0n
parent b30668bac4
commit ec0ecd321b
5 changed files with 44 additions and 5 deletions
+1 -5
View File
@@ -79,11 +79,7 @@ func (s *Store) ListKnownIATAs(ctx context.Context) ([]string, error) {
// ListHeardIATAs returns the IATAs observers last reported from.
func (s *Store) ListHeardIATAs(ctx context.Context) ([]string, error) {
rows, err := s.pool.Query(ctx, `SELECT DISTINCT last_iata::text FROM observers WHERE last_iata IS NOT NULL ORDER BY 1`)
if err != nil {
return nil, err
}
return pgx.CollectRows(rows, pgx.RowTo[string])
return s.q.ListHeardIATAs(ctx)
}
func (s *Store) PruneZoneBoundaries(ctx context.Context, keep []string) ([]string, error) {
+3
View File
@@ -21,6 +21,9 @@ SELECT * FROM iata_codes WHERE iata = $1;
-- name: ListIATAs :many
SELECT * FROM iata_codes ORDER BY iata;
-- name: ListHeardIATAs :many
SELECT DISTINCT last_iata::text AS iata FROM observers WHERE last_iata IS NOT NULL ORDER BY 1;
-- name: UpsertIATADetails :exec
INSERT INTO iata_codes (iata, display_name, approx_lat, approx_lng)
VALUES ($1, $2, $3, $4)
+15
View File
@@ -1316,6 +1316,21 @@ func (mr *MockQuerierMockRecorder) ListDirtyRollupHours(ctx, limit any) *gomock.
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListDirtyRollupHours", reflect.TypeOf((*MockQuerier)(nil).ListDirtyRollupHours), ctx, limit)
}
// ListHeardIATAs mocks base method.
func (m *MockQuerier) ListHeardIATAs(ctx context.Context) ([]string, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListHeardIATAs", ctx)
ret0, _ := ret[0].([]string)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListHeardIATAs indicates an expected call of ListHeardIATAs.
func (mr *MockQuerierMockRecorder) ListHeardIATAs(ctx any) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListHeardIATAs", reflect.TypeOf((*MockQuerier)(nil).ListHeardIATAs), ctx)
}
// ListIATAs mocks base method.
func (m *MockQuerier) ListIATAs(ctx context.Context) ([]db.IataCode, error) {
m.ctrl.T.Helper()
+1
View File
@@ -200,6 +200,7 @@ type Querier interface {
// Only complete hours whose raw rows are still intact can be re-rolled. Queued missing hours
// wait: their first roll consumes the entry only if the entry predates its snapshot.
ListDirtyRollupHours(ctx context.Context, limit int32) ([]pgtype.Timestamptz, error)
ListHeardIATAs(ctx context.Context) ([]string, error)
ListIATAs(ctx context.Context) ([]IataCode, error)
// Only one branch runs. Keep the IATA range ordered by the composite index:
// generic plans can otherwise prefer scanning the global timestamp index.
+24
View File
@@ -2912,6 +2912,30 @@ func (q *Queries) ListChannelsAfter(ctx context.Context, arg ListChannelsAfterPa
return items, nil
}
const listHeardIATAs = `-- name: ListHeardIATAs :many
SELECT DISTINCT last_iata::text AS iata FROM observers WHERE last_iata IS NOT NULL ORDER BY 1
`
func (q *Queries) ListHeardIATAs(ctx context.Context) ([]string, error) {
rows, err := q.db.Query(ctx, listHeardIATAs)
if err != nil {
return nil, err
}
defer rows.Close()
items := []string{}
for rows.Next() {
var iata string
if err := rows.Scan(&iata); err != nil {
return nil, err
}
items = append(items, iata)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const listIATAs = `-- name: ListIATAs :many
SELECT iata, display_name, approx_lat, approx_lng, added_at, border FROM iata_codes ORDER BY iata
`