package service import ( "electricity_bill_calc/global" "electricity_bill_calc/model" "electricity_bill_calc/repository" "xorm.io/builder" ) type _RegionService struct{} var RegionService _RegionService func (_RegionService) FetchSubRegions(parent string) ([]model.Region, error) { regions := make([]model.Region, 0) err := global.DBConn.Where(builder.Eq{"parent": parent}).Asc("code").Find(®ions) if err != nil { return make([]model.Region, 0), err } return regions, err } func (_RegionService) FetchAllParentRegions(code string) ([]model.Region, error) { regions := make([]model.Region, 0) region, err := repository.RegionRepo.FetchRegion(code) if err != nil { return regions, err } regions = append(regions, *region) for region.Level > 1 { region, err = repository.RegionRepo.FetchRegion(region.Parent) if err != nil { return make([]model.Region, 0), nil } regions = append(regions, *region) } return regions, nil }