mirror of
https://github.com/nkanaev/yarr.git
synced 2026-06-24 09:05:16 +00:00
wrap postgres errors
This commit is contained in:
@@ -2,6 +2,7 @@ package postgres
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -15,7 +16,7 @@ func migrate(db *sql.DB) error {
|
|||||||
if _, err := db.Exec(
|
if _, err := db.Exec(
|
||||||
`create table if not exists schema_version (version bigint primary key)`,
|
`create table if not exists schema_version (version bigint primary key)`,
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return err
|
return fmt.Errorf("create schema_version table: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var version int64
|
var version int64
|
||||||
@@ -23,7 +24,7 @@ func migrate(db *sql.DB) error {
|
|||||||
`select coalesce(max(version), 0) from schema_version`,
|
`select coalesce(max(version), 0) from schema_version`,
|
||||||
).Scan(&version)
|
).Scan(&version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return fmt.Errorf("read schema version: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if version >= maxVersion {
|
if version >= maxVersion {
|
||||||
@@ -37,12 +38,12 @@ func migrate(db *sql.DB) error {
|
|||||||
|
|
||||||
tx, err := db.Begin()
|
tx, err := db.Begin()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return fmt.Errorf("migration %d begin tx: %w", v, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := migrations[v-1](tx); err != nil {
|
if err := migrations[v-1](tx); err != nil {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
return err
|
return fmt.Errorf("migration %d: %w", v, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := tx.Exec(
|
if _, err := tx.Exec(
|
||||||
@@ -50,11 +51,11 @@ func migrate(db *sql.DB) error {
|
|||||||
on conflict do nothing`, v,
|
on conflict do nothing`, v,
|
||||||
); err != nil {
|
); err != nil {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
return err
|
return fmt.Errorf("migration %d record version: %w", v, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := tx.Commit(); err != nil {
|
if err := tx.Commit(); err != nil {
|
||||||
return err
|
return fmt.Errorf("migration %d commit: %w", v, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("[migration:%d] done", v)
|
log.Printf("[migration:%d] done", v)
|
||||||
|
|||||||
Reference in New Issue
Block a user