Remove Repository and use Database instead

This commit is contained in:
2021-12-11 20:18:09 +00:00
parent d5ebf5a5cf
commit e9adc763b2
14 changed files with 42 additions and 53 deletions

View File

@ -2,19 +2,22 @@ package postgres
import (
"context"
"database/sql"
"github.com/google/uuid"
)
// NewBudget creates a budget and adds it to the current user
func (s *Repository) NewBudget(context context.Context, name string, userID uuid.UUID) (*Budget, error) {
budget, err := s.DB.CreateBudget(context, name)
func (s *Database) NewBudget(context context.Context, name string, userID uuid.UUID) (*Budget, error) {
tx, err := s.BeginTx(context, &sql.TxOptions{})
q := s.WithTx(tx)
budget, err := q.CreateBudget(context, name)
if err != nil {
return nil, err
}
ub := LinkBudgetToUserParams{UserID: userID, BudgetID: budget.ID}
_, err = s.DB.LinkBudgetToUser(context, ub)
_, err = q.LinkBudgetToUser(context, ub)
if err != nil {
return nil, err
}

View File

@ -12,18 +12,26 @@ import (
//go:embed schema/*.sql
var migrations embed.FS
type Database struct {
*Queries
*sql.DB
}
// Connect to a database
func Connect(server string, user string, password string, database string) (*Queries, *sql.DB, error) {
func Connect(server string, user string, password string, database string) (*Database, error) {
connString := fmt.Sprintf("postgres://%s:%s@%s/%s", user, password, server, database)
conn, err := sql.Open("pgx", connString)
if err != nil {
return nil, nil, err
return nil, err
}
goose.SetBaseFS(migrations)
if err = goose.Up(conn, "schema"); err != nil {
return nil, nil, err
return nil, err
}
return New(conn), conn, nil
return &Database{
New(conn),
conn,
}, nil
}

View File

@ -1,17 +0,0 @@
package postgres
import "database/sql"
// Repository represents a PostgreSQL implementation of all ModelServices
type Repository struct {
DB *Queries
LegacyDB *sql.DB
}
func NewRepository(queries *Queries, db *sql.DB) (*Repository, error) {
repo := &Repository{
DB: queries,
LegacyDB: db,
}
return repo, nil
}