Refactor postgres to be initialized with config

This commit is contained in:
Eric Meyer
2017-11-09 12:42:24 -06:00
parent aa52088ba7
commit 58fbeb32fd
5 changed files with 28 additions and 34 deletions
+11 -4
View File
@@ -2,11 +2,13 @@ package repositories
import (
"database/sql"
"log"
"context"
"errors"
"github.com/8thlight/vulcanizedb/pkg/config"
"github.com/8thlight/vulcanizedb/pkg/core"
"github.com/jmoiron/sqlx"
_ "github.com/lib/pq"
@@ -16,6 +18,15 @@ type Postgres struct {
Db *sqlx.DB
}
func NewPostgres(databaseConfig config.Database) Postgres {
connectString := config.DbConnectionString(databaseConfig)
db, err := sqlx.Connect("postgres", connectString)
if err != nil {
log.Fatalf("Error connecting to DB: %v\n", err)
}
return Postgres{Db: db}
}
var (
ErrDBInsertFailed = errors.New("postgres: insert failed")
)
@@ -40,10 +51,6 @@ func (repository Postgres) MissingBlockNumbers(startingBlockNumber int64, highes
return numbers
}
func NewPostgres(db *sqlx.DB) Postgres {
return Postgres{Db: db}
}
func (repository Postgres) FindBlockByNumber(blockNumber int64) *core.Block {
blockRows, _ := repository.Db.Query(
`SELECT id, block_number, block_gaslimit, block_gasused, block_time, block_difficulty, block_hash, block_nonce, block_parenthash, block_size, uncle_hash FROM blocks`)
+7 -16
View File
@@ -7,6 +7,7 @@ import (
"github.com/8thlight/vulcanizedb/pkg/config"
"github.com/8thlight/vulcanizedb/pkg/core"
"github.com/8thlight/vulcanizedb/pkg/repositories"
"github.com/8thlight/vulcanizedb/pkg/repositories/testing"
"github.com/jmoiron/sqlx"
_ "github.com/lib/pq"
. "github.com/onsi/ginkgo"
@@ -225,7 +226,6 @@ var _ = Describe("Repositories", func() {
})
It("does not commit block if block is invalid", func() {
//badNonce violates db Nonce field length
badNonce := fmt.Sprintf("x %s", strings.Repeat("1", 100))
badBlock := core.Block{
@@ -234,10 +234,7 @@ var _ = Describe("Repositories", func() {
Transactions: []core.Transaction{},
}
cfg, _ := config.NewConfig("private")
pgConfig := config.DbConnectionString(cfg.Database)
db, _ := sqlx.Connect("postgres", pgConfig)
Expect(db).ShouldNot(BeNil())
repository := repositories.NewPostgres(db)
repository := repositories.NewPostgres(cfg.Database)
err := repository.CreateBlock(badBlock)
savedBlock := repository.FindBlockByNumber(123)
@@ -247,19 +244,15 @@ var _ = Describe("Repositories", func() {
})
It("does not commit block or transactions if transaction is invalid", func() {
//badHash violates db To field length
badHash := fmt.Sprintf("x %s", strings.Repeat("1", 100))
badTransaction := core.Transaction{To: badHash}
cfg, _ := config.NewConfig("private")
pgConfig := config.DbConnectionString(cfg.Database)
block := core.Block{
Number: 123,
Transactions: []core.Transaction{badTransaction},
}
db, _ := sqlx.Connect("postgres", pgConfig)
Expect(db).ShouldNot(BeNil())
repository := repositories.NewPostgres(db)
cfg, _ := config.NewConfig("private")
repository := repositories.NewPostgres(cfg.Database)
err := repository.CreateBlock(block)
savedBlock := repository.FindBlockByNumber(123)
@@ -270,11 +263,9 @@ var _ = Describe("Repositories", func() {
AssertRepositoryBehavior(func() repositories.Repository {
cfg, _ := config.NewConfig("private")
pgConfig := config.DbConnectionString(cfg.Database)
db, _ := sqlx.Connect("postgres", pgConfig)
db.MustExec("DELETE FROM transactions")
db.MustExec("DELETE FROM blocks")
return repositories.NewPostgres(db)
repository := repositories.NewPostgres(cfg.Database)
testing.ClearData(repository)
return repository
})
})
+8
View File
@@ -0,0 +1,8 @@
package testing
import "github.com/8thlight/vulcanizedb/pkg/repositories"
func ClearData(postgres repositories.Postgres) {
postgres.Db.MustExec("DELETE FROM transactions")
postgres.Db.MustExec("DELETE FROM blocks")
}