// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.31.1 // source: awards.sql package dbgen import ( "context" "github.com/jackc/pgx/v5/pgtype" "github.com/shopspring/decimal" ) const awardsSyncMeta = `-- name: AwardsSyncMeta :one SELECT COUNT(*)::bigint AS total, COUNT(*) FILTER (WHERE is_galapagos)::bigint AS galapagos, MAX(synced_at) AS last_synced FROM usaspending_awards ` type AwardsSyncMetaRow struct { Total int64 `json:"total"` Galapagos int64 `json:"galapagos"` LastSynced interface{} `json:"last_synced"` } func (q *Queries) AwardsSyncMeta(ctx context.Context) (AwardsSyncMetaRow, error) { row := q.db.QueryRow(ctx, awardsSyncMeta) var i AwardsSyncMetaRow err := row.Scan(&i.Total, &i.Galapagos, &i.LastSynced) return i, err } const listAwardsByNaics = `-- name: ListAwardsByNaics :many SELECT generated_internal_id, award_id, recipient_name, recipient_uei, recipient_id, award_amount, awarding_agency, awarding_sub_agency, pop_start_date, pop_end_date, naics_code, naics_description, description, is_galapagos, raw, source, synced_at FROM usaspending_awards WHERE naics_code = ANY($1::text[]) AND NOT is_galapagos ORDER BY award_amount DESC NULLS LAST, generated_internal_id LIMIT $2::int ` type ListAwardsByNaicsParams struct { Naics []string `json:"naics"` Lim int32 `json:"lim"` } // Incumbents and similar awards for a NAICS, largest first (excludes Galapagos own awards). func (q *Queries) ListAwardsByNaics(ctx context.Context, arg ListAwardsByNaicsParams) ([]UsaspendingAward, error) { rows, err := q.db.Query(ctx, listAwardsByNaics, arg.Naics, arg.Lim) if err != nil { return nil, err } defer rows.Close() items := []UsaspendingAward{} for rows.Next() { var i UsaspendingAward if err := rows.Scan( &i.GeneratedInternalID, &i.AwardID, &i.RecipientName, &i.RecipientUei, &i.RecipientID, &i.AwardAmount, &i.AwardingAgency, &i.AwardingSubAgency, &i.PopStartDate, &i.PopEndDate, &i.NaicsCode, &i.NaicsDescription, &i.Description, &i.IsGalapagos, &i.Raw, &i.Source, &i.SyncedAt, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const listGalapagosAwards = `-- name: ListGalapagosAwards :many SELECT generated_internal_id, award_id, recipient_name, recipient_uei, recipient_id, award_amount, awarding_agency, awarding_sub_agency, pop_start_date, pop_end_date, naics_code, naics_description, description, is_galapagos, raw, source, synced_at FROM usaspending_awards WHERE is_galapagos ORDER BY award_amount DESC NULLS LAST, generated_internal_id LIMIT $1::int ` // Galapagos own past performance, largest first. func (q *Queries) ListGalapagosAwards(ctx context.Context, lim int32) ([]UsaspendingAward, error) { rows, err := q.db.Query(ctx, listGalapagosAwards, lim) if err != nil { return nil, err } defer rows.Close() items := []UsaspendingAward{} for rows.Next() { var i UsaspendingAward if err := rows.Scan( &i.GeneratedInternalID, &i.AwardID, &i.RecipientName, &i.RecipientUei, &i.RecipientID, &i.AwardAmount, &i.AwardingAgency, &i.AwardingSubAgency, &i.PopStartDate, &i.PopEndDate, &i.NaicsCode, &i.NaicsDescription, &i.Description, &i.IsGalapagos, &i.Raw, &i.Source, &i.SyncedAt, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const upsertAward = `-- name: UpsertAward :exec INSERT INTO usaspending_awards ( generated_internal_id, award_id, recipient_name, recipient_uei, recipient_id, award_amount, awarding_agency, awarding_sub_agency, pop_start_date, pop_end_date, naics_code, naics_description, description, is_galapagos, raw, source, synced_at ) VALUES ( $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, now() ) ON CONFLICT (generated_internal_id) DO UPDATE SET award_id = EXCLUDED.award_id, recipient_name = EXCLUDED.recipient_name, recipient_uei = EXCLUDED.recipient_uei, recipient_id = EXCLUDED.recipient_id, award_amount = EXCLUDED.award_amount, awarding_agency = EXCLUDED.awarding_agency, awarding_sub_agency = EXCLUDED.awarding_sub_agency, pop_start_date = EXCLUDED.pop_start_date, pop_end_date = EXCLUDED.pop_end_date, naics_code = EXCLUDED.naics_code, naics_description = EXCLUDED.naics_description, description = EXCLUDED.description, is_galapagos = EXCLUDED.is_galapagos OR usaspending_awards.is_galapagos, raw = EXCLUDED.raw, source = EXCLUDED.source, synced_at = now() ` type UpsertAwardParams struct { GeneratedInternalID string `json:"generated_internal_id"` AwardID string `json:"award_id"` RecipientName string `json:"recipient_name"` RecipientUei string `json:"recipient_uei"` RecipientID string `json:"recipient_id"` AwardAmount *decimal.Decimal `json:"award_amount"` AwardingAgency string `json:"awarding_agency"` AwardingSubAgency string `json:"awarding_sub_agency"` PopStartDate pgtype.Date `json:"pop_start_date"` PopEndDate pgtype.Date `json:"pop_end_date"` NaicsCode string `json:"naics_code"` NaicsDescription string `json:"naics_description"` Description string `json:"description"` IsGalapagos bool `json:"is_galapagos"` Raw []byte `json:"raw"` Source string `json:"source"` } // USASpending awards cache. Global public catalog (no organization_id, outside RLS): reads run off // the pool, writes come from the daily sync (cmd/awards-sync) as the migrator role. func (q *Queries) UpsertAward(ctx context.Context, arg UpsertAwardParams) error { _, err := q.db.Exec(ctx, upsertAward, arg.GeneratedInternalID, arg.AwardID, arg.RecipientName, arg.RecipientUei, arg.RecipientID, arg.AwardAmount, arg.AwardingAgency, arg.AwardingSubAgency, arg.PopStartDate, arg.PopEndDate, arg.NaicsCode, arg.NaicsDescription, arg.Description, arg.IsGalapagos, arg.Raw, arg.Source, ) return err }