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"` }