65 lines
1.3 KiB
Go
65 lines
1.3 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 TowerUseCase interface {
|
|
Post(tower req.TowerDTO) error
|
|
GetAll() ([]entity.Tower, error)
|
|
GetByID(id string) (entity.Tower, error)
|
|
}
|
|
|
|
type towerUsecase struct {
|
|
towerRepo repository.TowerRepo
|
|
validate *validator.Validate
|
|
}
|
|
|
|
func NewTowerUseCase(towerRepo repository.TowerRepo) TowerUseCase {
|
|
return &towerUsecase{
|
|
towerRepo: towerRepo,
|
|
validate: validator.New(),
|
|
}
|
|
}
|
|
|
|
func (u *towerUsecase) Post(tower req.TowerDTO) error {
|
|
err := u.validate.Struct(tower)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
newTower := entity.Tower{
|
|
ID: uuid.New(),
|
|
DeviceID: tower.DeviceID,
|
|
TowerCode: tower.TowerCode,
|
|
Longitude: tower.Longitude,
|
|
Latitude: tower.Latitude,
|
|
CreatedAt: time.Now(),
|
|
UpdatedAt: time.Now(),
|
|
}
|
|
|
|
return u.towerRepo.Post(newTower)
|
|
}
|
|
|
|
func (u *towerUsecase) GetAll() ([]entity.Tower, error) {
|
|
towers, err := u.towerRepo.GetAll()
|
|
if err != nil {
|
|
return towers, err
|
|
}
|
|
return towers, nil
|
|
}
|
|
|
|
|
|
func (u *towerUsecase) GetByID(id string) (entity.Tower, error) {
|
|
tower, err := u.towerRepo.GetByID(id)
|
|
if err != nil {
|
|
return tower, err
|
|
}
|
|
return tower, nil
|
|
} |