Use `QL` instead of NutsDB

This commit is contained in:
Netscape Navigator 2020-08-26 07:34:01 -05:00
parent f425859e5c
commit 3035d02f73
3 changed files with 35 additions and 42 deletions

View File

@ -8,9 +8,10 @@ Don't use the Go version yet. If you want something stable, there is a [Ruby ver
# TODO
- [ ] Finish http://go-database-sql.org/retrieving.html
- [ ] Finish http://go-database-sql.org/errors.html
- [ ] Add a real testing lib to DRY things up.
- [ ] Get a good CI system going? Run tests at PR time, prevent coverage slips, etc..
- [ ] Add a [database migration system](https://github.com/golang-migrate/migrate)?
- [ ] Finish all the things below:
|Done?|Verb |Noun | Flag / arg 1 | Flag 2 |

View File

@ -7,6 +7,18 @@ import (
"modernc.org/ql"
)
type migration struct {
up string
down string
}
var migrations = []migration{
migration{
up: `CREATE TABLE IF NOT EXISTS private_keys (id INTEGER PRIMARY KEY, secret TEXT NOT NULL);`,
down: `DROP TABLE IF EXISTS private_keys`,
},
}
func openDB() *sql.DB {
ql.RegisterDriver()
@ -22,54 +34,34 @@ func openDB() *sql.DB {
log.Fatalf("failed to ping db: %s", err1)
}
db.Exec(`
CREATE TABLE private_keys (
id INTEGER PRIMARY KEY,
secret TEXT NOT NULL
);
`)
tx, err := db.Begin()
if err != nil {
log.Fatalf("Failed to start transaction: %s", err)
}
for _, migration := range migrations {
tx.Exec(migration.up)
}
tx.Commit()
return db
}
// Database is a database object. Currently using modernc.org/ql
var Database = openDB()
func setUp(db *sql.DB) error {
tx, err := db.Begin()
if err != nil {
return err
}
_, err = tx.Exec(`
CREATE TABLE note (
id BIGINT
,title STRING
,body STRING
,created_at STRING
,updated_at STRING
);
`)
if err != nil {
return err
}
if err = tx.Commit(); err != nil {
return err
}
return nil
}
func tearDown() {
tx, err := Database.Begin()
func tearDown(db *sql.DB) error {
tx, err := db.Begin()
if err != nil {
return err
log.Fatalf("Failed to start transaction: %s", err)
}
_, err = tx.Exec(`
DROP TABLE note;
`)
if err != nil {
return err
for _, migration := range migrations {
tx.Exec(migration.down)
}
if err = tx.Commit(); err != nil {
return err
}
return nil
tx.Commit()
}

View File

@ -4,7 +4,7 @@ import (
"testing"
)
func TestSetUp(t *testing.T) {
func TestSetUpTeardown(t *testing.T) {
db := openDB()
err := db.Ping()
if err != nil {