app_revision.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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. // AppRevisionRepository uses gorm.DB for querying the database
  8. type AppRevisionRepository struct {
  9. db *gorm.DB
  10. }
  11. // NewAppRevisionRepository returns a AppRevisionRepository which uses
  12. // gorm.DB for querying the database
  13. func NewAppRevisionRepository(db *gorm.DB) repository.AppRevisionRepository {
  14. return &AppRevisionRepository{db}
  15. }
  16. // AppRevisionByInstanceIDAndRevisionNumber finds an app revision by revision number
  17. func (repo *AppRevisionRepository) AppRevisionByInstanceIDAndRevisionNumber(projectID uint, instanceId string, revisionNumber uint) (*models.AppRevision, error) {
  18. AppRevision := &models.AppRevision{}
  19. if err := repo.db.Where("project_id = ? AND app_instance_id = ? AND revision_number = ?", projectID, instanceId, revisionNumber).Limit(1).Find(&AppRevision).Error; err != nil {
  20. return nil, err
  21. }
  22. return AppRevision, nil
  23. }
  24. // LatestNumberedAppRevision finds the latest numbered app revision
  25. func (repo *AppRevisionRepository) LatestNumberedAppRevision(projectID uint, appInstanceId string) (*models.AppRevision, error) {
  26. AppRevision := &models.AppRevision{}
  27. if err := repo.db.Where("project_id = ? AND app_instance_id = ?", projectID, appInstanceId).Order("revision_number DESC").Limit(1).Find(&AppRevision).Error; err != nil {
  28. return nil, err
  29. }
  30. return AppRevision, nil
  31. }