From adf2d1f379d007a80f61bd08a1afd2019a0039a8 Mon Sep 17 00:00:00 2001 From: areeqakbr Date: Thu, 13 Feb 2025 15:47:01 +0700 Subject: [PATCH] adding get by id --- delivery/controller/backbone_controller.go | 15 +++++++++++++++ delivery/controller/devicePort_controller.go | 15 +++++++++++++++ delivery/controller/devices_controller.go | 15 +++++++++++++++ delivery/controller/fishbone_controller.go | 15 +++++++++++++++ delivery/controller/tower_controller.go | 15 +++++++++++++++ repository/backbone_repo.go | 11 +++++++++++ repository/devicePort_repo.go | 12 ++++++++++++ repository/devices_repo.go | 11 +++++++++++ repository/fishbone_repo.go | 11 +++++++++++ repository/tower_repo.go | 10 ++++++++++ usecase/backbone_usecase.go | 10 ++++++++++ usecase/devicePort_repo.go | 11 +++++++++++ usecase/device_usecase.go | 10 ++++++++++ usecase/fishbone_usecase.go | 9 +++++++++ usecase/tower_usecase.go | 10 ++++++++++ 15 files changed, 180 insertions(+) diff --git a/delivery/controller/backbone_controller.go b/delivery/controller/backbone_controller.go index bf49d93..f21cc0c 100644 --- a/delivery/controller/backbone_controller.go +++ b/delivery/controller/backbone_controller.go @@ -18,6 +18,7 @@ func (bc *BackboneController) Route() { rg := bc.rg.Group("/backbone") rg.GET("", bc.GetBackbone()) rg.POST("", bc.CreateBackbone()) + rg.GET("/:id", bc.GetBackboneByID()) } func NewBackboneController(bu usecase.BackboneUseCase, rg *gin.RouterGroup) *BackboneController { @@ -59,4 +60,18 @@ func (bc *BackboneController) CreateBackbone() gin.HandlerFunc { common.SingleResponses(c, "Backbone has been created", nil) } +} + +func (bc *BackboneController) GetBackboneByID() gin.HandlerFunc { + return func(c *gin.Context) { + id := c.Param("id") + backbone, err := bc.bu.GetByID(id) + + if err != nil { + common.ErrorResponses(c, http.StatusBadRequest, err.Error()) + return + } + + common.SingleResponses(c, "Success", backbone) + } } \ No newline at end of file diff --git a/delivery/controller/devicePort_controller.go b/delivery/controller/devicePort_controller.go index 086d8e6..13d9ef6 100644 --- a/delivery/controller/devicePort_controller.go +++ b/delivery/controller/devicePort_controller.go @@ -18,6 +18,7 @@ func (dc *DevicePortController) Route() { rg := dc.rg.Group("/device-port") rg.GET("", dc.GetDevicePort()) rg.POST("", dc.CreateDevicePort()) + rg.GET("/:id", dc.GetDevicePortByID()) } func NewDevicePortController(du usecase.DevicePortUseCase, rg *gin.RouterGroup) *DevicePortController { @@ -59,4 +60,18 @@ func (dc *DevicePortController) CreateDevicePort() gin.HandlerFunc { common.SingleResponses(c, "Device Port has been created", nil) } +} + +func (dc *DevicePortController) GetDevicePortByID() gin.HandlerFunc { + return func(c *gin.Context) { + id := c.Param("id") + devicePort, err := dc.du.GetByID(id) + + if err != nil { + common.ErrorResponses(c, http.StatusBadRequest, err.Error()) + return + } + + common.SingleResponses(c, "Success", devicePort) + } } \ No newline at end of file diff --git a/delivery/controller/devices_controller.go b/delivery/controller/devices_controller.go index 3e2a2db..e781ea5 100644 --- a/delivery/controller/devices_controller.go +++ b/delivery/controller/devices_controller.go @@ -18,6 +18,7 @@ func (dc *DeviceController) Route() { rg := dc.rg.Group("/devices") rg.POST("", dc.CreateDevice()) rg.GET("", dc.GetAllDevices()) + rg.GET("/:id", dc.GetDeviceByID()) } func NewDeviceController(du usecase.DeviceUseCase, rg *gin.RouterGroup) *DeviceController { @@ -59,4 +60,18 @@ func (dc *DeviceController) GetAllDevices() gin.HandlerFunc { common.SingleResponses(c, "Success", devices) } +} + +func (dc *DeviceController) GetDeviceByID() gin.HandlerFunc { + return func(c *gin.Context) { + id := c.Param("id") + device, err := dc.du.GetByID(id) + + if err != nil { + common.ErrorResponses(c, http.StatusBadRequest, err.Error()) + return + } + + common.SingleResponses(c, "Success", device) + } } \ No newline at end of file diff --git a/delivery/controller/fishbone_controller.go b/delivery/controller/fishbone_controller.go index a8604f7..318e716 100644 --- a/delivery/controller/fishbone_controller.go +++ b/delivery/controller/fishbone_controller.go @@ -18,6 +18,7 @@ func (fc *FishboneController) Route() { rg := fc.rg.Group("/fishbone") rg.GET("", fc.GetFishbone()) rg.POST("", fc.CreateFishbone()) + rg.GET("/:id", fc.GetFishboneByID()) } func NewFishboneController(fu usecase.FishboneUseCase, rg *gin.RouterGroup) *FishboneController { @@ -59,4 +60,18 @@ func (fc *FishboneController) CreateFishbone() gin.HandlerFunc { common.SingleResponses(c, "Fishbone has been created", nil) } +} + +func (fc *FishboneController) GetFishboneByID() gin.HandlerFunc { + return func(c *gin.Context) { + id := c.Param("id") + fishbone, err := fc.fu.GetByID(id) + + if err != nil { + common.ErrorResponses(c, http.StatusBadRequest, err.Error()) + return + } + + common.SingleResponses(c, "Success", fishbone) + } } \ No newline at end of file diff --git a/delivery/controller/tower_controller.go b/delivery/controller/tower_controller.go index 3af9600..763238e 100644 --- a/delivery/controller/tower_controller.go +++ b/delivery/controller/tower_controller.go @@ -18,6 +18,7 @@ func (tc *TowerController) Route() { rg := tc.rg.Group("/tower") rg.GET("", tc.GetTower()) rg.POST("", tc.CreateTower()) + rg.GET("/:id", tc.GetTowerByID()) } func NewTowerController(tu usecase.TowerUseCase, rg *gin.RouterGroup) *TowerController { @@ -59,4 +60,18 @@ func (tc *TowerController) CreateTower() gin.HandlerFunc { common.SingleResponses(c, "Tower has been created", nil) } +} + +func (tc *TowerController) GetTowerByID() gin.HandlerFunc { + return func(c *gin.Context) { + id := c.Param("id") + tower, err := tc.tu.GetByID(id) + + if err != nil { + common.ErrorResponses(c, http.StatusBadRequest, err.Error()) + return + } + + common.SingleResponses(c, "Success", tower) + } } \ No newline at end of file diff --git a/repository/backbone_repo.go b/repository/backbone_repo.go index 70c275e..e86108a 100644 --- a/repository/backbone_repo.go +++ b/repository/backbone_repo.go @@ -10,6 +10,8 @@ type BackboneRepo interface { Post(backbone entity.Backbone) error GetAll() ([]entity.Backbone, error) Update(backbone entity.Backbone) error + + GetByID(id string) (entity.Backbone, error) } type backboneRepo struct { @@ -45,4 +47,13 @@ func (r *backboneRepo) Update(backbone entity.Backbone) error { return err } return nil +} + +func (r *backboneRepo) GetByID(id string) (entity.Backbone, error) { + var backbone entity.Backbone + err := r.db.Where("id = ?", id).First(&backbone).Error + if err != nil { + return backbone, err + } + return backbone, nil } \ No newline at end of file diff --git a/repository/devicePort_repo.go b/repository/devicePort_repo.go index 48b208e..8746483 100644 --- a/repository/devicePort_repo.go +++ b/repository/devicePort_repo.go @@ -10,6 +10,8 @@ type DevicePortRepo interface { Post(devicePort entity.DevicePort) error GetAll() ([]entity.DevicePort, error) Update(devicePort entity.DevicePort) error + + GetByID(id string) (entity.DevicePort, error) } type devicePortRepo struct { @@ -45,4 +47,14 @@ func (r *devicePortRepo) Update(devicePort entity.DevicePort) error { return err } return nil +} + +func (r *devicePortRepo) GetByID(id string) (entity.DevicePort, error) { + var devicePort entity.DevicePort + err := r.db.Where("id = ?", id).First(&devicePort).Error + if err != nil { + return devicePort, err + } + + return devicePort, nil } \ No newline at end of file diff --git a/repository/devices_repo.go b/repository/devices_repo.go index 5d8b2d6..13e8eef 100644 --- a/repository/devices_repo.go +++ b/repository/devices_repo.go @@ -10,6 +10,8 @@ type DevicesRepo interface { Post(device entity.Device) error GetAll() ([]entity.Device, error) Update(device entity.Device) error + + GetByID(id string) (entity.Device, error) } type devicesRepo struct { @@ -45,3 +47,12 @@ func (r *devicesRepo) Update(device entity.Device) error { } return nil } + +func (r *devicesRepo) GetByID(id string) (entity.Device, error) { + var device entity.Device + err := r.db.Where("id = ?", id).First(&device).Error + if err != nil { + return device, err + } + return device, nil +} diff --git a/repository/fishbone_repo.go b/repository/fishbone_repo.go index 966a57d..192cd16 100644 --- a/repository/fishbone_repo.go +++ b/repository/fishbone_repo.go @@ -10,6 +10,8 @@ type FishboneRepo interface { Post(fishbone entity.Fishbone) error GetAll() ([]entity.Fishbone, error) Update(fishbone entity.Fishbone) error + + GetByID(id string) (entity.Fishbone, error) } type fishboneRepo struct { @@ -45,4 +47,13 @@ func (r *fishboneRepo) Update(fishbone entity.Fishbone) error { return err } return nil +} + +func (r *fishboneRepo) GetByID(id string) (entity.Fishbone, error) { + var fishbone entity.Fishbone + err := r.db.Where("id = ?", id).First(&fishbone).Error + if err != nil { + return fishbone, err + } + return fishbone, nil } \ No newline at end of file diff --git a/repository/tower_repo.go b/repository/tower_repo.go index 63220d0..d3cd990 100644 --- a/repository/tower_repo.go +++ b/repository/tower_repo.go @@ -10,6 +10,7 @@ type TowerRepo interface { Post(tower entity.Tower) error GetAll() ([]entity.Tower, error) Update(tower entity.Tower) error + GetByID(id string) (entity.Tower, error) } type towerRepo struct { @@ -46,3 +47,12 @@ func (r *towerRepo) Update(tower entity.Tower) error { } return nil } + +func (r *towerRepo) GetByID(id string) (entity.Tower, error) { + var tower entity.Tower + err := r.db.Where("id = ?", id).First(&tower).Error + if err != nil { + return tower, err + } + return tower, nil +} \ No newline at end of file diff --git a/usecase/backbone_usecase.go b/usecase/backbone_usecase.go index a63668c..9bf4ed4 100644 --- a/usecase/backbone_usecase.go +++ b/usecase/backbone_usecase.go @@ -14,6 +14,8 @@ import ( type BackboneUseCase interface { CreateBackbone(backbone req.BackboneDTO) error GetAllBackbone() ([]entity.Backbone, error) + + GetByID(id string) (entity.Backbone, error) } type backboneUseCase struct { @@ -53,4 +55,12 @@ func (u *backboneUseCase) GetAllBackbone() ([]entity.Backbone, error) { return backbones, err } return backbones, nil +} + +func (u *backboneUseCase) GetByID(id string) (entity.Backbone, error) { + backbone, err := u.backboneRepo.GetByID(id) + if err != nil { + return backbone, err + } + return backbone, nil } \ No newline at end of file diff --git a/usecase/devicePort_repo.go b/usecase/devicePort_repo.go index c9eb1d5..9ee07cc 100644 --- a/usecase/devicePort_repo.go +++ b/usecase/devicePort_repo.go @@ -13,6 +13,8 @@ import ( type DevicePortUseCase interface { CreateDevicePort(devicePort req.DevicePort) error GetAllDevicePort() ([]entity.DevicePort, error) + + GetByID(id string) (entity.DevicePort, error) } type devicePortUseCase struct { @@ -50,4 +52,13 @@ func (u *devicePortUseCase) GetAllDevicePort() ([]entity.DevicePort, error) { return devicePorts, err } return devicePorts, nil +} + +func (u *devicePortUseCase) GetByID(id string) (entity.DevicePort, error) { + devicePort, err := u.devicePortRepo.GetByID(id) + if err != nil { + return devicePort, err + } + + return devicePort, nil } \ No newline at end of file diff --git a/usecase/device_usecase.go b/usecase/device_usecase.go index e4bd796..6a13a02 100644 --- a/usecase/device_usecase.go +++ b/usecase/device_usecase.go @@ -14,6 +14,8 @@ import ( type DeviceUseCase interface { CreateDevice(device req.DeviceDTO) error GetAllDevices() ([]entity.Device, error) + + GetByID(id string) (entity.Device, error) } type deviceUseCase struct { @@ -55,4 +57,12 @@ func (u *deviceUseCase) GetAllDevices() ([]entity.Device, error) { return devices, err } return devices, nil +} + +func (u *deviceUseCase) GetByID(id string) (entity.Device, error) { + device, err := u.deviceRepo.GetByID(id) + if err != nil { + return device, err + } + return device, nil } \ No newline at end of file diff --git a/usecase/fishbone_usecase.go b/usecase/fishbone_usecase.go index 3697b21..7618055 100644 --- a/usecase/fishbone_usecase.go +++ b/usecase/fishbone_usecase.go @@ -13,6 +13,7 @@ import ( type FishboneUseCase interface { CreateFishbone(fishbone req.FishboneDTO) error GetAllFishbone() ([]entity.Fishbone, error) + GetByID(id string) (entity.Fishbone, error) } type fishboneUsecase struct { @@ -53,3 +54,11 @@ func (u *fishboneUsecase) GetAllFishbone() ([]entity.Fishbone, error) { } return fishbones, nil } + +func (u *fishboneUsecase) GetByID(id string) (entity.Fishbone, error) { + fishbone, err := u.fishboneRepo.GetByID(id) + if err != nil { + return fishbone, err + } + return fishbone, nil +} diff --git a/usecase/tower_usecase.go b/usecase/tower_usecase.go index 5407cdb..264cbd3 100644 --- a/usecase/tower_usecase.go +++ b/usecase/tower_usecase.go @@ -13,6 +13,7 @@ import ( type TowerUseCase interface { Post(tower req.TowerDTO) error GetAll() ([]entity.Tower, error) + GetByID(id string) (entity.Tower, error) } type towerUsecase struct { @@ -52,4 +53,13 @@ func (u *towerUsecase) GetAll() ([]entity.Tower, error) { 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 } \ No newline at end of file