| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package test
- import (
- "errors"
- "github.com/porter-dev/porter/internal/models"
- "github.com/porter-dev/porter/internal/repository"
- "gorm.io/gorm"
- )
- // ProjectUsageRepository implements repository.ProjectUsageRepository
- type ProjectUsageRepository struct {
- canQuery bool
- usages []*models.ProjectUsage
- caches []*models.ProjectUsageCache
- }
- // NewProjectUsageRepository will return errors if canQuery is false
- func NewProjectUsageRepository(canQuery bool) repository.ProjectUsageRepository {
- return &ProjectUsageRepository{
- canQuery,
- []*models.ProjectUsage{},
- []*models.ProjectUsageCache{},
- }
- }
- // CreateProjectUsage creates a new project usage limit
- func (repo *ProjectUsageRepository) CreateProjectUsage(
- usage *models.ProjectUsage,
- ) (*models.ProjectUsage, error) {
- if !repo.canQuery {
- return nil, errors.New("Cannot write database")
- }
- if usage == nil {
- return nil, nil
- }
- repo.usages = append(repo.usages, usage)
- return usage, nil
- }
- // CreateProjectUsage reads a project usage by project id
- func (repo *ProjectUsageRepository) ReadProjectUsage(
- projID uint,
- ) (*models.ProjectUsage, error) {
- if !repo.canQuery {
- return nil, errors.New("Cannot read from database")
- }
- for _, pu := range repo.usages {
- if pu != nil && pu.ProjectID == projID {
- return pu, nil
- }
- }
- return nil, gorm.ErrRecordNotFound
- }
- // UpdateProjectUsage modifies an existing ProjectUsage in the database
- func (repo *ProjectUsageRepository) UpdateProjectUsage(
- usage *models.ProjectUsage,
- ) (*models.ProjectUsage, error) {
- if !repo.canQuery {
- return nil, errors.New("Cannot write database")
- }
- if int(usage.ID-1) >= len(repo.usages) || repo.usages[usage.ID-1] == nil {
- return nil, gorm.ErrRecordNotFound
- }
- index := int(usage.ID - 1)
- repo.usages[index] = usage
- return usage, nil
- }
- // CreateProjectUsageCache creates a new project usage cache
- func (repo *ProjectUsageRepository) CreateProjectUsageCache(
- cache *models.ProjectUsageCache,
- ) (*models.ProjectUsageCache, error) {
- if !repo.canQuery {
- return nil, errors.New("Cannot write database")
- }
- if cache == nil {
- return nil, nil
- }
- repo.caches = append(repo.caches, cache)
- return cache, nil
- }
- // CreateProjectUsageCache reads a project usage by project id
- func (repo *ProjectUsageRepository) ReadProjectUsageCache(
- projID uint,
- ) (*models.ProjectUsageCache, error) {
- if !repo.canQuery {
- return nil, errors.New("Cannot read from database")
- }
- for _, puc := range repo.caches {
- if puc != nil && puc.ProjectID == projID {
- return puc, nil
- }
- }
- return nil, gorm.ErrRecordNotFound
- }
- // UpdateProjectUsageCache modifies an existing ProjectUsageCache in the database
- func (repo *ProjectUsageRepository) UpdateProjectUsageCache(
- cache *models.ProjectUsageCache,
- ) (*models.ProjectUsageCache, error) {
- if !repo.canQuery {
- return nil, errors.New("Cannot write database")
- }
- if int(cache.ID-1) >= len(repo.caches) || repo.usages[cache.ID-1] == nil {
- return nil, gorm.ErrRecordNotFound
- }
- index := int(cache.ID - 1)
- repo.caches[index] = cache
- return cache, nil
- }
|