NAM-APJATEL-BACKEND/model/dto/req/device_dto.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"`
}