| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package repository
- import (
- "time"
- "gorm.io/gorm"
- "wails-app/internal/dao"
- "wails-app/internal/global"
- )
- type Repository struct{}
- func New() *Repository { return &Repository{} }
- func (r *Repository) FindDeviceByUsername(username string) (*dao.CentralPaymentDevice, error) {
- var device dao.CentralPaymentDevice
- if err := global.GVA_DB.Where("username = ?", username).First(&device).Error; err != nil {
- return nil, err
- }
- return &device, nil
- }
- func (r *Repository) FindDeviceByTokenHash(hash string, now time.Time) (*dao.CentralPaymentDevice, error) {
- var token dao.CentralPaymentToken
- if err := global.GVA_DB.Where("token_hash = ? AND expire_at > ?", hash, now).First(&token).Error; err != nil {
- return nil, err
- }
- var device dao.CentralPaymentDevice
- if err := global.GVA_DB.Where("device_id = ? AND enabled = ?", token.DeviceID, true).First(&device).Error; err != nil {
- return nil, err
- }
- return &device, nil
- }
- func (r *Repository) ReplaceTokens(deviceID string, token *dao.CentralPaymentToken) error {
- return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
- if err := tx.Where("device_id = ?", deviceID).Delete(&dao.CentralPaymentToken{}).Error; err != nil {
- return err
- }
- return tx.Create(token).Error
- })
- }
- func (r *Repository) FindTicket(ticketNo string) (*dao.DigitalTicket, error) {
- var ticket dao.DigitalTicket
- if err := global.GVA_DB.Where("ticket_no = ?", ticketNo).First(&ticket).Error; err != nil {
- return nil, err
- }
- return &ticket, nil
- }
- func (r *Repository) FindVehicleRecord(id uint) (*dao.VehicleRecord, error) {
- var record dao.VehicleRecord
- if err := global.GVA_DB.First(&record, id).Error; err != nil {
- return nil, err
- }
- return &record, nil
- }
- func (r *Repository) FindLatestPayment(recordID uint, entry string) (*dao.PaymentRecord, error) {
- var payment dao.PaymentRecord
- if err := global.GVA_DB.Where("record_id = ? AND payment_entry = ?", recordID, entry).Order("id DESC").First(&payment).Error; err != nil {
- return nil, err
- }
- return &payment, nil
- }
- func (r *Repository) Log(log *dao.CentralPaymentRequestLog) {
- if global.GVA_DB != nil {
- _ = global.GVA_DB.Create(log).Error
- }
- }
|