Remove Repository and use Database instead
This commit is contained in:
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
Reference in New Issue
Block a user