85 lines
1.9 KiB
Go
85 lines
1.9 KiB
Go
package usecase
|
|
|
|
import (
|
|
"time"
|
|
"users_management/m/model/dto/req"
|
|
"users_management/m/model/entity"
|
|
"users_management/m/repository"
|
|
|
|
"github.com/go-playground/validator/v10"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type DevicePortUseCase interface {
|
|
CreateDevicePort(devicePort req.DevicePort) error
|
|
GetAllDevicePort() ([]entity.DevicePort, error)
|
|
|
|
GetByID(id uuid.UUID) (entity.DevicePort, error)
|
|
UpdateDevicePort(id uuid.UUID, devicePort req.UpdateDevicePort) error
|
|
}
|
|
|
|
type devicePortUseCase struct {
|
|
devicePortRepo repository.DevicePortRepo
|
|
validate *validator.Validate
|
|
}
|
|
|
|
func NewDevicePortUseCase(devicePortRepo repository.DevicePortRepo) DevicePortUseCase {
|
|
return &devicePortUseCase{
|
|
devicePortRepo: devicePortRepo,
|
|
validate: validator.New(),
|
|
}
|
|
}
|
|
|
|
func (u *devicePortUseCase) CreateDevicePort(devicePort req.DevicePort) error {
|
|
err := u.validate.Struct(devicePort)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
newDevicePort := entity.DevicePort{
|
|
ID: uuid.New(),
|
|
DeviceID: devicePort.DeviceID,
|
|
CreatedAt: time.Now(),
|
|
UpdatedAt: time.Now(),
|
|
}
|
|
|
|
return u.devicePortRepo.Post(newDevicePort)
|
|
}
|
|
|
|
func (u *devicePortUseCase) GetAllDevicePort() ([]entity.DevicePort, error) {
|
|
devicePorts, err := u.devicePortRepo.GetAll()
|
|
if err != nil {
|
|
return devicePorts, err
|
|
}
|
|
return devicePorts, nil
|
|
}
|
|
|
|
func (u *devicePortUseCase) GetByID(id uuid.UUID) (entity.DevicePort, error) {
|
|
devicePort, err := u.devicePortRepo.GetByID(id)
|
|
if err != nil {
|
|
return devicePort, err
|
|
}
|
|
|
|
return devicePort, nil
|
|
}
|
|
|
|
func (u *devicePortUseCase) UpdateDevicePort(id uuid.UUID, devicePort req.UpdateDevicePort) error {
|
|
err := u.validate.Struct(devicePort)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
updates := make(map[string]interface{})
|
|
|
|
if devicePort.DeviceID != nil {
|
|
updates["DeviceID"] = *devicePort.DeviceID
|
|
}
|
|
|
|
if devicePort.PortNumber != nil {
|
|
updates["PortNumber"] = *devicePort.PortNumber
|
|
}
|
|
|
|
updates["UpdatedAt"] = time.Now()
|
|
|
|
return u.devicePortRepo.Update(id, updates)
|
|
} |