diff options
-rw-r--r-- | config.go | 5 | ||||
-rw-r--r-- | internal/database/database.go | 16 | ||||
-rw-r--r-- | server.go | 7 |
3 files changed, 20 insertions, 8 deletions
@@ -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 @@ func (s *Server) LoadConfig(path string) (err error) { 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 0000000..27c3b38 --- /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 +} @@ -15,7 +15,7 @@ import ( "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 @@ import ( 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 |