deployment_target.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package gorm
  2. import (
  3. "errors"
  4. "github.com/google/uuid"
  5. "github.com/porter-dev/porter/internal/models"
  6. "github.com/porter-dev/porter/internal/repository"
  7. "gorm.io/gorm"
  8. )
  9. // DeploymentTargetRepository uses gorm.DB for querying the database
  10. type DeploymentTargetRepository struct {
  11. db *gorm.DB
  12. }
  13. // NewDeploymentTargetRepository returns a DeploymentTargetRepository which uses
  14. // gorm.DB for querying the database
  15. func NewDeploymentTargetRepository(db *gorm.DB) repository.DeploymentTargetRepository {
  16. return &DeploymentTargetRepository{db}
  17. }
  18. // DeploymentTargetBySelectorAndSelectorType finds a deployment target for a projectID and clusterID by its selector and selector type
  19. func (repo *DeploymentTargetRepository) DeploymentTargetBySelectorAndSelectorType(projectID uint, clusterID uint, selector, selectorType string) (*models.DeploymentTarget, error) {
  20. deploymentTarget := &models.DeploymentTarget{}
  21. if err := repo.db.Where("project_id = ? AND cluster_id = ? AND selector = ? AND selector_type = ?", projectID, clusterID, selector, selectorType).Limit(1).Find(&deploymentTarget).Error; err != nil {
  22. return nil, err
  23. }
  24. if deploymentTarget.ID == uuid.Nil {
  25. return nil, errors.New("deployment target not found")
  26. }
  27. return deploymentTarget, nil
  28. }