优化代码结构,修复查询逻辑,添加构建脚本

This commit is contained in:
2025-08-09 16:17:41 +08:00
parent 4bbc05fe1f
commit 3782feaf85
8 changed files with 38 additions and 15 deletions

View File

@@ -2,8 +2,9 @@ package actions
import (
"fmt"
"gorm.io/gorm"
"zzman/model"
"gorm.io/gorm"
)
func FindCities(tx *gorm.DB) ([]model.City, error) {
@@ -15,15 +16,24 @@ func FindCities(tx *gorm.DB) ([]model.City, error) {
}
func FindCitiesWithEdgesCount(tx *gorm.DB) ([]model.City, error) {
var cities []model.City
var datas []struct {
model.City
EdgesCount int `gorm:"column:edges_count"`
}
err := tx.Debug().
Select("cities.*, COUNT(edges.id) AS edges_count").
Joins("LEFT JOIN edges ON edges.city_id = cities.id").
Group("cities.id").
Find(&cities).Error
Select("cityhash.*, COUNT(edge.id) AS edges_count").
Joins("LEFT JOIN edge ON edge.city_id = cityhash.id").
Where("cityhash.label IS NOT NULL").
Group("cityhash.id").
Find(&datas).Error
if err != nil {
return nil, fmt.Errorf("failed to find cities with edges count: %w", err)
}
var cities = make([]model.City, len(datas))
for i, data := range datas {
cities[i] = data.City
cities[i].EdgesCount = data.EdgesCount
}
return cities, nil
}