storage.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package service
  2. import (
  3. "fmt"
  4. "github.com/IceWhaleTech/CasaOS/model"
  5. "github.com/pkg/errors"
  6. "gorm.io/gorm"
  7. )
  8. type StorageService interface {
  9. CreateStorage(storage *model.Storage) error
  10. UpdateStorage(storage *model.Storage) error
  11. DeleteStorageById(id uint) error
  12. GetStorages(pageIndex, pageSize int) ([]model.Storage, int64, error)
  13. GetStorageById(id uint) (*model.Storage, error)
  14. GetEnabledStorages() ([]model.Storage, error)
  15. }
  16. type storageStruct struct {
  17. db *gorm.DB
  18. }
  19. // CreateStorage just insert storage to database
  20. func (s *storageStruct) CreateStorage(storage *model.Storage) error {
  21. return errors.WithStack(s.db.Create(storage).Error)
  22. }
  23. // UpdateStorage just update storage in database
  24. func (s *storageStruct) UpdateStorage(storage *model.Storage) error {
  25. return errors.WithStack(s.db.Save(storage).Error)
  26. }
  27. // DeleteStorageById just delete storage from database by id
  28. func (s *storageStruct) DeleteStorageById(id uint) error {
  29. return errors.WithStack(s.db.Delete(&model.Storage{}, id).Error)
  30. }
  31. // GetStorages Get all storages from database order by index
  32. func (s *storageStruct) GetStorages(pageIndex, pageSize int) ([]model.Storage, int64, error) {
  33. storageDB := s.db.Model(&model.Storage{})
  34. var count int64
  35. if err := storageDB.Count(&count).Error; err != nil {
  36. return nil, 0, errors.Wrapf(err, "failed get storages count")
  37. }
  38. var storages []model.Storage
  39. if err := storageDB.Order("`order`").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&storages).Error; err != nil {
  40. return nil, 0, errors.WithStack(err)
  41. }
  42. return storages, count, nil
  43. }
  44. // GetStorageById Get Storage by id, used to update storage usually
  45. func (s *storageStruct) GetStorageById(id uint) (*model.Storage, error) {
  46. var storage model.Storage
  47. storage.ID = id
  48. if err := s.db.First(&storage).Error; err != nil {
  49. return nil, errors.WithStack(err)
  50. }
  51. return &storage, nil
  52. }
  53. func (s *storageStruct) GetEnabledStorages() ([]model.Storage, error) {
  54. var storages []model.Storage
  55. if err := s.db.Where(fmt.Sprintf("%s = ?", "disabled"), false).Find(&storages).Error; err != nil {
  56. return nil, errors.WithStack(err)
  57. }
  58. return storages, nil
  59. }
  60. func NewStorageService(db *gorm.DB) StorageService {
  61. return &storageStruct{db: db}
  62. }