Files
walkies/internal/db/db.go
James Griffin e82a39f2e4
All checks were successful
CI / Go tests & lint (push) Successful in 8s
CI / Frontend tests & type-check (push) Successful in 40s
CI / Go tests & lint (pull_request) Successful in 7s
CI / Frontend tests & type-check (pull_request) Successful in 35s
Fix build and run issues
2026-04-08 14:58:58 -03:00

35 lines
704 B
Go

package db
import (
"context"
"database/sql"
"errors"
"fmt"
"github.com/go-sql-driver/mysql"
)
func Open(dsn string) (*sql.DB, error) {
db, err := sql.Open("mysql", dsn)
if err != nil {
return nil, fmt.Errorf("open db: %w", err)
}
if err := db.Ping(); err != nil {
return nil, fmt.Errorf("ping db: %w", err)
}
return db, nil
}
func Migrate(ctx context.Context, db *sql.DB) error {
for _, stmt := range statements {
if _, err := db.ExecContext(ctx, stmt); err != nil {
var mysqlErr *mysql.MySQLError
if errors.As(err, &mysqlErr) && mysqlErr.Number == 1060 {
continue // duplicate column — already exists
}
return fmt.Errorf("migrate: %w", err)
}
}
return nil
}