From ae02ded7e602dfa988cf5bdb9c7c3b29fecbc197 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sat, 24 Jan 2026 23:13:05 +0100 Subject: [PATCH] Remove limits that nobody ever asked for --- analytics_queries.go | 55 +++++++++++++-------------------- analytics_test.go | 22 ++++++------- api.go | 73 ++++++++------------------------------------ db.go | 62 +++++++------------------------------ 4 files changed, 57 insertions(+), 155 deletions(-) diff --git a/analytics_queries.go b/analytics_queries.go index 14cfcfe..4944466 100644 --- a/analytics_queries.go +++ b/analytics_queries.go @@ -153,7 +153,7 @@ func (db *DBWrapper) QueryTimeByMonth(ctx context.Context, filters AnalyticsFilt } // Location aggregation queries -func (db *DBWrapper) QueryLocationBySystem(ctx context.Context, filters AnalyticsFilters, limit int) ([]LocationAggregationBySystem, error) { +func (db *DBWrapper) QueryLocationBySystem(ctx context.Context, filters AnalyticsFilters) ([]LocationAggregationBySystem, error) { flog := logger.Default.WithPrefix("QueryLocationBySystem") whereClause, args := buildWhereClause(filters) @@ -169,8 +169,7 @@ func (db *DBWrapper) QueryLocationBySystem(ctx context.Context, filters Analytic %s GROUP BY solar_system_name, region_name, security ORDER BY kill_count DESC - LIMIT %d - `, whereClause, limit) + `, whereClause) flog.Debug("Executing query: %s", query) rows, err := db.ch.Query(ctx, query, args...) @@ -296,7 +295,7 @@ func (db *DBWrapper) QueryLocationBySecurity(ctx context.Context, filters Analyt } // Ship aggregation queries -func (db *DBWrapper) QueryShipByVictim(ctx context.Context, filters AnalyticsFilters, limit int) ([]ShipAggregationByVictimShip, error) { +func (db *DBWrapper) QueryShipByVictim(ctx context.Context, filters AnalyticsFilters) ([]ShipAggregationByVictimShip, error) { flog := logger.Default.WithPrefix("QueryShipByVictim") whereClause, args := buildWhereClause(filters) @@ -311,8 +310,7 @@ func (db *DBWrapper) QueryShipByVictim(ctx context.Context, filters AnalyticsFil %s GROUP BY victim_ship_type_name, victim_ship_group_name, victim_ship_category_name ORDER BY kill_count DESC - LIMIT %d - `, whereClause, limit) + `, whereClause) flog.Debug("Executing query: %s", query) rows, err := db.ch.Query(ctx, query, args...) @@ -332,7 +330,7 @@ func (db *DBWrapper) QueryShipByVictim(ctx context.Context, filters AnalyticsFil return results, nil } -func (db *DBWrapper) QueryShipByAttacker(ctx context.Context, filters AnalyticsFilters, limit int) ([]ShipAggregationByAttackerShip, error) { +func (db *DBWrapper) QueryShipByAttacker(ctx context.Context, filters AnalyticsFilters) ([]ShipAggregationByAttackerShip, error) { flog := logger.Default.WithPrefix("QueryShipByAttacker") killmailSubquery, killmailArgs := getKillmailIDSubquery(filters) whereClause, whereArgs := buildAttackerWhereClause(filters) @@ -351,8 +349,7 @@ func (db *DBWrapper) QueryShipByAttacker(ctx context.Context, filters AnalyticsF %s GROUP BY ship_type_name, ship_group_name ORDER BY kills_participated DESC - LIMIT %d - `, killmailSubquery, whereClause, limit) + `, killmailSubquery, whereClause) flog.Debug("Executing query: %s", query) rows, err := db.ch.Query(ctx, query, args...) @@ -373,7 +370,7 @@ func (db *DBWrapper) QueryShipByAttacker(ctx context.Context, filters AnalyticsF } // Player aggregation queries -func (db *DBWrapper) QueryPlayerByVictimCharacter(ctx context.Context, filters AnalyticsFilters, limit int) ([]PlayerAggregationByVictimCharacter, error) { +func (db *DBWrapper) QueryPlayerByVictimCharacter(ctx context.Context, filters AnalyticsFilters) ([]PlayerAggregationByVictimCharacter, error) { flog := logger.Default.WithPrefix("QueryPlayerByVictimCharacter") whereClause, args := buildWhereClause(filters) @@ -388,8 +385,7 @@ func (db *DBWrapper) QueryPlayerByVictimCharacter(ctx context.Context, filters A %s GROUP BY victim_character_name, victim_corporation_name, victim_alliance_name ORDER BY deaths DESC - LIMIT %d - `, whereClause, limit) + `, whereClause) flog.Debug("Executing query: %s", query) rows, err := db.ch.Query(ctx, query, args...) @@ -409,7 +405,7 @@ func (db *DBWrapper) QueryPlayerByVictimCharacter(ctx context.Context, filters A return results, nil } -func (db *DBWrapper) QueryPlayerByVictimCorporation(ctx context.Context, filters AnalyticsFilters, limit int) ([]PlayerAggregationByVictimCorporation, error) { +func (db *DBWrapper) QueryPlayerByVictimCorporation(ctx context.Context, filters AnalyticsFilters) ([]PlayerAggregationByVictimCorporation, error) { flog := logger.Default.WithPrefix("QueryPlayerByVictimCorporation") whereClause, args := buildWhereClause(filters) @@ -423,8 +419,7 @@ func (db *DBWrapper) QueryPlayerByVictimCorporation(ctx context.Context, filters %s GROUP BY victim_corporation_name, victim_alliance_name ORDER BY losses DESC - LIMIT %d - `, whereClause, limit) + `, whereClause) flog.Debug("Executing query: %s", query) rows, err := db.ch.Query(ctx, query, args...) @@ -444,7 +439,7 @@ func (db *DBWrapper) QueryPlayerByVictimCorporation(ctx context.Context, filters return results, nil } -func (db *DBWrapper) QueryPlayerByVictimAlliance(ctx context.Context, filters AnalyticsFilters, limit int) ([]PlayerAggregationByVictimAlliance, error) { +func (db *DBWrapper) QueryPlayerByVictimAlliance(ctx context.Context, filters AnalyticsFilters) ([]PlayerAggregationByVictimAlliance, error) { flog := logger.Default.WithPrefix("QueryPlayerByVictimAlliance") whereClause, args := buildWhereClause(filters) @@ -465,8 +460,7 @@ func (db *DBWrapper) QueryPlayerByVictimAlliance(ctx context.Context, filters An %s GROUP BY victim_alliance_name ORDER BY losses DESC - LIMIT %d - `, whereWithAlliance, limit) + `, whereWithAlliance) flog.Debug("Executing query: %s", query) rows, err := db.ch.Query(ctx, query, args...) @@ -486,7 +480,7 @@ func (db *DBWrapper) QueryPlayerByVictimAlliance(ctx context.Context, filters An return results, nil } -func (db *DBWrapper) QueryPlayerByAttackerCharacter(ctx context.Context, filters AnalyticsFilters, limit int) ([]PlayerAggregationByAttackerCharacter, error) { +func (db *DBWrapper) QueryPlayerByAttackerCharacter(ctx context.Context, filters AnalyticsFilters) ([]PlayerAggregationByAttackerCharacter, error) { flog := logger.Default.WithPrefix("QueryPlayerByAttackerCharacter") killmailSubquery, killmailArgs := getKillmailIDSubquery(filters) whereClause, whereArgs := buildAttackerWhereClause(filters) @@ -505,8 +499,7 @@ func (db *DBWrapper) QueryPlayerByAttackerCharacter(ctx context.Context, filters %s GROUP BY character_name, corporation_name, alliance_name ORDER BY kills_participated DESC - LIMIT %d - `, killmailSubquery, whereClause, limit) + `, killmailSubquery, whereClause) flog.Debug("Executing query: %s", query) rows, err := db.ch.Query(ctx, query, args...) @@ -526,7 +519,7 @@ func (db *DBWrapper) QueryPlayerByAttackerCharacter(ctx context.Context, filters return results, nil } -func (db *DBWrapper) QueryPlayerByAttackerCorporation(ctx context.Context, filters AnalyticsFilters, limit int) ([]PlayerAggregationByAttackerCorporation, error) { +func (db *DBWrapper) QueryPlayerByAttackerCorporation(ctx context.Context, filters AnalyticsFilters) ([]PlayerAggregationByAttackerCorporation, error) { flog := logger.Default.WithPrefix("QueryPlayerByAttackerCorporation") killmailSubquery, killmailArgs := getKillmailIDSubquery(filters) whereClause, whereArgs := buildAttackerWhereClause(filters) @@ -543,8 +536,7 @@ func (db *DBWrapper) QueryPlayerByAttackerCorporation(ctx context.Context, filte %s GROUP BY corporation_name, alliance_name ORDER BY kills_participated DESC - LIMIT %d - `, killmailSubquery, whereClause, limit) + `, killmailSubquery, whereClause) flog.Debug("Executing query: %s", query) rows, err := db.ch.Query(ctx, query, args...) @@ -564,7 +556,7 @@ func (db *DBWrapper) QueryPlayerByAttackerCorporation(ctx context.Context, filte return results, nil } -func (db *DBWrapper) QueryPlayerByAttackerAlliance(ctx context.Context, filters AnalyticsFilters, limit int) ([]PlayerAggregationByAttackerAlliance, error) { +func (db *DBWrapper) QueryPlayerByAttackerAlliance(ctx context.Context, filters AnalyticsFilters) ([]PlayerAggregationByAttackerAlliance, error) { flog := logger.Default.WithPrefix("QueryPlayerByAttackerAlliance") killmailSubquery, killmailArgs := getKillmailIDSubquery(filters) whereClause, whereArgs := buildAttackerWhereClause(filters) @@ -581,8 +573,7 @@ func (db *DBWrapper) QueryPlayerByAttackerAlliance(ctx context.Context, filters %s AND alliance_name != '' GROUP BY alliance_name ORDER BY kills_participated DESC - LIMIT %d - `, killmailSubquery, whereClause, limit) + `, killmailSubquery, whereClause) flog.Debug("Executing query: %s", query) rows, err := db.ch.Query(ctx, query, args...) @@ -652,7 +643,7 @@ func (db *DBWrapper) QueryModuleBySlotType(ctx context.Context, filters Analytic return results, nil } -func (db *DBWrapper) QueryModuleByModule(ctx context.Context, filters AnalyticsFilters, limit int) ([]ModuleAggregationByModule, error) { +func (db *DBWrapper) QueryModuleByModule(ctx context.Context, filters AnalyticsFilters) ([]ModuleAggregationByModule, error) { flog := logger.Default.WithPrefix("QueryModuleByModule") killmailSubquery, killmailArgs := getKillmailIDSubquery(filters) @@ -682,8 +673,7 @@ func (db *DBWrapper) QueryModuleByModule(ctx context.Context, filters AnalyticsF %s GROUP BY item_type_name, item_group_name, item_category_name ORDER BY times_fitted DESC - LIMIT %d - `, killmailSubquery, slotTypeFilter, limit) + `, killmailSubquery, slotTypeFilter) flog.Debug("Executing query: %s", query) rows, err := db.ch.Query(ctx, query, args...) @@ -703,7 +693,7 @@ func (db *DBWrapper) QueryModuleByModule(ctx context.Context, filters AnalyticsF return results, nil } -func (db *DBWrapper) QueryModuleCoOccurrence(ctx context.Context, filters AnalyticsFilters, selectedModule, selectedSlot string, limit int) ([]ModuleCoOccurrence, error) { +func (db *DBWrapper) QueryModuleCoOccurrence(ctx context.Context, filters AnalyticsFilters, selectedModule, selectedSlot string) ([]ModuleCoOccurrence, error) { flog := logger.Default.WithPrefix("QueryModuleCoOccurrence") killmailSubquery, killmailArgs := getKillmailIDSubquery(filters) @@ -726,8 +716,7 @@ func (db *DBWrapper) QueryModuleCoOccurrence(ctx context.Context, filters Analyt AND NOT (item_type_name = ? AND slot_type = ?) GROUP BY item_type_name, slot_type ORDER BY times_fitted_together DESC - LIMIT %d - `, killmailSubquery, limit) + `, killmailSubquery) args = append(args, selectedModule, selectedSlot) flog.Debug("Executing query: %s", query) diff --git a/analytics_test.go b/analytics_test.go index 574be44..17a5feb 100644 --- a/analytics_test.go +++ b/analytics_test.go @@ -126,7 +126,7 @@ func TestQueryLocationBySystem(t *testing.T) { ctx := context.Background() filters := AnalyticsFilters{} - results, err := db.QueryLocationBySystem(ctx, filters, 10) + results, err := db.QueryLocationBySystem(ctx, filters) if err != nil { t.Fatalf("QueryLocationBySystem failed: %v", err) } @@ -235,7 +235,7 @@ func TestQueryShipByVictim(t *testing.T) { ctx := context.Background() filters := AnalyticsFilters{} - results, err := db.QueryShipByVictim(ctx, filters, 10) + results, err := db.QueryShipByVictim(ctx, filters) if err != nil { t.Fatalf("QueryShipByVictim failed: %v", err) } @@ -263,7 +263,7 @@ func TestQueryShipByAttacker(t *testing.T) { ctx := context.Background() filters := AnalyticsFilters{} - results, err := db.QueryShipByAttacker(ctx, filters, 10) + results, err := db.QueryShipByAttacker(ctx, filters) if err != nil { t.Fatalf("QueryShipByAttacker failed: %v", err) } @@ -291,7 +291,7 @@ func TestQueryPlayerByVictimCharacter(t *testing.T) { ctx := context.Background() filters := AnalyticsFilters{} - results, err := db.QueryPlayerByVictimCharacter(ctx, filters, 10) + results, err := db.QueryPlayerByVictimCharacter(ctx, filters) if err != nil { t.Fatalf("QueryPlayerByVictimCharacter failed: %v", err) } @@ -319,7 +319,7 @@ func TestQueryPlayerByVictimCorporation(t *testing.T) { ctx := context.Background() filters := AnalyticsFilters{} - results, err := db.QueryPlayerByVictimCorporation(ctx, filters, 10) + results, err := db.QueryPlayerByVictimCorporation(ctx, filters) if err != nil { t.Fatalf("QueryPlayerByVictimCorporation failed: %v", err) } @@ -347,7 +347,7 @@ func TestQueryPlayerByVictimAlliance(t *testing.T) { ctx := context.Background() filters := AnalyticsFilters{} - results, err := db.QueryPlayerByVictimAlliance(ctx, filters, 10) + results, err := db.QueryPlayerByVictimAlliance(ctx, filters) if err != nil { t.Fatalf("QueryPlayerByVictimAlliance failed: %v", err) } @@ -375,7 +375,7 @@ func TestQueryPlayerByAttackerCharacter(t *testing.T) { ctx := context.Background() filters := AnalyticsFilters{} - results, err := db.QueryPlayerByAttackerCharacter(ctx, filters, 10) + results, err := db.QueryPlayerByAttackerCharacter(ctx, filters) if err != nil { t.Fatalf("QueryPlayerByAttackerCharacter failed: %v", err) } @@ -403,7 +403,7 @@ func TestQueryPlayerByAttackerCorporation(t *testing.T) { ctx := context.Background() filters := AnalyticsFilters{} - results, err := db.QueryPlayerByAttackerCorporation(ctx, filters, 10) + results, err := db.QueryPlayerByAttackerCorporation(ctx, filters) if err != nil { t.Fatalf("QueryPlayerByAttackerCorporation failed: %v", err) } @@ -431,7 +431,7 @@ func TestQueryPlayerByAttackerAlliance(t *testing.T) { ctx := context.Background() filters := AnalyticsFilters{} - results, err := db.QueryPlayerByAttackerAlliance(ctx, filters, 10) + results, err := db.QueryPlayerByAttackerAlliance(ctx, filters) if err != nil { t.Fatalf("QueryPlayerByAttackerAlliance failed: %v", err) } @@ -484,7 +484,7 @@ func TestQueryModuleByModule(t *testing.T) { ctx := context.Background() filters := AnalyticsFilters{} - results, err := db.QueryModuleByModule(ctx, filters, 10) + results, err := db.QueryModuleByModule(ctx, filters) if err != nil { t.Fatalf("QueryModuleByModule failed: %v", err) } @@ -512,7 +512,7 @@ func TestQueryModuleCoOccurrence(t *testing.T) { ctx := context.Background() filters := AnalyticsFilters{} - results, err := db.QueryModuleCoOccurrence(ctx, filters, "Stasis Webifier II", "mid", 10) + results, err := db.QueryModuleCoOccurrence(ctx, filters, "Stasis Webifier II", "mid") if err != nil { t.Fatalf("QueryModuleCoOccurrence failed: %v", err) } diff --git a/api.go b/api.go index 984685d..14cf67b 100644 --- a/api.go +++ b/api.go @@ -23,14 +23,12 @@ type APIStatisticsRequest struct { type APIAnalyticsRequest struct { Filters AnalyticsFilters `json:"filters"` - Limit *int `json:"limit,omitempty"` } type APIModuleCoOccurrenceRequest struct { Filters AnalyticsFilters `json:"filters"` - SelectedModule string `json:"selectedModule"` - SelectedSlot string `json:"selectedSlot"` - Limit *int `json:"limit,omitempty"` + SelectedModule string `json:"selectedModule"` + SelectedSlot string `json:"selectedSlot"` } type APISearchResult struct { @@ -132,11 +130,7 @@ func handleAnalyticsTimeByMonth(w http.ResponseWriter, r *http.Request) { func handleAnalyticsLocationBySystem(w http.ResponseWriter, r *http.Request) { handleAnalyticsQuery(w, r, func(db DB, req APIAnalyticsRequest) (interface{}, error) { - limit := 100 - if req.Limit != nil && *req.Limit > 0 { - limit = *req.Limit - } - return db.QueryLocationBySystem(r.Context(), req.Filters, limit) + return db.QueryLocationBySystem(r.Context(), req.Filters) }) } @@ -160,81 +154,49 @@ func handleAnalyticsLocationBySecurity(w http.ResponseWriter, r *http.Request) { func handleAnalyticsShipByVictim(w http.ResponseWriter, r *http.Request) { handleAnalyticsQuery(w, r, func(db DB, req APIAnalyticsRequest) (interface{}, error) { - limit := 100 - if req.Limit != nil && *req.Limit > 0 { - limit = *req.Limit - } - return db.QueryShipByVictim(r.Context(), req.Filters, limit) + return db.QueryShipByVictim(r.Context(), req.Filters) }) } func handleAnalyticsShipByAttacker(w http.ResponseWriter, r *http.Request) { handleAnalyticsQuery(w, r, func(db DB, req APIAnalyticsRequest) (interface{}, error) { - limit := 100 - if req.Limit != nil && *req.Limit > 0 { - limit = *req.Limit - } - return db.QueryShipByAttacker(r.Context(), req.Filters, limit) + return db.QueryShipByAttacker(r.Context(), req.Filters) }) } func handleAnalyticsPlayerByVictimCharacter(w http.ResponseWriter, r *http.Request) { handleAnalyticsQuery(w, r, func(db DB, req APIAnalyticsRequest) (interface{}, error) { - limit := 100 - if req.Limit != nil && *req.Limit > 0 { - limit = *req.Limit - } - return db.QueryPlayerByVictimCharacter(r.Context(), req.Filters, limit) + return db.QueryPlayerByVictimCharacter(r.Context(), req.Filters) }) } func handleAnalyticsPlayerByVictimCorporation(w http.ResponseWriter, r *http.Request) { handleAnalyticsQuery(w, r, func(db DB, req APIAnalyticsRequest) (interface{}, error) { - limit := 100 - if req.Limit != nil && *req.Limit > 0 { - limit = *req.Limit - } - return db.QueryPlayerByVictimCorporation(r.Context(), req.Filters, limit) + return db.QueryPlayerByVictimCorporation(r.Context(), req.Filters) }) } func handleAnalyticsPlayerByVictimAlliance(w http.ResponseWriter, r *http.Request) { handleAnalyticsQuery(w, r, func(db DB, req APIAnalyticsRequest) (interface{}, error) { - limit := 100 - if req.Limit != nil && *req.Limit > 0 { - limit = *req.Limit - } - return db.QueryPlayerByVictimAlliance(r.Context(), req.Filters, limit) + return db.QueryPlayerByVictimAlliance(r.Context(), req.Filters) }) } func handleAnalyticsPlayerByAttackerCharacter(w http.ResponseWriter, r *http.Request) { handleAnalyticsQuery(w, r, func(db DB, req APIAnalyticsRequest) (interface{}, error) { - limit := 100 - if req.Limit != nil && *req.Limit > 0 { - limit = *req.Limit - } - return db.QueryPlayerByAttackerCharacter(r.Context(), req.Filters, limit) + return db.QueryPlayerByAttackerCharacter(r.Context(), req.Filters) }) } func handleAnalyticsPlayerByAttackerCorporation(w http.ResponseWriter, r *http.Request) { handleAnalyticsQuery(w, r, func(db DB, req APIAnalyticsRequest) (interface{}, error) { - limit := 100 - if req.Limit != nil && *req.Limit > 0 { - limit = *req.Limit - } - return db.QueryPlayerByAttackerCorporation(r.Context(), req.Filters, limit) + return db.QueryPlayerByAttackerCorporation(r.Context(), req.Filters) }) } func handleAnalyticsPlayerByAttackerAlliance(w http.ResponseWriter, r *http.Request) { handleAnalyticsQuery(w, r, func(db DB, req APIAnalyticsRequest) (interface{}, error) { - limit := 100 - if req.Limit != nil && *req.Limit > 0 { - limit = *req.Limit - } - return db.QueryPlayerByAttackerAlliance(r.Context(), req.Filters, limit) + return db.QueryPlayerByAttackerAlliance(r.Context(), req.Filters) }) } @@ -246,11 +208,7 @@ func handleAnalyticsModuleBySlotType(w http.ResponseWriter, r *http.Request) { func handleAnalyticsModuleByModule(w http.ResponseWriter, r *http.Request) { handleAnalyticsQuery(w, r, func(db DB, req APIAnalyticsRequest) (interface{}, error) { - limit := 100 - if req.Limit != nil && *req.Limit > 0 { - limit = *req.Limit - } - return db.QueryModuleByModule(r.Context(), req.Filters, limit) + return db.QueryModuleByModule(r.Context(), req.Filters) }) } @@ -276,12 +234,7 @@ func handleAnalyticsModuleCoOccurrence(w http.ResponseWriter, r *http.Request) { return } - limit := 50 - if req.Limit != nil && *req.Limit > 0 { - limit = *req.Limit - } - - results, err := db.QueryModuleCoOccurrence(r.Context(), req.Filters, req.SelectedModule, req.SelectedSlot, limit) + results, err := db.QueryModuleCoOccurrence(r.Context(), req.Filters, req.SelectedModule, req.SelectedSlot) if err != nil { flog.Error("Query failed: %v", err) http.Error(w, "Internal server error", http.StatusInternalServerError) diff --git a/db.go b/db.go index f6c0cf0..4ee183d 100644 --- a/db.go +++ b/db.go @@ -3,7 +3,6 @@ package main import ( "context" "fmt" - "strconv" "strings" "time" @@ -50,21 +49,21 @@ type DB interface { QueryTimeByDay(ctx context.Context, filters AnalyticsFilters) ([]TimeAggregationByDay, error) QueryTimeByDate(ctx context.Context, filters AnalyticsFilters) ([]TimeAggregationByDate, error) QueryTimeByMonth(ctx context.Context, filters AnalyticsFilters) ([]TimeAggregationByMonth, error) - QueryLocationBySystem(ctx context.Context, filters AnalyticsFilters, limit int) ([]LocationAggregationBySystem, error) + QueryLocationBySystem(ctx context.Context, filters AnalyticsFilters) ([]LocationAggregationBySystem, error) QueryLocationByRegion(ctx context.Context, filters AnalyticsFilters) ([]LocationAggregationByRegion, error) QueryLocationByConstellation(ctx context.Context, filters AnalyticsFilters) ([]LocationAggregationByConstellation, error) QueryLocationBySecurity(ctx context.Context, filters AnalyticsFilters) ([]LocationAggregationBySecurity, error) - QueryShipByVictim(ctx context.Context, filters AnalyticsFilters, limit int) ([]ShipAggregationByVictimShip, error) - QueryShipByAttacker(ctx context.Context, filters AnalyticsFilters, limit int) ([]ShipAggregationByAttackerShip, error) - QueryPlayerByVictimCharacter(ctx context.Context, filters AnalyticsFilters, limit int) ([]PlayerAggregationByVictimCharacter, error) - QueryPlayerByVictimCorporation(ctx context.Context, filters AnalyticsFilters, limit int) ([]PlayerAggregationByVictimCorporation, error) - QueryPlayerByVictimAlliance(ctx context.Context, filters AnalyticsFilters, limit int) ([]PlayerAggregationByVictimAlliance, error) - QueryPlayerByAttackerCharacter(ctx context.Context, filters AnalyticsFilters, limit int) ([]PlayerAggregationByAttackerCharacter, error) - QueryPlayerByAttackerCorporation(ctx context.Context, filters AnalyticsFilters, limit int) ([]PlayerAggregationByAttackerCorporation, error) - QueryPlayerByAttackerAlliance(ctx context.Context, filters AnalyticsFilters, limit int) ([]PlayerAggregationByAttackerAlliance, error) + QueryShipByVictim(ctx context.Context, filters AnalyticsFilters) ([]ShipAggregationByVictimShip, error) + QueryShipByAttacker(ctx context.Context, filters AnalyticsFilters) ([]ShipAggregationByAttackerShip, error) + QueryPlayerByVictimCharacter(ctx context.Context, filters AnalyticsFilters) ([]PlayerAggregationByVictimCharacter, error) + QueryPlayerByVictimCorporation(ctx context.Context, filters AnalyticsFilters) ([]PlayerAggregationByVictimCorporation, error) + QueryPlayerByVictimAlliance(ctx context.Context, filters AnalyticsFilters) ([]PlayerAggregationByVictimAlliance, error) + QueryPlayerByAttackerCharacter(ctx context.Context, filters AnalyticsFilters) ([]PlayerAggregationByAttackerCharacter, error) + QueryPlayerByAttackerCorporation(ctx context.Context, filters AnalyticsFilters) ([]PlayerAggregationByAttackerCorporation, error) + QueryPlayerByAttackerAlliance(ctx context.Context, filters AnalyticsFilters) ([]PlayerAggregationByAttackerAlliance, error) QueryModuleBySlotType(ctx context.Context, filters AnalyticsFilters) ([]ModuleAggregationBySlotType, error) - QueryModuleByModule(ctx context.Context, filters AnalyticsFilters, limit int) ([]ModuleAggregationByModule, error) - QueryModuleCoOccurrence(ctx context.Context, filters AnalyticsFilters, selectedModule, selectedSlot string, limit int) ([]ModuleCoOccurrence, error) + QueryModuleByModule(ctx context.Context, filters AnalyticsFilters) ([]ModuleAggregationByModule, error) + QueryModuleCoOccurrence(ctx context.Context, filters AnalyticsFilters, selectedModule, selectedSlot string) ([]ModuleCoOccurrence, error) } type DBWrapper struct { @@ -614,45 +613,6 @@ func (db *DBWrapper) GetModuleSlots(moduleIDs []int64) (map[int64]ModuleSlot, er return result, nil } -func limitKillmails(killmailIDs []int64, limit int) []int64 { - if limit <= 0 || len(killmailIDs) <= limit { - return killmailIDs - } - return killmailIDs[:limit] -} - -// parseKeyValuePairs parses a string like "123:456,789:012" into key-value pairs -func parseKeyValuePairs(data string, callback func(key, value int64)) { - if data == "" { - return - } - - pairs := strings.Split(data, ",") - for _, pair := range pairs { - if kv := strings.Split(pair, ":"); len(kv) == 2 { - if key, err := strconv.ParseInt(kv[0], 10, 64); err == nil { - if value, err := strconv.ParseInt(kv[1], 10, 64); err == nil { - callback(key, value) - } - } - } - } -} - -// parseKillmailIDs parses a string like "123,456,789" into a slice of int64 -func parseKillmailIDs(data string, result *[]int64) { - if data == "" { - return - } - - ids := strings.Split(data, ",") - for _, idStr := range ids { - if id, err := strconv.ParseInt(idStr, 10, 64); err == nil { - *result = append(*result, id) - } - } -} - // HasModules returns true if the query has module filters func (qp QueryParams) HasModules() bool { return len(qp.Modules) > 0