usage.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package gorm
  2. import (
  3. "github.com/porter-dev/porter/internal/models"
  4. "github.com/porter-dev/porter/internal/repository"
  5. "gorm.io/gorm"
  6. )
  7. // ProjectUsageRepository implements repository.ProjectUsageRepository
  8. type ProjectUsageRepository struct {
  9. db *gorm.DB
  10. }
  11. // NewProjectUsageRepository will return errors if canQuery is false
  12. func NewProjectUsageRepository(db *gorm.DB) repository.ProjectUsageRepository {
  13. return &ProjectUsageRepository{db}
  14. }
  15. // CreateProjectUsage creates a new project usage limit
  16. func (repo *ProjectUsageRepository) CreateProjectUsage(
  17. usage *models.ProjectUsage,
  18. ) (*models.ProjectUsage, error) {
  19. if err := repo.db.Create(usage).Error; err != nil {
  20. return nil, err
  21. }
  22. return usage, nil
  23. }
  24. // ReadProjectUsage finds the project usage matching a project ID
  25. func (repo *ProjectUsageRepository) ReadProjectUsage(
  26. projID uint,
  27. ) (*models.ProjectUsage, error) {
  28. res := &models.ProjectUsage{}
  29. if err := repo.db.Where("project_id = ?", projID).First(res).Error; err != nil {
  30. return nil, err
  31. }
  32. return res, nil
  33. }
  34. // UpdateProjectUsage modifies an existing ProjectUsage in the database
  35. func (repo *ProjectUsageRepository) UpdateProjectUsage(
  36. usage *models.ProjectUsage,
  37. ) (*models.ProjectUsage, error) {
  38. if err := repo.db.Save(usage).Error; err != nil {
  39. return nil, err
  40. }
  41. return usage, nil
  42. }
  43. // CreateProjectUsageCache creates a new project usage cache
  44. func (repo *ProjectUsageRepository) CreateProjectUsageCache(
  45. cache *models.ProjectUsageCache,
  46. ) (*models.ProjectUsageCache, error) {
  47. if err := repo.db.Create(cache).Error; err != nil {
  48. return nil, err
  49. }
  50. return cache, nil
  51. }
  52. // ReadProjectUsageCache finds the project usage cache matching a project ID
  53. func (repo *ProjectUsageRepository) ReadProjectUsageCache(
  54. projID uint,
  55. ) (*models.ProjectUsageCache, error) {
  56. res := &models.ProjectUsageCache{}
  57. if err := repo.db.Where("project_id = ?", projID).First(res).Error; err != nil {
  58. return nil, err
  59. }
  60. return res, nil
  61. }
  62. // UpdateProjectUsageCache modifies an existing ProjectUsageCache in the database
  63. func (repo *ProjectUsageRepository) UpdateProjectUsageCache(
  64. cache *models.ProjectUsageCache,
  65. ) (*models.ProjectUsageCache, error) {
  66. if err := repo.db.Save(cache).Error; err != nil {
  67. return nil, err
  68. }
  69. return cache, nil
  70. }