This commit is contained in:
2025-04-02 21:36:13 +08:00
parent 95f230b996
commit 63f434fd93
5 changed files with 149 additions and 54 deletions

View File

@@ -215,16 +215,24 @@ export async function getGeoAnalytics(params: {
startTime?: string;
endTime?: string;
linkId?: string;
groupBy?: 'country' | 'city' | 'region' | 'continent';
teamIds?: string[];
projectIds?: string[];
tagIds?: string[];
}): Promise<GeoData[]> {
const filter = buildFilter(params);
// Use IP address as the grouping field
// Choose grouping field based on selected view
let groupByField = 'country';
if (params.groupBy === 'city') groupByField = 'city';
else if (params.groupBy === 'region') groupByField = 'region';
else if (params.groupBy === 'continent') groupByField = 'continent';
else if (!params.groupBy) groupByField = 'ip_address'; // Default to IP address if no groupBy is specified
const query = `
SELECT
ip_address as location,
COALESCE(${groupByField}, 'Unknown') as location,
'' as area, /* Area column - empty for now */
count() as visits,
uniq(ip_address) as visitors,
count() * 100.0 / sum(count()) OVER () as percentage