Files
prefect-go/pkg/client/saved_searches.go

53 lines
1.7 KiB
Go

package client
import (
"context"
"fmt"
"net/http"
"git.schultes.dev/schultesdev/prefect-go/pkg/models"
"github.com/google/uuid"
)
// SavedSearchesService handles operations related to saved searches.
type SavedSearchesService struct {
client *Client
}
// Create creates a new saved search.
func (s *SavedSearchesService) Create(ctx context.Context, req *models.SavedSearchCreate) (*models.SavedSearch, error) {
var savedSearch models.SavedSearch
if err := s.client.do(ctx, http.MethodPut, "/saved_searches/", req, &savedSearch); err != nil {
return nil, fmt.Errorf("failed to create saved search: %w", err)
}
return &savedSearch, nil
}
// Get retrieves a saved search by ID.
func (s *SavedSearchesService) Get(ctx context.Context, id uuid.UUID) (*models.SavedSearch, error) {
var savedSearch models.SavedSearch
path := joinPath("/saved_searches", id.String())
if err := s.client.get(ctx, path, &savedSearch); err != nil {
return nil, fmt.Errorf("failed to get saved search: %w", err)
}
return &savedSearch, nil
}
// Delete deletes a saved search by ID.
func (s *SavedSearchesService) Delete(ctx context.Context, id uuid.UUID) error {
path := joinPath("/saved_searches", id.String())
if err := s.client.delete(ctx, path); err != nil {
return fmt.Errorf("failed to delete saved search: %w", err)
}
return nil
}
// List retrieves all saved searches.
func (s *SavedSearchesService) List(ctx context.Context) ([]models.SavedSearch, error) {
var savedSearches []models.SavedSearch
if err := s.client.post(ctx, "/saved_searches/filter", nil, &savedSearches); err != nil {
return nil, fmt.Errorf("failed to list saved searches: %w", err)
}
return savedSearches, nil
}