NAM-APJATEL-BACKEND/usecase/tower_usecase.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
}