aea9c7b5e2
* Separate Repository into multiple Repositories * Use struct scan for transactions * Use struct scan for blocks * Remove unused block repo methods * Update naming * Rename / Cleanup repository related fields
38 lines
894 B
Go
38 lines
894 B
Go
package postgres
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
_ "github.com/lib/pq"
|
|
"github.com/vulcanize/vulcanizedb/pkg/config"
|
|
"github.com/vulcanize/vulcanizedb/pkg/core"
|
|
)
|
|
|
|
type DB struct {
|
|
*sqlx.DB
|
|
node core.Node
|
|
nodeId int64
|
|
}
|
|
|
|
var (
|
|
ErrDBInsertFailed = errors.New("postgres: insert failed")
|
|
ErrDBDeleteFailed = errors.New("postgres: delete failed")
|
|
ErrDBConnectionFailed = errors.New("postgres: db connection failed")
|
|
ErrUnableToSetNode = errors.New("postgres: unable to set node")
|
|
)
|
|
|
|
func NewDB(databaseConfig config.Database, node core.Node) (*DB, error) {
|
|
connectString := config.DbConnectionString(databaseConfig)
|
|
db, err := sqlx.Connect("postgres", connectString)
|
|
if err != nil {
|
|
return &DB{}, ErrDBConnectionFailed
|
|
}
|
|
pg := DB{DB: db, node: node}
|
|
err = pg.CreateNode(&node)
|
|
if err != nil {
|
|
return &DB{}, ErrUnableToSetNode
|
|
}
|
|
return &pg, nil
|
|
}
|