diff --git a/backend/go.mod b/backend/go.mod index 3bc4aa7..a45fad6 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -10,6 +10,7 @@ require ( github.com/swaggo/files v1.0.1 github.com/swaggo/gin-swagger v1.6.0 github.com/swaggo/swag v1.16.4 + go.uber.org/fx v1.24.0 go.uber.org/zap v1.27.0 ) @@ -32,6 +33,7 @@ require ( github.com/goccy/go-json v0.10.5 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.2.10 // indirect @@ -50,11 +52,11 @@ require ( github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.3.0 // indirect go.uber.org/dig v1.19.0 // indirect - go.uber.org/fx v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.18.0 // indirect golang.org/x/crypto v0.39.0 // indirect golang.org/x/net v0.41.0 // indirect + golang.org/x/sync v0.15.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.26.0 // indirect golang.org/x/tools v0.34.0 // indirect diff --git a/backend/internal/database/dbContext.go b/backend/internal/database/dbContext.go new file mode 100644 index 0000000..7b704a0 --- /dev/null +++ b/backend/internal/database/dbContext.go @@ -0,0 +1,43 @@ +package database + +import ( + "context" + + "github.com/jackc/pgx/v5/pgxpool" + + "easywish/config" +) + +type DbContext interface { + Close() +} + +type dbContextImpl struct { + Pool *pgxpool.Pool + Context context.Context +} + +func NewDbContext() DbContext { + + ctx := context.Background() + pool, err := pgxpool.New(ctx, config.GetConfig().DatabaseUrl) + + if err != nil { + panic(err.Error()) + } + + if err := pool.Ping(context.Background()); err != nil { + panic(err.Error()) + } + + return &dbContextImpl{ + Pool: pool, + Context: ctx, + } +} + +// Close implements DbContext. +func (d *dbContextImpl) Close() { + d.Pool.Close() +} + diff --git a/backend/internal/database/setup.go b/backend/internal/database/setup.go new file mode 100644 index 0000000..0679236 --- /dev/null +++ b/backend/internal/database/setup.go @@ -0,0 +1,13 @@ +package database + +import ( + "go.uber.org/fx" +) + +var Module = fx.Module("database", + fx.Provide( + NewDbContext, + ), +) + + diff --git a/sqlc/sqlc.yaml b/sqlc/sqlc.yaml index 01e204f..eee19b1 100644 --- a/sqlc/sqlc.yaml +++ b/sqlc/sqlc.yaml @@ -7,6 +7,8 @@ sql: go: out: "../backend/internal/database" sql_package: "pgx/v5" + emit_prepared_queries: true + emit_interface: false database: # managed: true uri: "postgresql://postgres:postgres@localhost:5432/postgres?sslmode=disable"