slices - use nil declaration

This commit is contained in:
Dawid Wysokiński 2021-05-05 19:58:45 +02:00
parent 49b407ed23
commit 6a44193f31
18 changed files with 42 additions and 45 deletions

View File

@ -22,7 +22,7 @@ func NewPGRepository(db *pg.DB) dailytribestats.Repository {
func (repo *pgRepository) Fetch(ctx context.Context, cfg dailytribestats.FetchConfig) ([]*twmodel.DailyTribeStats, int, error) { func (repo *pgRepository) Fetch(ctx context.Context, cfg dailytribestats.FetchConfig) ([]*twmodel.DailyTribeStats, int, error) {
var err error var err error
data := []*twmodel.DailyTribeStats{} var data []*twmodel.DailyTribeStats
total := 0 total := 0
query := repo. query := repo.
WithParam("SERVER", pg.Safe(cfg.Server)). WithParam("SERVER", pg.Safe(cfg.Server)).

View File

@ -23,7 +23,7 @@ func NewPGRepository(db *pg.DB) ennoblement.Repository {
func (repo *pgRepository) Fetch(ctx context.Context, cfg ennoblement.FetchConfig) ([]*twmodel.Ennoblement, int, error) { func (repo *pgRepository) Fetch(ctx context.Context, cfg ennoblement.FetchConfig) ([]*twmodel.Ennoblement, int, error) {
var err error var err error
total := 0 total := 0
data := []*twmodel.Ennoblement{} var data []*twmodel.Ennoblement
query := repo. query := repo.
WithParam("SERVER", pg.Safe(cfg.Server)). WithParam("SERVER", pg.Safe(cfg.Server)).
Model(&data). Model(&data).

View File

@ -32,7 +32,7 @@ func NewDataLoaders(cfg Config) *DataLoaders {
wait: wait, wait: wait,
maxBatch: 0, maxBatch: 0,
fetch: func(keys []string) ([]*twmodel.Version, []error) { fetch: func(keys []string) ([]*twmodel.Version, []error) {
codes := []twmodel.VersionCode{} var codes []twmodel.VersionCode
for _, code := range keys { for _, code := range keys {
codes = append(codes, twmodel.VersionCode(code)) codes = append(codes, twmodel.VersionCode(code))
} }

View File

@ -5,9 +5,10 @@ import (
"fmt" "fmt"
"github.com/99designs/gqlgen/graphql" "github.com/99designs/gqlgen/graphql"
"github.com/pkg/errors" "github.com/pkg/errors"
"time"
"github.com/tribalwarshelp/api/graphql/querycomplexity" "github.com/tribalwarshelp/api/graphql/querycomplexity"
"github.com/tribalwarshelp/api/middleware" "github.com/tribalwarshelp/api/middleware"
"time"
"github.com/99designs/gqlgen/graphql/handler" "github.com/99designs/gqlgen/graphql/handler"
"github.com/99designs/gqlgen/graphql/handler/extension" "github.com/99designs/gqlgen/graphql/handler/extension"
@ -15,6 +16,7 @@ import (
"github.com/99designs/gqlgen/graphql/handler/transport" "github.com/99designs/gqlgen/graphql/handler/transport"
"github.com/99designs/gqlgen/graphql/playground" "github.com/99designs/gqlgen/graphql/playground"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/tribalwarshelp/api/graphql/generated" "github.com/tribalwarshelp/api/graphql/generated"
"github.com/tribalwarshelp/api/graphql/resolvers" "github.com/tribalwarshelp/api/graphql/resolvers"
) )

View File

@ -61,13 +61,10 @@ func (r *Resolver) DailyTribeStatsRecord() generated.DailyTribeStatsRecordResolv
type queryResolver struct{ *Resolver } type queryResolver struct{ *Resolver }
type playerResolver struct{ *Resolver } type playerResolver struct{ *Resolver }
type villageResolver struct{ *Resolver } type villageResolver struct{ *Resolver }
type tribeResolver struct{ *Resolver }
type ennoblementResolver struct{ *Resolver } type ennoblementResolver struct{ *Resolver }
type serverResolver struct{ *Resolver } type serverResolver struct{ *Resolver }
type playerHistoryRecordResolver struct{ *Resolver } type playerHistoryRecordResolver struct{ *Resolver }
type tribeHistoryRecordResolver struct{ *Resolver } type tribeHistoryRecordResolver struct{ *Resolver }
type serverStatsRecordResolver struct{ *Resolver }
type tribeChangeRecordResolver struct{ *Resolver } type tribeChangeRecordResolver struct{ *Resolver }
type dailyPlayerStatsRecordResolver struct{ *Resolver } type dailyPlayerStatsRecordResolver struct{ *Resolver }
type dailyTribeStatsRecordResolver struct{ *Resolver } type dailyTribeStatsRecordResolver struct{ *Resolver }
type versionResolver struct{ *Resolver }

View File

@ -10,13 +10,13 @@ import (
var limitWhitelistContextKey ContextKey = "limitWhitelist" var limitWhitelistContextKey ContextKey = "limitWhitelist"
type NetworksAndIps struct { type networksAndIPs struct {
Networks []*net.IPNet Networks []*net.IPNet
Ips []net.IP IPs []net.IP
} }
func (networksAndIps NetworksAndIps) Contains(ip net.IP) bool { func (networksAndIps networksAndIPs) Contains(ip net.IP) bool {
for _, whitelistedIP := range networksAndIps.Ips { for _, whitelistedIP := range networksAndIps.IPs {
if whitelistedIP.Equal(ip) { if whitelistedIP.Equal(ip) {
return true return true
} }
@ -33,9 +33,9 @@ type LimitWhitelistConfig struct {
IPAddresses []string IPAddresses []string
} }
func (cfg LimitWhitelistConfig) GetNetworksAndIps() NetworksAndIps { func (cfg LimitWhitelistConfig) getNetworksAndIps() networksAndIPs {
networks := []*net.IPNet{} var networks []*net.IPNet
ips := []net.IP{} var ips []net.IP
for _, ip := range cfg.IPAddresses { for _, ip := range cfg.IPAddresses {
_, network, err := net.ParseCIDR(ip) _, network, err := net.ParseCIDR(ip)
if err == nil { if err == nil {
@ -48,14 +48,14 @@ func (cfg LimitWhitelistConfig) GetNetworksAndIps() NetworksAndIps {
ips = append(ips, parsed) ips = append(ips, parsed)
} }
} }
return NetworksAndIps{ return networksAndIPs{
Networks: networks, Networks: networks,
Ips: ips, IPs: ips,
} }
} }
func LimitWhitelist(cfg LimitWhitelistConfig) gin.HandlerFunc { func LimitWhitelist(cfg LimitWhitelistConfig) gin.HandlerFunc {
networksAndIps := cfg.GetNetworksAndIps() networksAndIps := cfg.getNetworksAndIps()
return func(c *gin.Context) { return func(c *gin.Context) {
ctx := c.Request.Context() ctx := c.Request.Context()
clientIP := net.ParseIP(c.ClientIP()) clientIP := net.ParseIP(c.ClientIP())

View File

@ -23,7 +23,7 @@ func NewPGRepository(db *pg.DB) player.Repository {
func (repo *pgRepository) Fetch(ctx context.Context, cfg player.FetchConfig) ([]*twmodel.Player, int, error) { func (repo *pgRepository) Fetch(ctx context.Context, cfg player.FetchConfig) ([]*twmodel.Player, int, error) {
var err error var err error
data := []*twmodel.Player{} var data []*twmodel.Player
total := 0 total := 0
query := repo. query := repo.
WithParam("SERVER", pg.Safe(cfg.Server)). WithParam("SERVER", pg.Safe(cfg.Server)).
@ -60,11 +60,11 @@ type fetchPlayerServersQueryResult struct {
} }
func (repo *pgRepository) FetchNameChanges(ctx context.Context, code twmodel.VersionCode, playerID ...int) (map[int][]*twmodel.PlayerNameChange, error) { func (repo *pgRepository) FetchNameChanges(ctx context.Context, code twmodel.VersionCode, playerID ...int) (map[int][]*twmodel.PlayerNameChange, error) {
data := []*twmodel.PlayerNameChange{} var data []*twmodel.PlayerNameChange
if err := repo.Model(&data). if err := repo.Model(&data).
Context(ctx). Context(ctx).
Where("version_code = ?", code). Where("version_code = ?", code).
Where("player_id IN (?)", pg.In(playerID)). Where(gopgutil.BuildConditionArray("player_id"), pg.Array(playerID)).
Order("change_date ASC"). Order("change_date ASC").
Select(); err != nil && err != pg.ErrNoRows { Select(); err != nil && err != pg.ErrNoRows {
return nil, errors.New("Internal server error") return nil, errors.New("Internal server error")
@ -78,14 +78,14 @@ func (repo *pgRepository) FetchNameChanges(ctx context.Context, code twmodel.Ver
} }
func (repo *pgRepository) FetchPlayerServers(ctx context.Context, code twmodel.VersionCode, playerID ...int) (map[int][]string, error) { func (repo *pgRepository) FetchPlayerServers(ctx context.Context, code twmodel.VersionCode, playerID ...int) (map[int][]string, error) {
data := []*fetchPlayerServersQueryResult{} var data []*fetchPlayerServersQueryResult
if err := repo.Model(&twmodel.PlayerToServer{}). if err := repo.Model(&twmodel.PlayerToServer{}).
Context(ctx). Context(ctx).
Column("player_id"). Column("player_id").
ColumnExpr("array_agg(server_key) as servers"). ColumnExpr("array_agg(server_key) as servers").
Relation("Server._"). Relation("Server._").
Where("version_code = ?", code). Where("version_code = ?", code).
Where("player_id IN (?)", pg.In(playerID)). Where(gopgutil.BuildConditionArray("player_id"), pg.Array(playerID)).
Group("player_id"). Group("player_id").
Select(&data); err != nil && err != pg.ErrNoRows { Select(&data); err != nil && err != pg.ErrNoRows {
return nil, errors.New("Internal server error") return nil, errors.New("Internal server error")
@ -99,7 +99,7 @@ func (repo *pgRepository) FetchPlayerServers(ctx context.Context, code twmodel.V
} }
func (repo *pgRepository) SearchPlayer(ctx context.Context, cfg player.SearchPlayerConfig) ([]*twmodel.FoundPlayer, int, error) { func (repo *pgRepository) SearchPlayer(ctx context.Context, cfg player.SearchPlayerConfig) ([]*twmodel.FoundPlayer, int, error) {
servers := []*twmodel.Server{} var servers []*twmodel.Server
if err := repo. if err := repo.
Model(&servers). Model(&servers).
Context(ctx). Context(ctx).
@ -110,7 +110,7 @@ func (repo *pgRepository) SearchPlayer(ctx context.Context, cfg player.SearchPla
} }
var query *orm.Query var query *orm.Query
res := []*twmodel.FoundPlayer{} var res []*twmodel.FoundPlayer
whereClause := "player.id = ?1 OR player.name ILIKE ?0" whereClause := "player.id = ?1 OR player.name ILIKE ?0"
if cfg.ID <= 0 { if cfg.ID <= 0 {
whereClause = "player.name ILIKE ?0" whereClause = "player.name ILIKE ?0"

View File

@ -23,7 +23,7 @@ func NewPGRepository(db *pg.DB) playerhistory.Repository {
func (repo *pgRepository) Fetch(ctx context.Context, cfg playerhistory.FetchConfig) ([]*twmodel.PlayerHistory, int, error) { func (repo *pgRepository) Fetch(ctx context.Context, cfg playerhistory.FetchConfig) ([]*twmodel.PlayerHistory, int, error) {
var err error var err error
total := 0 total := 0
data := []*twmodel.PlayerHistory{} var data []*twmodel.PlayerHistory
query := repo. query := repo.
WithParam("SERVER", pg.Safe(cfg.Server)). WithParam("SERVER", pg.Safe(cfg.Server)).
Model(&data). Model(&data).

View File

@ -28,7 +28,7 @@ func NewPGRepository(db *pg.DB) (server.Repository, error) {
func (repo *pgRepository) Fetch(ctx context.Context, cfg server.FetchConfig) ([]*twmodel.Server, int, error) { func (repo *pgRepository) Fetch(ctx context.Context, cfg server.FetchConfig) ([]*twmodel.Server, int, error) {
var err error var err error
total := 0 total := 0
data := []*twmodel.Server{} var data []*twmodel.Server
query := repo. query := repo.
Model(&data). Model(&data).
Context(ctx). Context(ctx).

View File

@ -75,7 +75,7 @@ func (h *handler) mapHandler(c *gin.Context) {
centerX, _ := strconv.Atoi(c.Query("centerX")) centerX, _ := strconv.Atoi(c.Query("centerX"))
centerY, _ := strconv.Atoi(c.Query("centerY")) centerY, _ := strconv.Atoi(c.Query("centerY"))
scale, _ := strconv.ParseFloat((c.Query("scale")), 32) scale, _ := strconv.ParseFloat(c.Query("scale"), 32)
if scale > maxScale { if scale > maxScale {
scale = maxScale scale = maxScale
} }

View File

@ -43,7 +43,7 @@ func (ucase *usecase) GetMarkers(ctx context.Context, cfg servermap.GetMarkersCo
return nil, err return nil, err
} }
otherMarkers := []*generator.Marker{} var otherMarkers []*generator.Marker
var otherMarkersMutex sync.Mutex var otherMarkersMutex sync.Mutex
if cfg.ShowOtherPlayerVillages { if cfg.ShowOtherPlayerVillages {
color := cfg.PlayerVillageColor color := cfg.PlayerVillageColor
@ -103,7 +103,7 @@ func (ucase *usecase) GetMarkers(ctx context.Context, cfg servermap.GetMarkersCo
}) })
} }
tribeMarkers := []*generator.Marker{} var tribeMarkers []*generator.Marker
var tribeMarkersMutex sync.Mutex var tribeMarkersMutex sync.Mutex
for color, tribeIDs := range tribes { for color, tribeIDs := range tribes {
c := color c := color
@ -135,7 +135,7 @@ func (ucase *usecase) GetMarkers(ctx context.Context, cfg servermap.GetMarkersCo
}) })
} }
playerMarkers := []*generator.Marker{} var playerMarkers []*generator.Marker
var playerMarkersMutex sync.Mutex var playerMarkersMutex sync.Mutex
for color, playerIDs := range players { for color, playerIDs := range players {
c := color c := color
@ -191,11 +191,11 @@ func concatMarkers(slices ...[]*generator.Marker) []*generator.Marker {
} }
func toMarker(param string) (int, string, error) { func toMarker(param string) (int, string, error) {
splitted := strings.Split(param, ",") parts := strings.Split(param, ",")
if len(splitted) != 2 { if len(parts) != 2 {
return 0, "", errors.Errorf("%s: Invalid marker format (should be id,#hexcolor)", param) return 0, "", errors.Errorf("%s: Invalid marker format (should be id,#hexcolor)", param)
} }
id, err := strconv.Atoi(splitted[0]) id, err := strconv.Atoi(parts[0])
if err != nil { if err != nil {
return 0, "", errors.Wrapf(err, "%s: Invalid marker format (should be id,#hexcolor)", param) return 0, "", errors.Wrapf(err, "%s: Invalid marker format (should be id,#hexcolor)", param)
} }
@ -203,12 +203,12 @@ func toMarker(param string) (int, string, error) {
return 0, "", errors.New("ID should be greater than 0") return 0, "", errors.New("ID should be greater than 0")
} }
return id, splitted[1], nil return id, parts[1], nil
} }
func toMarkers(params []string) (map[string][]int, []int, error) { func toMarkers(params []string) (map[string][]int, []int, error) {
idsByColor := make(map[string][]int) idsByColor := make(map[string][]int)
ids := []int{} var ids []int
cache := make(map[int]bool) cache := make(map[int]bool)
for _, param := range params { for _, param := range params {
//id,#color //id,#color

View File

@ -22,7 +22,7 @@ func NewPGRepository(db *pg.DB) serverstats.Repository {
func (repo *pgRepository) Fetch(ctx context.Context, cfg serverstats.FetchConfig) ([]*twmodel.ServerStats, int, error) { func (repo *pgRepository) Fetch(ctx context.Context, cfg serverstats.FetchConfig) ([]*twmodel.ServerStats, int, error) {
var err error var err error
data := []*twmodel.ServerStats{} var data []*twmodel.ServerStats
total := 0 total := 0
query := repo. query := repo.
WithParam("SERVER", pg.Safe(cfg.Server)). WithParam("SERVER", pg.Safe(cfg.Server)).

View File

@ -20,10 +20,8 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg serverstats.FetchConfig) ([
if cfg.Filter == nil { if cfg.Filter == nil {
cfg.Filter = &twmodel.ServerStatsFilter{} cfg.Filter = &twmodel.ServerStatsFilter{}
} }
if !middleware.CanExceedLimit(ctx) && (cfg.Limit > serverstats.FetchLimit || cfg.Limit <= 0) { if !middleware.CanExceedLimit(ctx) && (cfg.Limit > serverstats.FetchLimit || cfg.Limit <= 0) {
cfg.Limit = serverstats.FetchLimit cfg.Limit = serverstats.FetchLimit
} }
return ucase.repo.Fetch(ctx, cfg) return ucase.repo.Fetch(ctx, cfg)
} }

View File

@ -23,7 +23,7 @@ func NewPGRepository(db *pg.DB) tribe.Repository {
func (repo *pgRepository) Fetch(ctx context.Context, cfg tribe.FetchConfig) ([]*twmodel.Tribe, int, error) { func (repo *pgRepository) Fetch(ctx context.Context, cfg tribe.FetchConfig) ([]*twmodel.Tribe, int, error) {
var err error var err error
data := []*twmodel.Tribe{} var data []*twmodel.Tribe
total := 0 total := 0
query := repo. query := repo.
WithParam("SERVER", pg.Safe(cfg.Server)). WithParam("SERVER", pg.Safe(cfg.Server)).
@ -55,7 +55,7 @@ func (repo *pgRepository) Fetch(ctx context.Context, cfg tribe.FetchConfig) ([]*
} }
func (repo *pgRepository) SearchTribe(ctx context.Context, cfg tribe.SearchTribeConfig) ([]*twmodel.FoundTribe, int, error) { func (repo *pgRepository) SearchTribe(ctx context.Context, cfg tribe.SearchTribeConfig) ([]*twmodel.FoundTribe, int, error) {
servers := []*twmodel.Server{} var servers []*twmodel.Server
if err := repo. if err := repo.
Model(&servers). Model(&servers).
Context(ctx). Context(ctx).
@ -66,7 +66,7 @@ func (repo *pgRepository) SearchTribe(ctx context.Context, cfg tribe.SearchTribe
} }
var query *orm.Query var query *orm.Query
res := []*twmodel.FoundTribe{} var res []*twmodel.FoundTribe
for _, server := range servers { for _, server := range servers {
safeKey := pg.Safe(server.Key) safeKey := pg.Safe(server.Key)
otherQuery := repo. otherQuery := repo.

View File

@ -23,7 +23,7 @@ func NewPGRepository(db *pg.DB) tribechange.Repository {
func (repo *pgRepository) Fetch(ctx context.Context, cfg tribechange.FetchConfig) ([]*twmodel.TribeChange, int, error) { func (repo *pgRepository) Fetch(ctx context.Context, cfg tribechange.FetchConfig) ([]*twmodel.TribeChange, int, error) {
var err error var err error
total := 0 total := 0
data := []*twmodel.TribeChange{} var data []*twmodel.TribeChange
query := repo. query := repo.
WithParam("SERVER", pg.Safe(cfg.Server)). WithParam("SERVER", pg.Safe(cfg.Server)).
Model(&data). Model(&data).

View File

@ -23,7 +23,7 @@ func NewPGRepository(db *pg.DB) tribehistory.Repository {
func (repo *pgRepository) Fetch(ctx context.Context, cfg tribehistory.FetchConfig) ([]*twmodel.TribeHistory, int, error) { func (repo *pgRepository) Fetch(ctx context.Context, cfg tribehistory.FetchConfig) ([]*twmodel.TribeHistory, int, error) {
var err error var err error
total := 0 total := 0
data := []*twmodel.TribeHistory{} var data []*twmodel.TribeHistory
query := repo. query := repo.
WithParam("SERVER", pg.Safe(cfg.Server)). WithParam("SERVER", pg.Safe(cfg.Server)).
Model(&data). Model(&data).

View File

@ -27,7 +27,7 @@ func NewPGRepository(db *pg.DB) (version.Repository, error) {
func (repo *pgRepository) Fetch(ctx context.Context, cfg version.FetchConfig) ([]*twmodel.Version, int, error) { func (repo *pgRepository) Fetch(ctx context.Context, cfg version.FetchConfig) ([]*twmodel.Version, int, error) {
var err error var err error
data := []*twmodel.Version{} var data []*twmodel.Version
total := 0 total := 0
query := repo. query := repo.
Model(&data). Model(&data).

View File

@ -22,7 +22,7 @@ func NewPGRepository(db *pg.DB) village.Repository {
func (repo *pgRepository) Fetch(ctx context.Context, cfg village.FetchConfig) ([]*twmodel.Village, int, error) { func (repo *pgRepository) Fetch(ctx context.Context, cfg village.FetchConfig) ([]*twmodel.Village, int, error) {
var err error var err error
data := []*twmodel.Village{} var data []*twmodel.Village
query := repo. query := repo.
WithParam("SERVER", pg.Safe(cfg.Server)). WithParam("SERVER", pg.Safe(cfg.Server)).
Model(&data). Model(&data).