project.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package forms
  2. import (
  3. "github.com/porter-dev/porter/internal/models"
  4. "github.com/porter-dev/porter/internal/repository"
  5. "gorm.io/gorm"
  6. )
  7. // WriteProjectForm is a generic form for write operations to the Project model
  8. type WriteProjectForm interface {
  9. ToProject(repo repository.ProjectRepository) (*models.Project, error)
  10. }
  11. // CreateProjectForm represents the accepted values for creating a project
  12. type CreateProjectForm struct {
  13. WriteProjectForm
  14. Name string `json:"name" form:"required"`
  15. }
  16. // ToProject converts the project to a gorm project model
  17. func (cpf *CreateProjectForm) ToProject(_ repository.ProjectRepository) (*models.Project, error) {
  18. return &models.Project{
  19. Name: cpf.Name,
  20. }, nil
  21. }
  22. // CreateProjectRoleForm represents the accepted values for creating a project
  23. // role
  24. type CreateProjectRoleForm struct {
  25. WriteProjectForm
  26. ID uint `json:"project_id" form:"required"`
  27. Roles []models.Role `json:"roles"`
  28. }
  29. // ToProject converts the form to a gorm project model
  30. func (cprf *CreateProjectRoleForm) ToProject(_ repository.ProjectRepository) (*models.Project, error) {
  31. return &models.Project{
  32. Model: gorm.Model{
  33. ID: cprf.ID,
  34. },
  35. Roles: cprf.Roles,
  36. }, nil
  37. }