Antonio Mika
·
2026-10-10
1package postgres
2
3import (
4 "database/sql"
5 "log/slog"
6
7 "github.com/jmoiron/sqlx"
8 _ "github.com/lib/pq"
9)
10
11var PAGER_SIZE = 15
12
13type PsqlDB struct {
14 Logger *slog.Logger
15 Db *sqlx.DB
16}
17
18type RowScanner interface {
19 Scan(dest ...any) error
20}
21
22func NewDB(databaseUrl string, logger *slog.Logger) *PsqlDB {
23 var err error
24 d := &PsqlDB{
25 Logger: logger,
26 }
27 d.Logger.Info("Connecting to postgres", "databaseUrl", databaseUrl)
28
29 db, err := sqlx.Connect("postgres", databaseUrl)
30 if err != nil {
31 d.Logger.Error(err.Error())
32 }
33 d.Db = db
34 return d
35}
36
37func (me *PsqlDB) Close() error {
38 me.Logger.Info("Closing db")
39 return me.Db.Close()
40}
41
42func newNullString(s string) sql.NullString {
43 if len(s) == 0 {
44 return sql.NullString{}
45 }
46 return sql.NullString{
47 String: s,
48 Valid: true,
49 }
50}