56 lines
1.3 KiB
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,
|
|
})
|
|
}
|