refactor: remove dbtx package
This commit is contained in:
@@ -3,8 +3,8 @@ package playback
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"errors"
|
||||||
"mal/internal/db"
|
"mal/internal/db"
|
||||||
"mal/internal/dbtx"
|
|
||||||
"mal/internal/domain"
|
"mal/internal/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -18,9 +18,24 @@ func NewPlaybackRepository(sqlDB *sql.DB, queries *db.Queries) domain.PlaybackRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *playbackRepository) InTx(ctx context.Context, fn func(ctx context.Context, repo domain.PlaybackRepository) error) error {
|
func (r *playbackRepository) InTx(ctx context.Context, fn func(ctx context.Context, repo domain.PlaybackRepository) error) error {
|
||||||
return dbtx.Run(ctx, r.sqlDB, domain.PlaybackRepository(r), func(tx *sql.Tx) domain.PlaybackRepository {
|
if r.sqlDB == nil {
|
||||||
return &playbackRepository{sqlDB: nil, queries: r.queries.WithTx(tx)}
|
return fn(ctx, r)
|
||||||
}, fn)
|
}
|
||||||
|
|
||||||
|
tx, err := r.sqlDB.BeginTx(ctx, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
txRepo := &playbackRepository{sqlDB: nil, queries: r.queries.WithTx(tx)}
|
||||||
|
if err := fn(ctx, txRepo); err != nil {
|
||||||
|
if rollbackErr := tx.Rollback(); rollbackErr != nil {
|
||||||
|
return errors.Join(err, rollbackErr)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return tx.Commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *playbackRepository) UpsertAnime(ctx context.Context, params db.UpsertAnimeParams) (db.Anime, error) {
|
func (r *playbackRepository) UpsertAnime(ctx context.Context, params db.UpsertAnimeParams) (db.Anime, error) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package dbtx
|
package internal
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -3,8 +3,8 @@ package watchlist
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"errors"
|
||||||
"mal/internal/db"
|
"mal/internal/db"
|
||||||
"mal/internal/dbtx"
|
|
||||||
"mal/internal/domain"
|
"mal/internal/domain"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -18,9 +18,24 @@ func NewWatchlistRepository(sqlDB *sql.DB, queries *db.Queries) domain.Watchlist
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *watchlistRepository) InTx(ctx context.Context, fn func(ctx context.Context, repo domain.WatchlistRepository) error) error {
|
func (r *watchlistRepository) InTx(ctx context.Context, fn func(ctx context.Context, repo domain.WatchlistRepository) error) error {
|
||||||
return dbtx.Run(ctx, r.sqlDB, domain.WatchlistRepository(r), func(tx *sql.Tx) domain.WatchlistRepository {
|
if r.sqlDB == nil {
|
||||||
return &watchlistRepository{sqlDB: nil, queries: r.queries.WithTx(tx)}
|
return fn(ctx, r)
|
||||||
}, fn)
|
}
|
||||||
|
|
||||||
|
tx, err := r.sqlDB.BeginTx(ctx, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
txRepo := &watchlistRepository{sqlDB: nil, queries: r.queries.WithTx(tx)}
|
||||||
|
if err := fn(ctx, txRepo); err != nil {
|
||||||
|
if rollbackErr := tx.Rollback(); rollbackErr != nil {
|
||||||
|
return errors.Join(err, rollbackErr)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return tx.Commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *watchlistRepository) UpsertAnime(ctx context.Context, arg db.UpsertAnimeParams) (db.Anime, error) {
|
func (r *watchlistRepository) UpsertAnime(ctx context.Context, arg db.UpsertAnimeParams) (db.Anime, error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user