Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion example/db/query.postgres.sql
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ VALUES ($1, $2);
-- INSERT INTO book_tags ("book_id", "tag_id") VALUES (unnest($1::bigint[]), unnest($2::bigint[]))
-- @bulk-for AddBookTag
INSERT INTO book_tags ("book_id", "tag_id")
VALUES (unnest($1::bigint[]), unnest($2::bigint[]));
VALUES (unnest(sqlc.arg(book_ids)::bigint[]), unnest(sqlc.arg(tag_ids)::bigint[]));

-- name: GetBookTags :many
-- SELECT t."id", t."name", t."created_at", t."updated_at" FROM tags t INNER JOIN book_tags bt ON t.id = bt.tag_id WHERE bt.book_id = $1
Expand Down
3 changes: 2 additions & 1 deletion example/go.mod
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
module github.com/kalbasit/sqlc-multi-db/example

go 1.25.5
go 1.25.7

tool github.com/kalbasit/sqlc-multi-db

require (
github.com/go-sql-driver/mysql v1.9.2
github.com/jackc/pgx/v5 v5.7.4
github.com/lib/pq v1.12.0
github.com/mattn/go-sqlite3 v1.14.28
)

Expand Down
2 changes: 2 additions & 0 deletions example/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/lib/pq v1.12.0 h1:mC1zeiNamwKBecjHarAr26c/+d8V5w/u4J0I/yASbJo=
github.com/lib/pq v1.12.0/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA=
github.com/mattn/go-sqlite3 v1.14.28 h1:ThEiQrnbtumT+QMknw63Befp/ce/nUPgBPMlRFEum7A=
github.com/mattn/go-sqlite3 v1.14.28/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
Expand Down
10 changes: 9 additions & 1 deletion example/pkg/database/database.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
//go:generate go tool sqlc-multi-db --engine sqlite:sqlitedb --engine postgres:postgresdb --engine mysql:mysqldb postgresdb/querier.go
package database

import (
Expand All @@ -16,34 +17,41 @@ import (
)

// Open opens a database connection and returns a Querier.
// URL schemes: sqlite:/, postgresql://, mysql://
// URL schemes: sqlite:/, postgresql://, mysql://.
func Open(ctx context.Context, dbURL string) (Querier, error) {
switch {
case strings.HasPrefix(dbURL, "sqlite:"):
path := strings.TrimPrefix(dbURL, "sqlite:")

sdb, err := sql.Open("sqlite3", path)
if err != nil {
return nil, fmt.Errorf("opening sqlite: %w", err)
}

sdb.SetMaxOpenConns(1)

if _, err := sdb.ExecContext(ctx, "PRAGMA foreign_keys = ON"); err != nil {
return nil, fmt.Errorf("enabling foreign keys: %w", err)
}

return &sqliteWrapper{adapter: sqlitedb.NewAdapter(sdb)}, nil

case strings.HasPrefix(dbURL, "postgres://"), strings.HasPrefix(dbURL, "postgresql://"):
sdb, err := sql.Open("pgx", dbURL)
if err != nil {
return nil, fmt.Errorf("opening postgres: %w", err)
}

return &postgresWrapper{adapter: postgresdb.NewAdapter(sdb)}, nil

case strings.HasPrefix(dbURL, "mysql://"):
dsn := strings.TrimPrefix(dbURL, "mysql://")

sdb, err := sql.Open("mysql", dsn)
if err != nil {
return nil, fmt.Errorf("opening mysql: %w", err)
}

return &mysqlWrapper{adapter: mysqldb.NewAdapter(sdb)}, nil

default:
Expand Down
3 changes: 0 additions & 3 deletions example/pkg/database/generate.go

This file was deleted.

4 changes: 2 additions & 2 deletions example/pkg/database/generated_models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

57 changes: 46 additions & 11 deletions example/pkg/database/generated_querier.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions example/pkg/database/generated_wrapper_mysql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 6 additions & 3 deletions example/pkg/database/generated_wrapper_postgres.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions example/pkg/database/generated_wrapper_sqlite.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions example/pkg/database/mysqldb/db.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions example/pkg/database/mysqldb/models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

68 changes: 47 additions & 21 deletions example/pkg/database/mysqldb/querier.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading