registry.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package test
  2. import (
  3. "errors"
  4. "github.com/porter-dev/porter/internal/models"
  5. ints "github.com/porter-dev/porter/internal/models/integrations"
  6. "github.com/porter-dev/porter/internal/repository"
  7. "gorm.io/gorm"
  8. )
  9. // RegistryRepository implements repository.RegistryRepository
  10. type RegistryRepository struct {
  11. canQuery bool
  12. registries []*models.Registry
  13. }
  14. // NewRegistryRepository will return errors if canQuery is false
  15. func NewRegistryRepository(canQuery bool) repository.RegistryRepository {
  16. return &RegistryRepository{
  17. canQuery,
  18. []*models.Registry{},
  19. }
  20. }
  21. // CreateRegistry creates a new registry
  22. func (repo *RegistryRepository) CreateRegistry(
  23. reg *models.Registry,
  24. ) (*models.Registry, error) {
  25. if !repo.canQuery {
  26. return nil, errors.New("Cannot write database")
  27. }
  28. repo.registries = append(repo.registries, reg)
  29. reg.ID = uint(len(repo.registries))
  30. return reg, nil
  31. }
  32. // ReadRegistry finds a registry by id
  33. func (repo *RegistryRepository) ReadRegistry(
  34. projectID, regID uint,
  35. ) (*models.Registry, error) {
  36. if !repo.canQuery {
  37. return nil, errors.New("Cannot read from database")
  38. }
  39. if int(regID-1) >= len(repo.registries) || repo.registries[regID-1] == nil {
  40. return nil, gorm.ErrRecordNotFound
  41. }
  42. index := int(regID - 1)
  43. return repo.registries[index], nil
  44. }
  45. func (repo *RegistryRepository) ReadRegistryByInfraID(
  46. projectID, infraID uint,
  47. ) (*models.Registry, error) {
  48. panic("unimplemented")
  49. }
  50. // ListRegistriesByProjectID finds all registries
  51. // for a given project id
  52. func (repo *RegistryRepository) ListRegistriesByProjectID(
  53. projectID uint,
  54. ) ([]*models.Registry, error) {
  55. if !repo.canQuery {
  56. return nil, errors.New("Cannot read from database")
  57. }
  58. res := make([]*models.Registry, 0)
  59. for _, reg := range repo.registries {
  60. if reg != nil && reg.ProjectID == projectID {
  61. res = append(res, reg)
  62. }
  63. }
  64. return res, nil
  65. }
  66. // UpdateRegistry modifies an existing Registry in the database
  67. func (repo *RegistryRepository) UpdateRegistry(
  68. reg *models.Registry,
  69. ) (*models.Registry, error) {
  70. if !repo.canQuery {
  71. return nil, errors.New("Cannot write database")
  72. }
  73. if int(reg.ID-1) >= len(repo.registries) || repo.registries[reg.ID-1] == nil {
  74. return nil, gorm.ErrRecordNotFound
  75. }
  76. index := int(reg.ID - 1)
  77. repo.registries[index] = reg
  78. return reg, nil
  79. }
  80. // UpdateRegistryTokenCache updates the token cache for a registry
  81. func (repo *RegistryRepository) UpdateRegistryTokenCache(
  82. tokenCache *ints.RegTokenCache,
  83. ) (*models.Registry, error) {
  84. if !repo.canQuery {
  85. return nil, errors.New("Cannot write database")
  86. }
  87. index := int(tokenCache.RegistryID - 1)
  88. repo.registries[index].TokenCache.Token = tokenCache.Token
  89. repo.registries[index].TokenCache.Expiry = tokenCache.Expiry
  90. return repo.registries[index], nil
  91. }
  92. // DeleteRegistry removes a registry from the array by setting it to nil
  93. func (repo *RegistryRepository) DeleteRegistry(
  94. reg *models.Registry,
  95. ) error {
  96. if !repo.canQuery {
  97. return errors.New("Cannot write database")
  98. }
  99. if int(reg.ID-1) >= len(repo.registries) || repo.registries[reg.ID-1] == nil {
  100. return gorm.ErrRecordNotFound
  101. }
  102. index := int(reg.ID - 1)
  103. repo.registries[index] = nil
  104. return nil
  105. }