repo.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package repository
  2. import (
  3. "time"
  4. "gorm.io/gorm"
  5. "wails-app/internal/dao"
  6. "wails-app/internal/global"
  7. )
  8. type Repository struct{}
  9. func New() *Repository { return &Repository{} }
  10. func (r *Repository) FindDeviceByUsername(username string) (*dao.CentralPaymentDevice, error) {
  11. var device dao.CentralPaymentDevice
  12. if err := global.GVA_DB.Where("username = ?", username).First(&device).Error; err != nil {
  13. return nil, err
  14. }
  15. return &device, nil
  16. }
  17. func (r *Repository) FindDeviceByTokenHash(hash string, now time.Time) (*dao.CentralPaymentDevice, error) {
  18. var token dao.CentralPaymentToken
  19. if err := global.GVA_DB.Where("token_hash = ? AND expire_at > ?", hash, now).First(&token).Error; err != nil {
  20. return nil, err
  21. }
  22. var device dao.CentralPaymentDevice
  23. if err := global.GVA_DB.Where("device_id = ? AND enabled = ?", token.DeviceID, true).First(&device).Error; err != nil {
  24. return nil, err
  25. }
  26. return &device, nil
  27. }
  28. func (r *Repository) ReplaceTokens(deviceID string, token *dao.CentralPaymentToken) error {
  29. return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  30. if err := tx.Where("device_id = ?", deviceID).Delete(&dao.CentralPaymentToken{}).Error; err != nil {
  31. return err
  32. }
  33. return tx.Create(token).Error
  34. })
  35. }
  36. func (r *Repository) FindTicket(ticketNo string) (*dao.DigitalTicket, error) {
  37. var ticket dao.DigitalTicket
  38. if err := global.GVA_DB.Where("ticket_no = ?", ticketNo).First(&ticket).Error; err != nil {
  39. return nil, err
  40. }
  41. return &ticket, nil
  42. }
  43. func (r *Repository) FindVehicleRecord(id uint) (*dao.VehicleRecord, error) {
  44. var record dao.VehicleRecord
  45. if err := global.GVA_DB.First(&record, id).Error; err != nil {
  46. return nil, err
  47. }
  48. return &record, nil
  49. }
  50. func (r *Repository) FindLatestPayment(recordID uint, entry string) (*dao.PaymentRecord, error) {
  51. var payment dao.PaymentRecord
  52. if err := global.GVA_DB.Where("record_id = ? AND payment_entry = ?", recordID, entry).Order("id DESC").First(&payment).Error; err != nil {
  53. return nil, err
  54. }
  55. return &payment, nil
  56. }
  57. func (r *Repository) Log(log *dao.CentralPaymentRequestLog) {
  58. if global.GVA_DB != nil {
  59. _ = global.GVA_DB.Create(log).Error
  60. }
  61. }