You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
896 B
Go
39 lines
896 B
Go
package storage
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
)
|
|
|
|
type RuntimeConfigStore struct {
|
|
pool *pgxpool.Pool
|
|
}
|
|
|
|
func NewRuntimeConfigStore(pool *pgxpool.Pool) *RuntimeConfigStore {
|
|
return &RuntimeConfigStore{pool: pool}
|
|
}
|
|
|
|
func (s *RuntimeConfigStore) LoadRuntimeConfigPayload(ctx context.Context) ([]byte, error) {
|
|
var payload []byte
|
|
err := s.pool.QueryRow(ctx, `SELECT payload FROM runtime_config WHERE id = TRUE`).Scan(&payload)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("load runtime config payload: %w", err)
|
|
}
|
|
return payload, nil
|
|
}
|
|
|
|
func (s *RuntimeConfigStore) SaveRuntimeConfigPayload(ctx context.Context, payload []byte) error {
|
|
_, err := s.pool.Exec(ctx, `
|
|
UPDATE runtime_config
|
|
SET payload = $1::jsonb, updated_at = now()
|
|
WHERE id = TRUE
|
|
`, payload)
|
|
if err != nil {
|
|
return fmt.Errorf("save runtime config payload: %w", err)
|
|
}
|
|
return nil
|
|
}
|
|
|