Skip to content

Commit

Permalink
Update for additional QoL and using golang migrate
Browse files Browse the repository at this point in the history
  • Loading branch information
Piszmog committed Apr 7, 2024
1 parent 7a6fac6 commit bfa2ad6
Show file tree
Hide file tree
Showing 17 changed files with 186 additions and 251 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,4 @@ Icon
Network Trash Folder
Temporary Items
.apdisk
/db/queries/*.go
54 changes: 36 additions & 18 deletions db/db.go
Original file line number Diff line number Diff line change
@@ -1,31 +1,49 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.25.0

package db

import (
"context"
"database/sql"
"embed"
"fmt"
"go-htmx-template/db/queries"
"log/slog"

"github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/sqlite3"
"github.com/golang-migrate/migrate/v4/source/iofs"
)

type DBTX interface {
ExecContext(context.Context, string, ...interface{}) (sql.Result, error)
PrepareContext(context.Context, string) (*sql.Stmt, error)
QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error)
QueryRowContext(context.Context, string, ...interface{}) *sql.Row
}
//go:embed migrations/*.sql
var migrations embed.FS

func New(db DBTX) *Queries {
return &Queries{db: db}
type Database interface {
DB() *sql.DB
Queries() *queries.Queries
Logger() *slog.Logger
Close() error
}

type Queries struct {
db DBTX
func New(logger *slog.Logger, url string) (Database, error) {
return newLocalDB(logger, url)
}

func (q *Queries) WithTx(tx *sql.Tx) *Queries {
return &Queries{
db: tx,
// Migrate runs the migrations on the database. Assumes the database is SQLite.
func Migrate(db Database) error {
driver, err := sqlite3.WithInstance(db.DB(), &sqlite3.Config{})
if err != nil {
return fmt.Errorf("failed to create database driver: %w", err)
}

iofsDriver, err := iofs.New(migrations, "migrations")
if err != nil {
return fmt.Errorf("failed to create iofs: %w", err)
}
defer iofsDriver.Close()

m, err := migrate.NewWithInstance("iofs", iofsDriver, "sqlite3", driver)
if err != nil {
return fmt.Errorf("failed to create migration: %w", err)
}
defer m.Close()

return m.Up()
}
42 changes: 42 additions & 0 deletions db/local.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package db

import (
"database/sql"
"go-htmx-template/db/queries"
"log/slog"

_ "github.com/tursodatabase/libsql-client-go/libsql"
_ "modernc.org/sqlite"
)

type LocalDB struct {
logger *slog.Logger
db *sql.DB
queries *queries.Queries
}

var _ Database = (*LocalDB)(nil)

func (d *LocalDB) DB() *sql.DB {
return d.db
}

func (d *LocalDB) Queries() *queries.Queries {
return d.queries
}

func (d *LocalDB) Logger() *slog.Logger {
return d.logger
}

func (d *LocalDB) Close() error {
return d.db.Close()
}

func newLocalDB(logger *slog.Logger, path string) (*LocalDB, error) {
db, err := sql.Open("libsql", "file:"+path)
if err != nil {
return nil, err
}
return &LocalDB{logger: logger, db: db, queries: queries.New(db)}, nil
}
Empty file.
File renamed without changes.
17 changes: 0 additions & 17 deletions db/models.go

This file was deleted.

File renamed without changes.
115 changes: 0 additions & 115 deletions db/query.sql.go

This file was deleted.

16 changes: 0 additions & 16 deletions db/schema.go

This file was deleted.

12 changes: 0 additions & 12 deletions db/sqlite.go

This file was deleted.

36 changes: 21 additions & 15 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,32 @@ module go-htmx-template
go 1.21.6

require (
github.com/a-h/templ v0.2.543
modernc.org/sqlite v1.28.0
github.com/a-h/templ v0.2.648
github.com/golang-migrate/migrate/v4 v4.17.0
github.com/tursodatabase/libsql-client-go v0.0.0-20240401075953-8e79a99d828a
modernc.org/sqlite v1.29.5
)

require (
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/libsql/sqlite-antlr4-parser v0.0.0-20240327125255-dbf53b6cbf06 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-sqlite3 v1.14.22 // indirect
github.com/ncruces/go-strftime v0.1.9 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
golang.org/x/mod v0.8.0 // indirect
golang.org/x/sys v0.14.0 // indirect
golang.org/x/tools v0.1.12 // indirect
lukechampine.com/uint128 v1.2.0 // indirect
modernc.org/cc/v3 v3.40.0 // indirect
modernc.org/ccgo/v3 v3.16.13 // indirect
modernc.org/libc v1.29.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect
golang.org/x/sys v0.19.0 // indirect
modernc.org/gc/v3 v3.0.0-20240304020402-f0dba7c97c2b // indirect
modernc.org/libc v1.49.2 // indirect
modernc.org/mathutil v1.6.0 // indirect
modernc.org/memory v1.7.2 // indirect
modernc.org/opt v0.1.3 // indirect
modernc.org/strutil v1.1.3 // indirect
modernc.org/token v1.0.1 // indirect
modernc.org/memory v1.8.0 // indirect
modernc.org/strutil v1.2.0 // indirect
modernc.org/token v1.1.0 // indirect
nhooyr.io/websocket v1.8.11 // indirect
)
Loading

0 comments on commit bfa2ad6

Please sign in to comment.