72 lines
3.2 KiB
Go
72 lines
3.2 KiB
Go
package req
|
|
|
|
import "github.com/google/uuid"
|
|
|
|
type DeviceDTO struct {
|
|
DeviceCode string `json:"device_code" validate:"required"`
|
|
DeviceType string `json:"device_type" validate:"required"`
|
|
Longitude float64 `json:"longitude" validate:"required"`
|
|
Latitude float64 `json:"latitude" validate:"required"`
|
|
PortAmount int `json:"port_amount"`
|
|
Status string `json:"status" validate:"required,oneof=active inactive maintenance"`
|
|
Province *string `json:"province,omitempty" validate:"omitempty,min=3"`
|
|
City *string `json:"city,omitempty" validate:"omitempty,min=3"`
|
|
District *string `json:"district,omitempty" validate:"omitempty,min=3"`
|
|
TowerID *uuid.UUID `json:"tower_id,omitempty"`
|
|
OLTID *uuid.UUID `json:"olt_id,omitempty"`
|
|
}
|
|
|
|
type UpdateDeviceDTO struct {
|
|
DeviceCode *string `json:"device_code,omitempty" validate:"omitempty,min=3"`
|
|
DeviceType *string `json:"device_type,omitempty" validate:"omitempty,min=3"`
|
|
Longitude *float64 `json:"longitude,omitempty" validate:"omitempty,longitude"`
|
|
Latitude *float64 `json:"latitude,omitempty" validate:"omitempty,latitude"`
|
|
PortAmount *int `json:"port_amount,omitempty" validate:"omitempty"`
|
|
Status *string `json:"status,omitempty" validate:"omitempty,oneof=active inactive maintenance"`
|
|
Province *string `json:"province,omitempty" validate:"omitempty,min=3"`
|
|
City *string `json:"city,omitempty" validate:"omitempty,min=3"`
|
|
District *string `json:"district,omitempty" validate:"omitempty,min=3"`
|
|
TowerID *uuid.UUID `json:"tower_id,omitempty"`
|
|
OLTID *uuid.UUID `json:"olt_id,omitempty"`
|
|
}
|
|
|
|
type BulkDeviceImageUploadDTO struct {
|
|
DeviceID uuid.UUID `json:"device_id" validate:"required"`
|
|
}
|
|
|
|
type BulkDeviceImagesDTO struct {
|
|
Devices []BulkDeviceImageUploadDTO `json:"devices" validate:"required,min=1"`
|
|
}
|
|
|
|
// Bulk Operations DTOs
|
|
type BulkCreateDeviceDTO struct {
|
|
Devices []DeviceDTO `json:"devices" validate:"required,min=1,max=100"`
|
|
}
|
|
|
|
// BulkCreateDeviceWithImagesDTO for multipart form data with images
|
|
type BulkCreateDeviceWithImagesDTO struct {
|
|
Devices []DeviceDTO `json:"devices" validate:"required,min=1,max=100"`
|
|
// ImageIndexes maps device index to number of images for that device
|
|
// e.g., [2, 3, 1] means device[0] has 2 images, device[1] has 3 images, device[2] has 1 image
|
|
ImageIndexes []int `json:"image_indexes" validate:"required,dive,min=0"`
|
|
}
|
|
|
|
type BulkUpdateDeviceDTO struct {
|
|
DeviceIDs []uuid.UUID `json:"device_ids" validate:"required,min=1,max=100"`
|
|
Updates UpdateDeviceDTO `json:"updates" validate:"required"`
|
|
}
|
|
|
|
// BulkUpdateDeviceWithImagesDTO for multipart form data with images
|
|
type BulkUpdateDeviceWithImagesDTO struct {
|
|
DeviceIDs []uuid.UUID `json:"device_ids" validate:"required,min=1,max=100"`
|
|
Updates UpdateDeviceDTO `json:"updates" validate:"required"`
|
|
// ImageIndexes maps device index to number of images for that device
|
|
ImageIndexes []int `json:"image_indexes" validate:"required,dive,min=0"`
|
|
// ReplaceImages indicates whether to replace existing images or append
|
|
ReplaceImages bool `json:"replace_images"`
|
|
}
|
|
|
|
type BulkDeleteDeviceDTO struct {
|
|
DeviceIDs []uuid.UUID `json:"device_ids" validate:"required,min=1,max=100"`
|
|
}
|