package rag import ( "context" "errors" "git.toki-labs.com/toki/rara/packages/go/database" "git.toki-labs.com/toki/rara/packages/go/database/dbgen" "github.com/google/uuid" "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgtype" ) type PostgreSQLReleaseResolver struct { queries *dbgen.Queries } func NewReleaseResolver(store *database.Store) ReleaseResolver { return &PostgreSQLReleaseResolver{queries: store.Queries} } func (resolver *PostgreSQLReleaseResolver) Resolve( ctx context.Context, projectID uuid.UUID, knowledgeBaseID uuid.UUID, alias string, ) (Release, error) { record, err := resolver.queries.GetActiveReleaseByAlias( ctx, dbgen.GetActiveReleaseByAliasParams{ ProjectID: pgUUID(projectID), KnowledgeBaseID: pgUUID(knowledgeBaseID), Alias: alias, }, ) if errors.Is(err, pgx.ErrNoRows) { return Release{}, ErrNotFound } if err != nil { return Release{}, err } return Release{ ID: uuid.UUID(record.ID.Bytes), Alias: record.Alias, Version: record.Version, RetrievalPolicy: record.RetrievalPolicy, GenerationPolicy: record.GenerationPolicy, }, nil } func pgUUID(value uuid.UUID) pgtype.UUID { return pgtype.UUID{Bytes: [16]byte(value), Valid: true} }