Initial commot

Have got DB creation and migration working
This commit is contained in:
Leon Mika 2025-01-27 07:39:19 +11:00
commit 4ecc12f035
14 changed files with 315 additions and 0 deletions

59
providers/db/provider.go Normal file
View file

@ -0,0 +1,59 @@
package db
import (
"context"
"errors"
"github.com/golang-migrate/migrate/v4"
_ "github.com/golang-migrate/migrate/v4/database/pgx/v5"
"github.com/golang-migrate/migrate/v4/source/iofs"
"github.com/jackc/pgx/v5/pgxpool"
"lmika.dev/lmika/hugo-crm/gen/sqlc/dbq"
"lmika.dev/lmika/hugo-crm/sql"
"strings"
)
type DB struct {
url string
pool *pgxpool.Pool
q *dbq.Queries
}
func New(url string) (*DB, error) {
pool, err := pgxpool.New(context.Background(), url)
if err != nil {
return nil, err
}
return &DB{
url: url,
pool: pool,
q: dbq.New(pool),
}, nil
}
func (db *DB) Close() {
db.pool.Close()
}
func (db *DB) Ping(ctx context.Context) error {
return db.pool.Ping(ctx)
}
func (db *DB) Migrate(ctx context.Context) error {
ms, err := iofs.New(sql.FS, "schema")
if err != nil {
return err
}
dbURL := "pgx5://" + strings.TrimPrefix(db.url, "postgres://")
m, err := migrate.NewWithSourceInstance("iofs", ms, dbURL)
if err != nil {
return err
}
err = m.Up()
if err != nil && !errors.Is(err, migrate.ErrNoChange) {
return err
}
return nil
}

21
providers/db/sites.go Normal file
View file

@ -0,0 +1,21 @@
package db
import (
"context"
"lmika.dev/lmika/hugo-crm/gen/sqlc/dbq"
"lmika.dev/lmika/hugo-crm/models"
)
func (db *DB) InsertSite(ctx context.Context, site *models.Site) error {
id, err := db.q.NewSite(ctx, dbq.NewSiteParams{
Name: site.Name,
Url: site.URL,
Theme: "default",
Props: []byte("{}"),
})
if err != nil {
return err
}
site.ID = id
return nil
}