release.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package gorm
  2. import (
  3. "github.com/porter-dev/porter/internal/models"
  4. "github.com/porter-dev/porter/internal/repository"
  5. "gorm.io/gorm"
  6. )
  7. // ReleaseRepository uses gorm.DB for querying the database
  8. type ReleaseRepository struct {
  9. db *gorm.DB
  10. }
  11. // NewReleaseRepository returns a DefaultReleaseRepository which uses
  12. // gorm.DB for querying the database
  13. func NewReleaseRepository(db *gorm.DB) repository.ReleaseRepository {
  14. return &ReleaseRepository{db}
  15. }
  16. // CreateRelease adds a new Release row to the Releases table in the database
  17. func (repo *ReleaseRepository) CreateRelease(release *models.Release) (*models.Release, error) {
  18. if err := repo.db.Create(release).Error; err != nil {
  19. return nil, err
  20. }
  21. return release, nil
  22. }
  23. // ReadRelease finds a single release based on their unique name and namespace pair.
  24. func (repo *ReleaseRepository) ReadRelease(clusterID uint, name, namespace string) (*models.Release, error) {
  25. release := &models.Release{}
  26. if err := repo.db.Preload("GitActionConfig").Where("cluster_id = ?", clusterID).Where("name = ?", name).Where("namespace = ?", namespace).First(&release).Error; err != nil {
  27. return nil, err
  28. }
  29. return release, nil
  30. }
  31. // ReadReleaseByWebhookToken finds a single release based on their unique webhook token.
  32. func (repo *ReleaseRepository) ReadReleaseByWebhookToken(token string) (*models.Release, error) {
  33. release := &models.Release{}
  34. if err := repo.db.Preload("GitActionConfig").Where("webhook_token = ?", token).First(&release).Error; err != nil {
  35. return nil, err
  36. }
  37. return release, nil
  38. }
  39. // UpdateRelease modifies an existing Release in the database
  40. func (repo *ReleaseRepository) UpdateRelease(release *models.Release) (*models.Release, error) {
  41. if err := repo.db.Save(release).Error; err != nil {
  42. return nil, err
  43. }
  44. return release, nil
  45. }
  46. // DeleteRelease deletes a single user using their unique name and namespace pair
  47. func (repo *ReleaseRepository) DeleteRelease(release *models.Release) (*models.Release, error) {
  48. if err := repo.db.Delete(&release).Error; err != nil {
  49. return nil, err
  50. }
  51. return release, nil
  52. }