mirror of
https://github.com/Dvorinka/Bookra.git
synced 2026-06-04 20:43:01 +00:00
first commit
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"bookra/apps/backend/internal/config"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
)
|
||||
|
||||
type Pools struct {
|
||||
App *pgxpool.Pool
|
||||
Direct *pgxpool.Pool
|
||||
}
|
||||
|
||||
func NewPools(cfg config.Config) (*Pools, error) {
|
||||
pools := &Pools{}
|
||||
|
||||
if cfg.DatabaseURL != "" {
|
||||
pool, err := connect(cfg.DatabaseURL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pools.App = pool
|
||||
}
|
||||
|
||||
if cfg.DatabaseDirectURL != "" {
|
||||
pool, err := connect(cfg.DatabaseDirectURL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pools.Direct = pool
|
||||
}
|
||||
|
||||
return pools, nil
|
||||
}
|
||||
|
||||
func (p *Pools) Close() {
|
||||
if p.App != nil {
|
||||
p.App.Close()
|
||||
}
|
||||
if p.Direct != nil {
|
||||
p.Direct.Close()
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Pools) DatabaseConfigured() bool {
|
||||
return p.App != nil || p.Direct != nil
|
||||
}
|
||||
|
||||
func connect(databaseURL string) (*pgxpool.Pool, error) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cancel()
|
||||
return pgxpool.New(ctx, databaseURL)
|
||||
}
|
||||
Reference in New Issue
Block a user