Sqlite - add sqlc and migration (#217)

This commit is contained in:
Dusan Sekulic
2024-07-26 02:09:48 +02:00
committed by GitHub
parent 03cbb22a34
commit e45bff3c70
19 changed files with 1743 additions and 706 deletions

View File

@@ -1,11 +1,13 @@
package sqlitedb
import (
"context"
"database/sql"
"fmt"
"os"
"path/filepath"
"github.com/ark-network/ark/internal/infrastructure/db/sqlite/sqlc/queries"
_ "modernc.org/sqlite"
)
@@ -43,3 +45,41 @@ func extendArray[T any](arr []T, position int) []T {
return arr
}
func execTx(
ctx context.Context,
db *sql.DB,
txBody func(*queries.Queries) error,
) (err error) {
tx, err := db.BeginTx(ctx, nil)
if err != nil {
return fmt.Errorf("failed to start transaction: %w", err)
}
querier := queries.New(db)
defer func() {
if p := recover(); p != nil {
rollbackErr := tx.Rollback()
if rollbackErr != nil {
err = fmt.Errorf("panic: %v, rollback error: %w", p, rollbackErr)
}
panic(p) // Re-throw after rollback
} else if err != nil {
rollbackErr := tx.Rollback()
if rollbackErr != nil {
err = fmt.Errorf("original error: %v, rollback error: %w", err, rollbackErr)
}
}
}()
if err = txBody(querier.WithTx(tx)); err != nil {
return fmt.Errorf("failed to execute transaction: %w", err)
}
if err = tx.Commit(); err != nil {
return fmt.Errorf("failed to commit transaction: %w", err)
}
return nil
}