[3rdParty][devices] fix empty deletedAt field in json

This commit is contained in:
Aleksandr Soloshenko 2024-02-23 00:02:07 +07:00
parent cb3e4f8dd9
commit 98f3f719e0
3 changed files with 15 additions and 13 deletions

View File

@ -65,7 +65,7 @@ func (h *thirdPartyHandler) getDevice(user models.User, c *fiber.Ctx) error {
Name: types.OrDefault[string](device.Name, ""),
CreatedAt: device.CreatedAt,
UpdatedAt: device.UpdatedAt,
DeletedAt: device.DeletedAt.Time,
DeletedAt: device.DeletedAt,
LastSeen: device.LastSeen,
})
}
@ -97,12 +97,16 @@ func (h *thirdPartyHandler) postMessage(user models.User, c *fiber.Ctx) error {
skipPhoneValidation := c.QueryBool("skipPhoneValidation", false)
// TODO: use DevicesService and don't preload devices on User
if len(user.Devices) < 1 {
devices, err := h.devicesSvc.Select(user)
if err != nil {
return fmt.Errorf("can't select devices: %w", err)
}
if len(devices) < 1 {
return fiber.NewError(fiber.StatusBadRequest, "Нет ни одного устройства в учетной записи")
}
device := user.Devices[0]
device := devices[0]
state, err := h.messagesSvc.Enqeue(device, req, services.MessagesEnqueueOptions{SkipPhoneValidation: skipPhoneValidation})
if err != nil {
var err400 services.ErrValidation

View File

@ -2,8 +2,6 @@ package models
import (
"time"
"gorm.io/gorm"
)
type MessageState string
@ -19,13 +17,13 @@ const (
type TimedModel struct {
CreatedAt time.Time `gorm:"not null;autocreatetime:false;default:CURRENT_TIMESTAMP(3)"`
UpdatedAt time.Time `gorm:"not null;autoupdatetime:false;default:CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)"`
DeletedAt gorm.DeletedAt
DeletedAt *time.Time
}
type User struct {
ID string `gorm:"primaryKey;type:varchar(32)"`
PasswordHash string `gorm:"not null;type:varchar(72)"`
Devices []Device `gorm:"foreignKey:UserID;constraint:OnDelete:CASCADE"`
Devices []Device `gorm:"-,foreignKey:UserID;constraint:OnDelete:CASCADE"`
TimedModel
}

View File

@ -14,11 +14,11 @@ const (
// Устройство
type Device struct {
ID string `json:"id" example:"PyDmBQZZXYmyxMwED8Fzy"` // Идентификатор
Name string `json:"name" example:"My Device"` // Название устройства
CreatedAt time.Time `json:"createdAt" example:"2020-01-01T00:00:00Z"` // Дата создания
UpdatedAt time.Time `json:"updatedAt" example:"2020-01-01T00:00:00Z"` // Дата обновления
DeletedAt time.Time `json:"deletedAt,omitempty" example:"2020-01-01T00:00:00Z"` // Дата удаления
ID string `json:"id" example:"PyDmBQZZXYmyxMwED8Fzy"` // Идентификатор
Name string `json:"name" example:"My Device"` // Название устройства
CreatedAt time.Time `json:"createdAt" example:"2020-01-01T00:00:00Z"` // Дата создания
UpdatedAt time.Time `json:"updatedAt" example:"2020-01-01T00:00:00Z"` // Дата обновления
DeletedAt *time.Time `json:"deletedAt,omitempty" example:"2020-01-01T00:00:00Z"` // Дата удаления
LastSeen time.Time `json:"lastSeen" example:"2020-01-01T00:00:00Z"` // Последняя активность
}