api_contract.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package repository
  2. import (
  3. "context"
  4. "github.com/google/uuid"
  5. "github.com/porter-dev/porter/internal/models"
  6. )
  7. // APIContractRevisionFilter is used to filter the APIContractRevisions
  8. type APIContractRevisionFilter struct {
  9. ClusterID uint
  10. Latest bool
  11. }
  12. // APIContractRevisionFilters is a function that applies filters to the APIContractRevisions
  13. type APIContractRevisionFilters func(*APIContractRevisionFilter)
  14. // WithClusterID filters the APIContractRevisions by clusterID
  15. func WithClusterID(clusterID uint) APIContractRevisionFilters {
  16. return func(f *APIContractRevisionFilter) {
  17. f.ClusterID = clusterID
  18. }
  19. }
  20. // WithLatest filters the APIContractRevisions by the latest revision
  21. func WithLatest(latest bool) APIContractRevisionFilters {
  22. return func(f *APIContractRevisionFilter) {
  23. f.Latest = latest
  24. }
  25. }
  26. // APIContractRevisioner represents queries on the api_contracts table, which stores the all the versions of an applied API contract
  27. type APIContractRevisioner interface {
  28. Insert(ctx context.Context, conf models.APIContractRevision) (models.APIContractRevision, error)
  29. // List returns a slice of APIContractRevision, sorted by created_at descending
  30. List(ctx context.Context, projectID uint, opts ...APIContractRevisionFilters) ([]*models.APIContractRevision, error)
  31. Get(ctx context.Context, revisionID uuid.UUID) (models.APIContractRevision, error)
  32. Delete(ctx context.Context, projectID uint, clusterID uint, revisionID uuid.UUID) error
  33. }