package postgres import ( "context" "database/sql" "embed" "fmt" "github.com/jackc/pgx/v4" _ "github.com/jackc/pgx/v4/stdlib" "github.com/pressly/goose/v3" ) //go:embed schema/*.sql var migrations embed.FS // Connect to a database func Connect(server string, user string, password string, database string) (*Queries, *sql.DB, 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 } goose.SetBaseFS(migrations) if err = goose.Up(conn, "schema"); err != nil { return nil, nil, err } connPG, err := pgx.Connect(context.Background(), connString) if err != nil { return nil, nil, err } return New(connPG), conn, nil } func (tx Transaction) GetAmount() float64 { var amount float64 err := tx.Amount.AssignTo(&amount) if err != nil { panic(err) } return amount } func (tx Transaction) GetPositive() bool { amount := tx.GetAmount() return amount >= 0 } func (tx GetTransactionsForBudgetRow) GetAmount() float64 { var amount float64 err := tx.Amount.AssignTo(&amount) if err != nil { panic(err) } return amount } func (tx GetTransactionsForBudgetRow) GetPositive() bool { amount := tx.GetAmount() return amount >= 0 }