diff --git a/repository/region.go b/repository/region.go deleted file mode 100644 index febecc5..0000000 --- a/repository/region.go +++ /dev/null @@ -1,24 +0,0 @@ -package repository - -import ( - "electricity_bill_calc/cache" - "electricity_bill_calc/global" - "electricity_bill_calc/model" -) - -type _RegionRepository struct{} - -var RegionRepo _RegionRepository - -func (_RegionRepository) FetchRegion(code string) (*model.Region, error) { - cachedRegion, _ := cache.RetreiveData[model.Region]("region", code) - if cachedRegion != nil { - return cachedRegion, nil - } - region := new(model.Region) - has, err := global.DBConn.ID(code).NoAutoCondition().Get(region) - if has { - cache.CacheData(region, "region", code) - } - return _postProcessSingle(region, has, err) -} diff --git a/service/region.go b/service/region.go index 293a649..c29f1bb 100644 --- a/service/region.go +++ b/service/region.go @@ -1,9 +1,9 @@ package service import ( + "electricity_bill_calc/cache" "electricity_bill_calc/global" "electricity_bill_calc/model" - "electricity_bill_calc/repository" "xorm.io/builder" ) @@ -21,15 +21,15 @@ func (_RegionService) FetchSubRegions(parent string) ([]model.Region, error) { return regions, err } -func (_RegionService) FetchAllParentRegions(code string) ([]model.Region, error) { +func (r _RegionService) FetchAllParentRegions(code string) ([]model.Region, error) { regions := make([]model.Region, 0) - region, err := repository.RegionRepo.FetchRegion(code) + region, err := r.fetchRegion(code) if err != nil { return regions, err } regions = append(regions, *region) for region.Level > 1 { - region, err = repository.RegionRepo.FetchRegion(region.Parent) + region, err = r.fetchRegion(region.Parent) if err != nil { return make([]model.Region, 0), nil } @@ -37,3 +37,16 @@ func (_RegionService) FetchAllParentRegions(code string) ([]model.Region, error) } return regions, nil } + +func (_RegionService) fetchRegion(code string) (*model.Region, error) { + cachedRegion, _ := cache.RetreiveData[model.Region]("region", code) + if cachedRegion != nil { + return cachedRegion, nil + } + region := new(model.Region) + has, err := global.DBConn.ID(code).NoAutoCondition().Get(region) + if has { + cache.CacheData(region, "region", code) + } + return _postProcessSingle(region, has, err) +}