nomadcode/internal/storage/store.go

56 lines
1.3 KiB
Go

package storage
import (
"context"
"encoding/json"
"github.com/jackc/pgx/v5/pgxpool"
"github.com/nomadcode/nomadcode-core/internal/db"
)
type Task = db.Task
type Store struct {
queries *db.Queries
}
func NewStore(pool *pgxpool.Pool) *Store {
return &Store{queries: db.New(pool)}
}
func (s *Store) CreateTask(ctx context.Context, title, source string, payload json.RawMessage) (db.Task, error) {
return s.queries.CreateTask(ctx, db.CreateTaskParams{
Title: title,
Source: source,
Payload: payload,
})
}
func (s *Store) GetTask(ctx context.Context, id string) (db.Task, error) {
return s.queries.GetTask(ctx, id)
}
func (s *Store) ListTasks(ctx context.Context, limit int32) ([]db.Task, error) {
return s.queries.ListTasks(ctx, limit)
}
func (s *Store) UpdateStatus(ctx context.Context, id, status string) (db.Task, error) {
return s.queries.UpdateTaskStatus(ctx, db.UpdateTaskStatusParams{
ID: id,
Status: status,
})
}
func (s *Store) CompleteTask(ctx context.Context, id string, result json.RawMessage) (db.Task, error) {
return s.queries.CompleteTask(ctx, db.CompleteTaskParams{
ID: id,
Result: result,
})
}
func (s *Store) FailTask(ctx context.Context, id, message string) (db.Task, error) {
return s.queries.FailTask(ctx, db.FailTaskParams{
ID: id,
Error: &message,
})
}