92 lines
2.1 KiB
Go
92 lines
2.1 KiB
Go
package usecase
|
|
|
|
import (
|
|
"fmt"
|
|
"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 BackboneUseCase interface {
|
|
CreateBackbone(backbone req.BackboneDTO) error
|
|
GetAllBackbone() ([]entity.Backbone, error)
|
|
|
|
GetByID(id uuid.UUID) (entity.Backbone, error)
|
|
UpdateBackbone(id uuid.UUID, backbone req.UpdateBackboneDTO) error
|
|
}
|
|
|
|
type backboneUseCase struct {
|
|
backboneRepo repository.BackboneRepo
|
|
validate *validator.Validate
|
|
}
|
|
|
|
func NewBackboneUseCase(backboneRepo repository.BackboneRepo) BackboneUseCase {
|
|
return &backboneUseCase{
|
|
backboneRepo: backboneRepo,
|
|
validate: validator.New(),
|
|
}
|
|
}
|
|
|
|
func (u *backboneUseCase) CreateBackbone(backbone req.BackboneDTO) error {
|
|
err := u.validate.Struct(backbone)
|
|
if err != nil {
|
|
return fmt.Errorf("validation error: %w", err)
|
|
}
|
|
|
|
newBackbone := entity.Backbone{
|
|
ID: uuid.New(),
|
|
DeviceStartID: backbone.DeviceStartID,
|
|
DeviceEndID: backbone.DeviceEndID,
|
|
CoreAmount: backbone.CoreAmount,
|
|
CreatedAt: time.Now(),
|
|
UpdatedAt: time.Now(),
|
|
}
|
|
|
|
|
|
return u.backboneRepo.Post(newBackbone)
|
|
}
|
|
|
|
func (u *backboneUseCase) GetAllBackbone() ([]entity.Backbone, error) {
|
|
backbones, err := u.backboneRepo.GetAll()
|
|
if err != nil {
|
|
return backbones, err
|
|
}
|
|
return backbones, nil
|
|
}
|
|
|
|
func (u *backboneUseCase) GetByID(id uuid.UUID) (entity.Backbone, error) {
|
|
backbone, err := u.backboneRepo.GetByID(id)
|
|
if err != nil {
|
|
return backbone, err
|
|
}
|
|
return backbone, nil
|
|
}
|
|
|
|
func (u *backboneUseCase) UpdateBackbone(id uuid.UUID, backbone req.UpdateBackboneDTO) error {
|
|
err := u.validate.Struct(backbone)
|
|
if err != nil {
|
|
return fmt.Errorf("validation error: %w", err)
|
|
}
|
|
|
|
updates := make(map[string]interface{})
|
|
|
|
if backbone.DeviceStartID != nil {
|
|
updates["DeviceStartID"] = backbone.DeviceStartID
|
|
}
|
|
|
|
if backbone.DeviceEndID != nil {
|
|
updates["DeviceEndID"] = backbone.DeviceEndID
|
|
}
|
|
|
|
if backbone.CoreAmount != nil {
|
|
updates["CoreAmount"] = backbone.CoreAmount
|
|
}
|
|
|
|
updates["UpdatedAt"] = time.Now()
|
|
|
|
return u.backboneRepo.Update(id, updates)
|
|
} |