app_template.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package gorm
  2. import (
  3. "errors"
  4. "time"
  5. "github.com/google/uuid"
  6. "github.com/porter-dev/porter/internal/models"
  7. "github.com/porter-dev/porter/internal/repository"
  8. "gorm.io/gorm"
  9. )
  10. // AppTemplateRepository uses gorm.DB for querying the database
  11. type AppTemplateRepository struct {
  12. db *gorm.DB
  13. }
  14. // NewAppTemplateRepository returns a AppTemplateRepository which uses
  15. // gorm.DB for querying the database
  16. func NewAppTemplateRepository(db *gorm.DB) repository.AppTemplateRepository {
  17. return &AppTemplateRepository{db}
  18. }
  19. // AppTemplateByPorterAppID finds an app template by its porter app id
  20. func (repo *AppTemplateRepository) AppTemplateByPorterAppID(projectID uint, appID uint) (*models.AppTemplate, error) {
  21. appTemplate := &models.AppTemplate{}
  22. if err := repo.db.Where("project_id = ? AND porter_app_id = ?", projectID, appID).Limit(1).Find(&appTemplate).Error; err != nil {
  23. return nil, err
  24. }
  25. return appTemplate, nil
  26. }
  27. // CreateAppTemplate creates a new app template
  28. func (repo *AppTemplateRepository) CreateAppTemplate(appTemplate *models.AppTemplate) (*models.AppTemplate, error) {
  29. if appTemplate == nil {
  30. return nil, errors.New("app template is nil")
  31. }
  32. if appTemplate.Base64App == "" {
  33. return nil, errors.New("app template base64 app is empty")
  34. }
  35. if appTemplate.ProjectID == 0 {
  36. return nil, errors.New("app template project id is empty")
  37. }
  38. if appTemplate.PorterAppID == 0 {
  39. return nil, errors.New("app template porter app id is empty")
  40. }
  41. if appTemplate.ID == uuid.Nil {
  42. appTemplate.ID = uuid.New()
  43. }
  44. if appTemplate.CreatedAt.IsZero() {
  45. appTemplate.CreatedAt = time.Now().UTC()
  46. }
  47. if appTemplate.UpdatedAt.IsZero() {
  48. appTemplate.UpdatedAt = time.Now().UTC()
  49. }
  50. if err := repo.db.Save(appTemplate).Error; err != nil {
  51. return nil, err
  52. }
  53. return appTemplate, nil
  54. }