working version

This commit is contained in:
Dmitry Fedotov
2025-05-04 21:13:19 +03:00
parent ff386892e4
commit b6dc6d3fce
10 changed files with 277 additions and 131 deletions

View File

@@ -1,23 +1,36 @@
package outbox
package repo
import (
"context"
"database/sql"
_ "embed"
"errors"
"strings"
)
var (
ErrMigrate = errors.New("error creating outbox table")
)
//go:embed init_db.sql
var initStatement string
var initStatement = `
CREATE TABLE IF NOT EXISTS -- (
id text PRIMARY KEY,
created_at timestamp with time zone,
updated_at timestamp with time zone,
deleted_at timestamp with time zone,
payload jsonb
)`
func initDB(ctx context.Context, db *sql.DB, tablename string) error {
_, err := db.ExecContext(ctx, initStatement, tablename)
if tablename == "" {
return errors.Join(ErrInitRepo, errors.New("tablename may not be empty"))
}
if db == nil {
return errors.Join(ErrInitRepo, errors.New("db instance is nil"))
}
query := strings.Replace(initStatement, "--", tablename, 1)
_, err := db.ExecContext(ctx, query)
if err != nil {
return errors.Join(ErrMigrate, err)
return errors.Join(ErrInitRepo, err)
}
return nil