diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/conf/conf.go | 24 | ||||
| -rw-r--r-- | src/db/db.go | 23 | ||||
| -rw-r--r-- | src/server/server.go | 6 |
3 files changed, 42 insertions, 11 deletions
diff --git a/src/conf/conf.go b/src/conf/conf.go index 7a6dcbf..62ffb57 100644 --- a/src/conf/conf.go +++ b/src/conf/conf.go @@ -1,6 +1,7 @@ package conf import ( + "fmt" "log" "os" @@ -18,7 +19,11 @@ type ( Db struct { Adapter string `toml:"adapter"` User string `toml:"user"` - Password string `toml:"pass"` + Secret string `toml:"secret"` + Hostname string `toml:"hostname"` + Port string `toml:"port"` + DbName string `toml:"dbname"` + Url string } Server struct { @@ -43,7 +48,9 @@ func NewConf() *Conf { c := Conf{ cwd, filepath, - Db{}, + Db{ + Hostname: "localhost", + }, Server{ UiPath: cwd + "/ui", }, @@ -52,11 +59,24 @@ func NewConf() *Conf { if err != nil { log.Fatalln(err) } + c.setDbUrl() log.Printf("Config loaded: %s", c) return &c } +func (c *Conf) setDbUrl() { + c.Db.Url = fmt.Sprintf( + "%s://%s:%s@%s:%s/%s", + c.Db.Adapter, + c.Db.User, + c.Db.Secret, + c.Db.Hostname, + c.Db.Port, + c.Db.DbName, + ) +} + func (c *Conf) GetCwd() string { return c.cwd } diff --git a/src/db/db.go b/src/db/db.go index 62218b2..4daf561 100644 --- a/src/db/db.go +++ b/src/db/db.go @@ -1,15 +1,26 @@ package db import ( - "database/sql" + "context" + "log" + + "github.com/jackc/pgx/v5/pgxpool" "gitlab.com/alexkavon/newsstand/src/conf" ) -type Db struct { - Db *sql.DB -} +func NewDb(config *conf.Conf) *pgxpool.Pool { + pool, err := pgxpool.New(context.Background(), config.Db.Url) + if err != nil { + log.Fatal(err) + } + defer pool.Close() -func NewDb(config *conf.Conf) *sql.DB { - return &sql.DB{} + var testquery string + err = pool.QueryRow(context.Background(), "select 'Hello, PostgreSQL!'").Scan(&testquery) + if err != nil { + log.Fatal(err) + } + log.Println("Database connection pool created.", testquery) + return pool } diff --git a/src/server/server.go b/src/server/server.go index 9ba6104..aa9f7d2 100644 --- a/src/server/server.go +++ b/src/server/server.go @@ -1,21 +1,21 @@ package server import ( - "database/sql" "net/http" "github.com/go-chi/chi/v5" + "github.com/jackc/pgx/v5/pgxpool" "gitlab.com/alexkavon/newsstand/src/conf" ) type Server struct { Router *chi.Mux - Db *sql.DB + Db *pgxpool.Pool Config *conf.Conf Ui Ui } -func NewServer(config *conf.Conf, db *sql.DB) *Server { +func NewServer(config *conf.Conf, db *pgxpool.Pool) *Server { return &Server{ Router: NewRouter(config), Db: db, |
