From b29061d0798ad854cd0f27ce60d7c58c10a239e9 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 05 Apr 2025 23:33:20 +0800 Subject: [PATCH] database: Separate opening the database into its own package --- config.go | 5 ++--- internal/database/database.go | 16 ++++++++++++++++ server.go | 7 ++----- diff --git a/config.go b/config.go index abb71dd2b2beacdb5dd194b0957e331661756f72..b8e5e28ae241656d01ba602d649907bd562ba941 100644 --- a/config.go +++ b/config.go @@ -5,12 +5,11 @@ package forge import ( "bufio" - "context" "errors" "log/slog" "os" - "github.com/jackc/pgx/v5/pgxpool" + "go.lindenii.runxiyu.org/forge/internal/database" "go.lindenii.runxiyu.org/forge/internal/scfg" ) @@ -88,7 +87,7 @@ if s.config.DB.Type != "postgres" { return errors.New("unsupported database type") } - if s.database, err = pgxpool.New(context.Background(), s.config.DB.Conn); err != nil { + if s.database, err = database.Open(s.config.DB.Conn); err != nil { return err } diff --git a/internal/database/database.go b/internal/database/database.go new file mode 100644 index 0000000000000000000000000000000000000000..27c3b38b676c088057939d8329fd02c3fe26fc1a --- /dev/null +++ b/internal/database/database.go @@ -0,0 +1,16 @@ +package database + +import ( + "context" + + "github.com/jackc/pgx/v5/pgxpool" +) + +type Database struct { + *pgxpool.Pool +} + +func Open(connString string) (Database, error) { + db, err := pgxpool.New(context.Background(), connString) + return Database{db}, err +} diff --git a/server.go b/server.go index 6737ac67dad40835d430af4071b2751428e4a96d..90b2e2e5d97ef87fd2432fc9bb1cbaa1371acced 100644 --- a/server.go +++ b/server.go @@ -15,7 +15,7 @@ "os/exec" "syscall" "time" - "github.com/jackc/pgx/v5/pgxpool" + "go.lindenii.runxiyu.org/forge/internal/database" "go.lindenii.runxiyu.org/lindenii-common/cmap" goSSH "golang.org/x/crypto/ssh" ) @@ -23,10 +23,7 @@ type Server struct { config Config - // database serves as the primary database handle for this entire application. - // Transactions or single reads may be used from it. A [pgxpool.Pool] is - // necessary to safely use pgx concurrently; pgx.Conn, etc. are insufficient. - database *pgxpool.Pool + database database.Database sourceHandler http.Handler staticHandler http.Handler -- 2.48.1