policy.go 779 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package models
  2. import (
  3. "encoding/json"
  4. "github.com/porter-dev/porter/api/types"
  5. "gorm.io/gorm"
  6. )
  7. type Policy struct {
  8. gorm.Model
  9. UniqueID string `gorm:"unique"`
  10. ProjectID uint
  11. CreatedByUserID uint
  12. Name string
  13. PolicyBytes []byte
  14. }
  15. func (p *Policy) ToAPIPolicyTypeMeta() *types.APIPolicyMeta {
  16. return &types.APIPolicyMeta{
  17. CreatedAt: p.CreatedAt,
  18. UpdatedAt: p.UpdatedAt,
  19. UID: p.UniqueID,
  20. ProjectID: p.ProjectID,
  21. Name: p.Name,
  22. }
  23. }
  24. func (p *Policy) ToAPIPolicyType() (*types.APIPolicy, error) {
  25. policy := []*types.PolicyDocument{}
  26. err := json.Unmarshal(p.PolicyBytes, &policy)
  27. if err != nil {
  28. return nil, err
  29. }
  30. return &types.APIPolicy{
  31. APIPolicyMeta: p.ToAPIPolicyTypeMeta(),
  32. Policy: policy,
  33. }, nil
  34. }