mirror of
https://github.com/bestnite/igdb-database.git
synced 2025-06-17 10:13:18 +08:00
u
This commit is contained in:
@ -166,85 +166,15 @@ func webhook[T any](
|
||||
log.Printf("failed to get %s: %v", e.GetEndpointName(), err)
|
||||
return
|
||||
}
|
||||
oldItem, err := db.GetItemById[T](e.GetEndpointName(), data.ID)
|
||||
if err != nil && !errors.Is(err, mongo.ErrNoDocuments) {
|
||||
log.Printf("failed to get %s: %v", e.GetEndpointName(), err)
|
||||
return
|
||||
}
|
||||
|
||||
if _, ok := any(e).(*endpoint.Games); ok {
|
||||
if oldItem != nil {
|
||||
// oldGame update
|
||||
oldGame := any(oldItem).(*pb.Game)
|
||||
// compare themes and genres
|
||||
game := any(item).(*pb.Game)
|
||||
|
||||
oldGameThemeIds := make([]uint64, 0, len(oldGame.Themes))
|
||||
for _, t := range oldGame.Themes {
|
||||
oldGameThemeIds = append(oldGameThemeIds, t.Id)
|
||||
}
|
||||
gameThemeIds := make([]uint64, 0, len(game.Themes))
|
||||
for _, t := range game.Themes {
|
||||
gameThemeIds = append(gameThemeIds, t.Id)
|
||||
}
|
||||
if !slices.Equal(oldGameThemeIds, gameThemeIds) {
|
||||
for _, t := range oldGameThemeIds {
|
||||
if !slices.Contains(gameThemeIds, t) {
|
||||
_ = db.MinusThemeCount(t)
|
||||
}
|
||||
}
|
||||
for _, t := range gameThemeIds {
|
||||
if !slices.Contains(oldGameThemeIds, t) {
|
||||
_ = db.AddThemeCount(t)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
oldGameGenreIds := make([]uint64, 0, len(oldGame.Genres))
|
||||
for _, t := range oldGame.Genres {
|
||||
oldGameGenreIds = append(oldGameGenreIds, t.Id)
|
||||
}
|
||||
gameGenreIds := make([]uint64, 0, len(game.Genres))
|
||||
for _, t := range game.Genres {
|
||||
gameGenreIds = append(gameGenreIds, t.Id)
|
||||
}
|
||||
if !slices.Equal(oldGameGenreIds, gameGenreIds) {
|
||||
for _, t := range oldGameGenreIds {
|
||||
if !slices.Contains(gameGenreIds, t) {
|
||||
_ = db.MinusGenreCount(t)
|
||||
}
|
||||
}
|
||||
for _, t := range gameGenreIds {
|
||||
if !slices.Contains(oldGameGenreIds, t) {
|
||||
_ = db.AddGenreCount(t)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
g, err := db.ConvertGame(game)
|
||||
if err != nil {
|
||||
log.Printf("failed to convert game: %v", err)
|
||||
} else {
|
||||
_ = db.SaveGame(g)
|
||||
log.Printf("game %d aggregated", data.ID)
|
||||
}
|
||||
|
||||
game := any(item).(*pb.Game)
|
||||
g, err := db.ConvertGame(game)
|
||||
if err != nil {
|
||||
log.Printf("failed to convert game: %v", err)
|
||||
} else {
|
||||
// new game
|
||||
game := any(item).(*pb.Game)
|
||||
for _, t := range game.Themes {
|
||||
_ = db.AddThemeCount(t.Id)
|
||||
}
|
||||
for _, t := range game.Genres {
|
||||
_ = db.AddGenreCount(t.Id)
|
||||
}
|
||||
g, err := db.ConvertGame(game)
|
||||
if err != nil {
|
||||
log.Printf("failed to convert game: %v", err)
|
||||
} else {
|
||||
_ = db.SaveGame(g)
|
||||
log.Printf("game %d aggregated", data.ID)
|
||||
}
|
||||
_ = db.SaveGame(g)
|
||||
log.Printf("game %d aggregated", data.ID)
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user