availability.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package model
  2. import (
  3. "errors"
  4. "fmt"
  5. "gorm.io/gorm"
  6. "kng_feed_api/database"
  7. )
  8. type Availability struct {
  9. CodeCarCaDe string `gorm:"size:11;not null; unique; index; primaryKey" json:"code_carcade"`
  10. Available int `gorm:"default=0" json:"available"`
  11. }
  12. type AvailabilityArray struct {
  13. AvailabilityArray []Availability `binding:"dive" json:"items"`
  14. }
  15. func (availability *Availability) CreateOrUpdate() error {
  16. err := database.Database.Save(&availability).Error
  17. if err != nil {
  18. return fmt.Errorf("не удалось сохранить код %s", availability.CodeCarCaDe)
  19. }
  20. return nil
  21. }
  22. func GetAllAvailability() ([]Availability, error) {
  23. var availability []Availability
  24. err := database.Database.Find(&availability).Error
  25. if err != nil {
  26. return availability, err
  27. }
  28. return availability, nil
  29. }
  30. func GetOneAvailability(code string) (Availability, error) {
  31. var availability Availability
  32. err := database.Database.First(&availability, code).Error
  33. if err != nil {
  34. if errors.Is(err, gorm.ErrRecordNotFound) {
  35. return availability, fmt.Errorf("объект с кодом %s не найден", code)
  36. }
  37. return availability, err
  38. }
  39. return availability, nil
  40. }