MIF_E31222379_BE/internal/repositories/coveragearea.go

71 lines
1.9 KiB
Go

package repositories
import (
"errors"
"github.com/pahmiudahgede/senggoldong/config"
"github.com/pahmiudahgede/senggoldong/domain"
)
func GetCoverageAreas() ([]domain.CoverageArea, error) {
var coverageAreas []domain.CoverageArea
if err := config.DB.Preload("Details").Find(&coverageAreas).Error; err != nil {
return nil, err
}
return coverageAreas, nil
}
func GetCoverageAreaByID(id string) (domain.CoverageArea, error) {
var coverageArea domain.CoverageArea
if err := config.DB.Preload("Details").Where("id = ?", id).First(&coverageArea).Error; err != nil {
return coverageArea, errors.New("coverage area not found")
}
return coverageArea, nil
}
func GetCoverageAreaByDistrictID(id string) (domain.CoverageDetail, error) {
var coverageDetail domain.CoverageDetail
if err := config.DB.Preload("LocationSpecific").Where("id = ?", id).First(&coverageDetail).Error; err != nil {
return coverageDetail, err
}
return coverageDetail, nil
}
func CreateCoverageArea(province string) (domain.CoverageArea, error) {
coverageArea := domain.CoverageArea{
Province: province,
}
if err := config.DB.Create(&coverageArea).Error; err != nil {
return domain.CoverageArea{}, err
}
return coverageArea, nil
}
func CreateCoverageDetail(coverageAreaID, province, district string) (domain.CoverageDetail, error) {
coverageDetail := domain.CoverageDetail{
CoverageAreaID: coverageAreaID,
District: district,
}
if err := config.DB.Create(&coverageDetail).Error; err != nil {
return domain.CoverageDetail{}, err
}
return coverageDetail, nil
}
func CreateLocationSpecific(coverageDetailID, subdistrict string) (domain.LocationSpecific, error) {
locationSpecific := domain.LocationSpecific{
CoverageDetailID: coverageDetailID,
Subdistrict: subdistrict,
}
if err := config.DB.Create(&locationSpecific).Error; err != nil {
return domain.LocationSpecific{}, err
}
return locationSpecific, nil
}