rara/packages/go/rag/resolver.go
toki fdc86c7ff4
Some checks are pending
ci / validate (push) Waiting to run
initial commit
2026-07-18 18:41:17 +09:00

53 lines
1.2 KiB
Go

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}
}