| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- package test
- import (
- "errors"
- "github.com/porter-dev/porter/internal/models"
- ints "github.com/porter-dev/porter/internal/models/integrations"
- "github.com/porter-dev/porter/internal/repository"
- "gorm.io/gorm"
- )
- // RegistryRepository implements repository.RegistryRepository
- type RegistryRepository struct {
- canQuery bool
- registries []*models.Registry
- }
- // NewRegistryRepository will return errors if canQuery is false
- func NewRegistryRepository(canQuery bool) repository.RegistryRepository {
- return &RegistryRepository{
- canQuery,
- []*models.Registry{},
- }
- }
- // CreateRegistry creates a new registry
- func (repo *RegistryRepository) CreateRegistry(
- reg *models.Registry,
- ) (*models.Registry, error) {
- if !repo.canQuery {
- return nil, errors.New("Cannot write database")
- }
- repo.registries = append(repo.registries, reg)
- reg.ID = uint(len(repo.registries))
- return reg, nil
- }
- // ReadRegistry finds a registry by id
- func (repo *RegistryRepository) ReadRegistry(
- projectID, regID uint,
- ) (*models.Registry, error) {
- if !repo.canQuery {
- return nil, errors.New("Cannot read from database")
- }
- if int(regID-1) >= len(repo.registries) || repo.registries[regID-1] == nil {
- return nil, gorm.ErrRecordNotFound
- }
- index := int(regID - 1)
- return repo.registries[index], nil
- }
- func (repo *RegistryRepository) ReadRegistryByInfraID(
- projectID, infraID uint,
- ) (*models.Registry, error) {
- panic("unimplemented")
- }
- // ListRegistriesByProjectID finds all registries
- // for a given project id
- func (repo *RegistryRepository) ListRegistriesByProjectID(
- projectID uint,
- ) ([]*models.Registry, error) {
- if !repo.canQuery {
- return nil, errors.New("Cannot read from database")
- }
- res := make([]*models.Registry, 0)
- for _, reg := range repo.registries {
- if reg != nil && reg.ProjectID == projectID {
- res = append(res, reg)
- }
- }
- return res, nil
- }
- // UpdateRegistry modifies an existing Registry in the database
- func (repo *RegistryRepository) UpdateRegistry(
- reg *models.Registry,
- ) (*models.Registry, error) {
- if !repo.canQuery {
- return nil, errors.New("Cannot write database")
- }
- if int(reg.ID-1) >= len(repo.registries) || repo.registries[reg.ID-1] == nil {
- return nil, gorm.ErrRecordNotFound
- }
- index := int(reg.ID - 1)
- repo.registries[index] = reg
- return reg, nil
- }
- // UpdateRegistryTokenCache updates the token cache for a registry
- func (repo *RegistryRepository) UpdateRegistryTokenCache(
- tokenCache *ints.RegTokenCache,
- ) (*models.Registry, error) {
- if !repo.canQuery {
- return nil, errors.New("Cannot write database")
- }
- index := int(tokenCache.RegistryID - 1)
- repo.registries[index].TokenCache.Token = tokenCache.Token
- repo.registries[index].TokenCache.Expiry = tokenCache.Expiry
- return repo.registries[index], nil
- }
- // DeleteRegistry removes a registry from the array by setting it to nil
- func (repo *RegistryRepository) DeleteRegistry(
- reg *models.Registry,
- ) error {
- if !repo.canQuery {
- return errors.New("Cannot write database")
- }
- if int(reg.ID-1) >= len(repo.registries) || repo.registries[reg.ID-1] == nil {
- return gorm.ErrRecordNotFound
- }
- index := int(reg.ID - 1)
- repo.registries[index] = nil
- return nil
- }
|