package dao

import (
	"context"
	"fmt"

	"github.com/go-redis/redis/v8"
	"github.com/lvhao0419/fetch_flash/resource"
)

func StorePlaceLocation(ctx context.Context, placeID string, lng, lat float64) error {
	location := &redis.GeoLocation{
		Name:      placeID, // 场馆唯一标识
		Longitude: lng,     // 经度
		Latitude:  lat,     // 纬度
	}

	_, err := resource.RedisClient.GeoAdd(ctx, "place_locations", location).Result()
	return err
}

func SearchNearbyPlaces(ctx context.Context, lng, lat float64, radius float64) []string {
	query := &redis.GeoRadiusQuery{
		Radius:    radius, // 搜索半径
		Unit:      "km",   // 单位：公里
		WithCoord: true,   // 返回坐标
		WithDist:  true,   // 返回距离
		Count:     50,     // 最大结果数
		Sort:      "ASC",  // 按距离排序
	}

	results, _ := resource.RedisClient.GeoRadius(ctx, "place_locations", lng, lat, query).Result()

	ret := []string{}
	for _, loc := range results {
		fmt.Printf("场馆 %s 距离 %.2fkm | 坐标(%.6f,%.6f)\n",
			loc.Name, loc.Dist, loc.Longitude, loc.Latitude)

		ret = append(ret, loc.Name)
	}

	return ret
}
