Finish adding sqlc and fix some bugs

This commit is contained in:
2024-08-01 16:49:59 +02:00
parent 459a4e5c7d
commit dd49a1e687
8 changed files with 77 additions and 27 deletions

View File

@ -9,10 +9,12 @@ type (
sqlcDriverRepo struct{}
)
var dbConn = &repository.DB{}
func NewSqlRepo() repository.DatabaseDriverRepo {
return &sqlDriverRepo{}
}
// func NewSqlcRepo() repository.DatabaseDriverRepo {
// return &sqlcDriverRepo{}
// }
func NewSqlcRepo() repository.DatabaseDriverRepo {
return &sqlcDriverRepo{}
}

View File

@ -0,0 +1,48 @@
package driverrepo
import (
"context"
"go-udemy-web-1/internal/repository"
"github.com/jackc/pgx/v5"
)
func (s *sqlcDriverRepo) ConnectSQL(dsn string) (*repository.DB, error) {
ctx := context.Background()
c, err := s.newConn(ctx, dsn)
if err != nil {
panic(err)
}
dbConn.PG = c
err = s.testDB(ctx, c)
if err != nil {
return nil, err
}
return dbConn, nil
}
// testDB tries to ping the database
func (s *sqlcDriverRepo) testDB(ctx context.Context, c *pgx.Conn) error {
err := c.Ping(ctx)
if err != nil {
return err
}
return nil
}
// newDatabase creates a new database for the application
func (s *sqlcDriverRepo) newConn(ctx context.Context, dsn string) (*pgx.Conn, error) {
conn, err := pgx.Connect(ctx, dsn)
if err != nil {
return nil, err
}
// Ping test the conn
if err = conn.Ping(ctx); err != nil {
return nil, err
}
return conn, err
}

View File

@ -10,8 +10,6 @@ import (
_ "github.com/jackc/pgx/v5/stdlib"
)
var dbConn = &repository.DB{}
const (
maxOpenDbConn = 10
maxIdleDbConn = 5
@ -20,7 +18,7 @@ const (
// ConnectSQL creates SQL pool for Postgres
func (s *sqlDriverRepo) ConnectSQL(dsn string) (*repository.DB, error) {
d, err := newDatabase(dsn)
d, err := s.newDatabase(dsn)
if err != nil {
panic(err)
}
@ -31,7 +29,7 @@ func (s *sqlDriverRepo) ConnectSQL(dsn string) (*repository.DB, error) {
dbConn.SQL = d
err = testDB(d)
err = s.testDB(d)
if err != nil {
return nil, err
}
@ -39,7 +37,7 @@ func (s *sqlDriverRepo) ConnectSQL(dsn string) (*repository.DB, error) {
}
// testDB tries to ping the database
func testDB(d *sql.DB) error {
func (s *sqlDriverRepo) testDB(d *sql.DB) error {
err := d.Ping()
if err != nil {
return err
@ -48,7 +46,7 @@ func testDB(d *sql.DB) error {
}
// newDatabase creates a new database for the application
func newDatabase(dsn string) (*sql.DB, error) {
func (s *sqlDriverRepo) newDatabase(dsn string) (*sql.DB, error) {
db, err := sql.Open("pgx", dsn)
if err != nil {
return nil, err