35 lines
787 B
Go
35 lines
787 B
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/zepyrshut/rating-orama/internal/scraper"
|
|
"github.com/zepyrshut/rating-orama/internal/sqlc"
|
|
)
|
|
|
|
func (r *pgxRepository) CreateTvShowWithEpisodesTX(ctx context.Context, tvShow sqlc.CreateTVShowParams, episodes []scraper.Episode) ([]sqlc.Episode, error) {
|
|
var err error
|
|
var episodesSqlc []sqlc.Episode
|
|
|
|
err = r.execTx(ctx, func(tx *sqlc.Queries) error {
|
|
tvShow, err := tx.CreateTVShow(ctx, tvShow)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, episode := range episodes {
|
|
sqlcEpisodeParams := episode.ToEpisodeParams(tvShow.ID)
|
|
episode, err := tx.CreateEpisodes(ctx, sqlcEpisodeParams)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
episodesSqlc = append(episodesSqlc, episode)
|
|
}
|
|
|
|
return nil
|
|
})
|
|
|
|
return episodesSqlc, err
|
|
}
|