github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/open_resource_discovery/interfaces.go (about)

     1  package ord
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/kyma-incubator/compass/components/director/pkg/graphql"
     7  
     8  	"github.com/kyma-incubator/compass/components/director/pkg/resource"
     9  
    10  	"github.com/kyma-incubator/compass/components/director/internal/model"
    11  )
    12  
    13  // WebhookService is responsible for the service-layer Webhook operations.
    14  //
    15  //go:generate mockery --name=WebhookService --output=automock --outpkg=automock --case=underscore --disable-version-string
    16  type WebhookService interface {
    17  	ListByWebhookType(ctx context.Context, webhookType model.WebhookType) ([]*model.Webhook, error)
    18  	ListForApplication(ctx context.Context, applicationID string) ([]*model.Webhook, error)
    19  	ListForApplicationGlobal(ctx context.Context, applicationID string) ([]*model.Webhook, error)
    20  	ListForApplicationTemplate(ctx context.Context, applicationTemplateID string) ([]*model.Webhook, error)
    21  	EnrichWebhooksWithTenantMappingWebhooks(in []*graphql.WebhookInput) ([]*graphql.WebhookInput, error)
    22  	Create(ctx context.Context, owningResourceID string, in model.WebhookInput, objectType model.WebhookReferenceObjectType) (string, error)
    23  	Delete(ctx context.Context, id string, objectType model.WebhookReferenceObjectType) error
    24  }
    25  
    26  // ApplicationService is responsible for the service-layer Application operations.
    27  //
    28  //go:generate mockery --name=ApplicationService --output=automock --outpkg=automock --case=underscore --disable-version-string
    29  type ApplicationService interface {
    30  	Get(ctx context.Context, id string) (*model.Application, error)
    31  	ListAllByApplicationTemplateID(ctx context.Context, applicationTemplateID string) ([]*model.Application, error)
    32  	Update(ctx context.Context, id string, in model.ApplicationUpdateInput) error
    33  }
    34  
    35  // BundleService is responsible for the service-layer Bundle operations.
    36  //
    37  //go:generate mockery --name=BundleService --output=automock --outpkg=automock --case=underscore --disable-version-string
    38  type BundleService interface {
    39  	CreateBundle(ctx context.Context, resourceType resource.Type, resourceID string, in model.BundleCreateInput, bndlHash uint64) (string, error)
    40  	UpdateBundle(ctx context.Context, resourceType resource.Type, id string, in model.BundleUpdateInput, bndlHash uint64) error
    41  	Delete(ctx context.Context, resourceType resource.Type, id string) error
    42  	ListByApplicationIDNoPaging(ctx context.Context, appID string) ([]*model.Bundle, error)
    43  	ListByApplicationTemplateVersionIDNoPaging(ctx context.Context, appTemplateVersionID string) ([]*model.Bundle, error)
    44  }
    45  
    46  // BundleReferenceService is responsible for the service-layer BundleReference operations.
    47  //
    48  //go:generate mockery --name=BundleReferenceService --output=automock --outpkg=automock --case=underscore --disable-version-string
    49  type BundleReferenceService interface {
    50  	GetBundleIDsForObject(ctx context.Context, objectType model.BundleReferenceObjectType, objectID *string) ([]string, error)
    51  }
    52  
    53  // APIService is responsible for the service-layer API operations.
    54  //
    55  //go:generate mockery --name=APIService --output=automock --outpkg=automock --case=underscore --disable-version-string
    56  type APIService interface {
    57  	Create(ctx context.Context, resourceType resource.Type, resourceID string, bundleID, packageID *string, in model.APIDefinitionInput, spec []*model.SpecInput, targetURLsPerBundle map[string]string, apiHash uint64, defaultBundleID string) (string, error)
    58  	UpdateInManyBundles(ctx context.Context, resourceType resource.Type, id string, in model.APIDefinitionInput, specIn *model.SpecInput, defaultTargetURLPerBundle map[string]string, defaultTargetURLPerBundleToBeCreated map[string]string, bundleIDsToBeDeleted []string, apiHash uint64, defaultBundleID string) error
    59  	Delete(ctx context.Context, resourceType resource.Type, id string) error
    60  	ListByApplicationID(ctx context.Context, appID string) ([]*model.APIDefinition, error)
    61  	ListByApplicationTemplateVersionID(ctx context.Context, appTemplateVersionID string) ([]*model.APIDefinition, error)
    62  }
    63  
    64  // EventService is responsible for the service-layer Event operations.
    65  //
    66  //go:generate mockery --name=EventService --output=automock --outpkg=automock --case=underscore --disable-version-string
    67  type EventService interface {
    68  	Create(ctx context.Context, resourceType resource.Type, resourceID string, bundleID, packageID *string, in model.EventDefinitionInput, specs []*model.SpecInput, bundleIDs []string, eventHash uint64, defaultBundleID string) (string, error)
    69  	UpdateInManyBundles(ctx context.Context, resourceType resource.Type, id string, in model.EventDefinitionInput, specIn *model.SpecInput, bundleIDsFromBundleReference, bundleIDsForCreation, bundleIDsForDeletion []string, eventHash uint64, defaultBundleID string) error
    70  	Delete(ctx context.Context, resourceType resource.Type, id string) error
    71  	ListByApplicationID(ctx context.Context, appID string) ([]*model.EventDefinition, error)
    72  	ListByApplicationTemplateVersionID(ctx context.Context, appTemplateVersionID string) ([]*model.EventDefinition, error)
    73  }
    74  
    75  // SpecService is responsible for the service-layer Specification operations.
    76  //
    77  //go:generate mockery --name=SpecService --output=automock --outpkg=automock --case=underscore --disable-version-string
    78  type SpecService interface {
    79  	CreateByReferenceObjectID(ctx context.Context, in model.SpecInput, resourceType resource.Type, objectType model.SpecReferenceObjectType, objectID string) (string, error)
    80  	CreateByReferenceObjectIDWithDelayedFetchRequest(ctx context.Context, in model.SpecInput, resourceType resource.Type, objectType model.SpecReferenceObjectType, objectID string) (string, *model.FetchRequest, error)
    81  	DeleteByReferenceObjectID(ctx context.Context, resourceType resource.Type, objectType model.SpecReferenceObjectType, objectID string) error
    82  	GetByID(ctx context.Context, id string, objectType model.SpecReferenceObjectType) (*model.Spec, error)
    83  	ListFetchRequestsByReferenceObjectIDs(ctx context.Context, tenant string, objectIDs []string, objectType model.SpecReferenceObjectType) ([]*model.FetchRequest, error)
    84  	ListFetchRequestsByReferenceObjectIDsGlobal(ctx context.Context, objectIDs []string, objectType model.SpecReferenceObjectType) ([]*model.FetchRequest, error)
    85  	UpdateSpecOnly(ctx context.Context, spec model.Spec) error
    86  	UpdateSpecOnlyGlobal(ctx context.Context, spec model.Spec) error
    87  	ListIDByReferenceObjectID(ctx context.Context, resourceType resource.Type, objectType model.SpecReferenceObjectType, objectID string) ([]string, error)
    88  	GetByIDGlobal(ctx context.Context, id string) (*model.Spec, error)
    89  }
    90  
    91  // FetchRequestService is responsible for executing specification fetch requests.
    92  //
    93  //go:generate mockery --name=FetchRequestService --output=automock --outpkg=automock --case=underscore --disable-version-string
    94  type FetchRequestService interface {
    95  	FetchSpec(ctx context.Context, fr *model.FetchRequest) (*string, *model.FetchRequestStatus)
    96  	Update(ctx context.Context, fr *model.FetchRequest) error
    97  	UpdateGlobal(ctx context.Context, fr *model.FetchRequest) error
    98  }
    99  
   100  // PackageService is responsible for the service-layer Package operations.
   101  //
   102  //go:generate mockery --name=PackageService --output=automock --outpkg=automock --case=underscore --disable-version-string
   103  type PackageService interface {
   104  	Create(ctx context.Context, resourceType resource.Type, resourceID string, in model.PackageInput, pkgHash uint64) (string, error)
   105  	Update(ctx context.Context, resourceType resource.Type, id string, in model.PackageInput, pkgHash uint64) error
   106  	Delete(ctx context.Context, resourceType resource.Type, id string) error
   107  	ListByApplicationID(ctx context.Context, appID string) ([]*model.Package, error)
   108  	ListByApplicationTemplateVersionID(ctx context.Context, appTemplateVersionID string) ([]*model.Package, error)
   109  }
   110  
   111  // ProductService is responsible for the service-layer Product operations.
   112  //
   113  //go:generate mockery --name=ProductService --output=automock --outpkg=automock --case=underscore --disable-version-string
   114  type ProductService interface {
   115  	Create(ctx context.Context, resourceType resource.Type, resourceID string, in model.ProductInput) (string, error)
   116  	Update(ctx context.Context, resourceType resource.Type, id string, in model.ProductInput) error
   117  	Delete(ctx context.Context, resourceType resource.Type, id string) error
   118  	ListByApplicationID(ctx context.Context, appID string) ([]*model.Product, error)
   119  	ListByApplicationTemplateVersionID(ctx context.Context, appID string) ([]*model.Product, error)
   120  }
   121  
   122  // GlobalProductService is responsible for the service-layer operations for Global Product (with NULL app_id) without tenant isolation.
   123  //
   124  //go:generate mockery --name=GlobalProductService --output=automock --outpkg=automock --case=underscore --disable-version-string
   125  type GlobalProductService interface {
   126  	CreateGlobal(ctx context.Context, in model.ProductInput) (string, error)
   127  	UpdateGlobal(ctx context.Context, id string, in model.ProductInput) error
   128  	DeleteGlobal(ctx context.Context, id string) error
   129  	ListGlobal(ctx context.Context) ([]*model.Product, error)
   130  }
   131  
   132  // VendorService is responsible for the service-layer Vendor operations.
   133  //
   134  //go:generate mockery --name=VendorService --output=automock --outpkg=automock --case=underscore --disable-version-string
   135  type VendorService interface {
   136  	Create(ctx context.Context, resourceType resource.Type, resourceID string, in model.VendorInput) (string, error)
   137  	Update(ctx context.Context, resourceType resource.Type, id string, in model.VendorInput) error
   138  	Delete(ctx context.Context, resourceType resource.Type, id string) error
   139  	ListByApplicationID(ctx context.Context, appID string) ([]*model.Vendor, error)
   140  	ListByApplicationTemplateVersionID(ctx context.Context, appTemplateVersionID string) ([]*model.Vendor, error)
   141  }
   142  
   143  // GlobalVendorService is responsible for the service-layer operations for Global Vendors (with NULL app_id) without tenant isolation.
   144  //
   145  //go:generate mockery --name=GlobalVendorService --output=automock --outpkg=automock --case=underscore --disable-version-string
   146  type GlobalVendorService interface {
   147  	CreateGlobal(ctx context.Context, in model.VendorInput) (string, error)
   148  	UpdateGlobal(ctx context.Context, id string, in model.VendorInput) error
   149  	DeleteGlobal(ctx context.Context, id string) error
   150  	ListGlobal(ctx context.Context) ([]*model.Vendor, error)
   151  }
   152  
   153  // TombstoneService is responsible for the service-layer Tombstone operations.
   154  //
   155  //go:generate mockery --name=TombstoneService --output=automock --outpkg=automock --case=underscore --disable-version-string
   156  type TombstoneService interface {
   157  	Create(ctx context.Context, resourceType resource.Type, resourceID string, in model.TombstoneInput) (string, error)
   158  	Update(ctx context.Context, resourceType resource.Type, id string, in model.TombstoneInput) error
   159  	ListByApplicationID(ctx context.Context, appID string) ([]*model.Tombstone, error)
   160  	ListByApplicationTemplateVersionID(ctx context.Context, appID string) ([]*model.Tombstone, error)
   161  }
   162  
   163  // TenantService missing godoc
   164  //
   165  //go:generate mockery --name=TenantService --output=automock --outpkg=automock --case=underscore --disable-version-string
   166  type TenantService interface {
   167  	GetLowestOwnerForResource(ctx context.Context, resourceType resource.Type, objectID string) (string, error)
   168  	GetTenantByID(ctx context.Context, id string) (*model.BusinessTenantMapping, error)
   169  }
   170  
   171  // ApplicationTemplateVersionService is responsible for the service-layer Application Template Version operations
   172  //
   173  //go:generate mockery --name=ApplicationTemplateVersionService --output=automock --outpkg=automock --case=underscore --disable-version-string
   174  type ApplicationTemplateVersionService interface {
   175  	GetByAppTemplateIDAndVersion(ctx context.Context, id, version string) (*model.ApplicationTemplateVersion, error)
   176  	ListByAppTemplateID(ctx context.Context, appTemplateID string) ([]*model.ApplicationTemplateVersion, error)
   177  	Create(ctx context.Context, appTemplateID string, item *model.ApplicationTemplateVersionInput) (string, error)
   178  	Update(ctx context.Context, id, appTemplateID string, in model.ApplicationTemplateVersionInput) error
   179  }
   180  
   181  // ApplicationTemplateService is responsible for the service-layer Application Template operations
   182  //
   183  //go:generate mockery --name=ApplicationTemplateService --output=automock --outpkg=automock --case=underscore --disable-version-string
   184  type ApplicationTemplateService interface {
   185  	Get(ctx context.Context, id string) (*model.ApplicationTemplate, error)
   186  }
   187  
   188  // WebhookConverter is responsible for converting webhook structs
   189  //
   190  //go:generate mockery --name=WebhookConverter --output=automock --outpkg=automock --case=underscore --disable-version-string
   191  type WebhookConverter interface {
   192  	InputFromGraphQL(in *graphql.WebhookInput) (*model.WebhookInput, error)
   193  }