package contract import ( "time" "apskel-pos-be/internal/entities" "github.com/google/uuid" ) type RegisterUserDeviceRequest struct { DeviceID string `json:"device_id" validate:"required,min=1,max=255"` DeviceName string `json:"device_name,omitempty" validate:"omitempty,max=255"` DeviceType entities.DeviceType `json:"device_type,omitempty" validate:"omitempty,oneof=mobile tablet desktop"` Platform entities.DevicePlatform `json:"platform,omitempty" validate:"omitempty,oneof=android ios web"` FCMToken string `json:"fcm_token,omitempty" validate:"omitempty,max=512"` AppVersion string `json:"app_version,omitempty" validate:"omitempty,max=50"` OsVersion string `json:"os_version,omitempty" validate:"omitempty,max=50"` } type UpdateUserDeviceRequest struct { DeviceName string `json:"device_name,omitempty" validate:"omitempty,max=255"` DeviceType entities.DeviceType `json:"device_type,omitempty" validate:"omitempty,oneof=mobile tablet desktop"` Platform entities.DevicePlatform `json:"platform,omitempty" validate:"omitempty,oneof=android ios web"` FCMToken string `json:"fcm_token,omitempty" validate:"omitempty,max=512"` AppVersion string `json:"app_version,omitempty" validate:"omitempty,max=50"` OsVersion string `json:"os_version,omitempty" validate:"omitempty,max=50"` } type UserDeviceResponse struct { ID uuid.UUID `json:"id"` UserID uuid.UUID `json:"user_id"` DeviceID string `json:"device_id"` DeviceName string `json:"device_name"` DeviceType entities.DeviceType `json:"device_type"` Platform entities.DevicePlatform `json:"platform"` FCMToken string `json:"fcm_token"` AppVersion string `json:"app_version"` OsVersion string `json:"os_version"` IPAddress string `json:"ip_address"` LastActiveAt *time.Time `json:"last_active_at"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type ListUserDevicesRequest struct { Page int `json:"page" validate:"min=1"` Limit int `json:"limit" validate:"min=1,max=100"` UserID string `json:"user_id,omitempty"` Platform string `json:"platform,omitempty"` } type ListUserDevicesResponse struct { Devices []UserDeviceResponse `json:"devices"` TotalCount int `json:"total_count"` Page int `json:"page"` Limit int `json:"limit"` TotalPages int `json:"total_pages"` }