diff --git a/go/livestream_handler.go b/go/livestream_handler.go index 4716dc5..39fbfb2 100644 --- a/go/livestream_handler.go +++ b/go/livestream_handler.go @@ -499,16 +499,20 @@ func fillLivestreamResponse(ctx context.Context, tx *sqlx.Tx, livestreamModel Li return Livestream{}, err } - tags := make([]Tag, len(livestreamTagModels)) + tagIDs := make([]int64, len(livestreamTagModels)) for i := range livestreamTagModels { - tagModel := TagModel{} - if err := tx.GetContext(ctx, &tagModel, "SELECT * FROM tags WHERE id = ?", livestreamTagModels[i].TagID); err != nil { + tagIDs[i] = livestreamTagModels[i].TagID + } + + tags := make([]Tag, 0, len(tagIDs)) + + if len(tagIDs) > 0 { + query, params, err := sqlx.In("SELECT * FROM tags WHERE id IN (?)", tagIDs) + if err != nil { return Livestream{}, err } - - tags[i] = Tag{ - ID: tagModel.ID, - Name: tagModel.Name, + if err := tx.SelectContext(ctx, &tags, query, params...); err != nil { + return Livestream{}, err } }