This commit is contained in:
2025-04-08 16:06:44 +10:00
parent 95f46cc7e7
commit 5bd2627d5e
3 changed files with 6 additions and 272 deletions

View File

@ -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)
}
}