diff --git a/ql/database.go b/ql/database.go index aa0efd74d50b69a028013c75abe270be367050ce..5f36733e23b4ee157e3d35e9c8752e14c81faeca 100644 --- a/ql/database.go +++ b/ql/database.go @@ -34,7 +34,7 @@ import ( "upper.io/db/util/sqlutil" ) -const Driver = `ql` +const Adapter = `ql` var ( // Format for saving dates. @@ -101,7 +101,7 @@ func init() { qlSelectCountLayout, } - db.Register(Driver, &Source{}) + db.Register(Adapter, &Source{}) } func (self *Source) doExec(stmt sqlgen.Statement, args ...interface{}) (sql.Result, error) { diff --git a/ql/database_test.go b/ql/database_test.go index d0693a9daaaf98572189ba47b7c62d3abdb6cc51..2a5dc7445c6a9dedcc609788658530f4fa9ca55f 100644 --- a/ql/database_test.go +++ b/ql/database_test.go @@ -93,7 +93,7 @@ func TestOpenFailed(t *testing.T) { var err error // Attempt to open an empty database. - if _, err = db.Open(Driver, db.Settings{}); err == nil { + if _, err = db.Open(Adapter, db.Settings{}); err == nil { // Must fail. t.Fatalf("Expecting an error.") } @@ -107,7 +107,7 @@ func TestTruncate(t *testing.T) { var col db.Collection // Opening database. - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { t.Fatalf(err.Error()) } @@ -149,7 +149,7 @@ func TestAppend(t *testing.T) { var artist db.Collection var total uint64 - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { t.Fatalf(err.Error()) } @@ -221,7 +221,7 @@ func TestResultCount(t *testing.T) { var artist db.Collection var total uint64 - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { t.Fatalf(err.Error()) } @@ -252,7 +252,7 @@ func TestResultFetch(t *testing.T) { var sess db.Database var artist db.Collection - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { t.Fatalf(err.Error()) } @@ -415,7 +415,7 @@ func TestUpdate(t *testing.T) { var sess db.Database var artist db.Collection - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { t.Fatalf(err.Error()) } @@ -504,7 +504,7 @@ func TestFunction(t *testing.T) { var artist db.Collection var total uint64 - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { t.Fatalf(err.Error()) } @@ -557,7 +557,7 @@ func TestRemove(t *testing.T) { var sess db.Database var artist db.Collection - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { t.Fatalf(err.Error()) } @@ -604,7 +604,7 @@ func TestRawRelations(t *testing.T) { Created time.Time `db:"created"` } - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { t.Fatalf(err.Error()) } @@ -772,7 +772,7 @@ func TestDataTypes(t *testing.T) { var id interface{} var exists uint64 - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { t.Fatalf(err.Error()) } @@ -828,7 +828,7 @@ func BenchmarkAppendRawSQL(b *testing.B) { var err error var sess db.Database - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { b.Fatalf(err.Error()) } @@ -854,7 +854,7 @@ func BenchmarkAppendRawSQL(b *testing.B) { // Contributed by wei2912 // See: https://github.com/gosexy/db/issues/20#issuecomment-20097801 func BenchmarkAppendUpper(b *testing.B) { - sess, err := db.Open(Driver, settings) + sess, err := db.Open(Adapter, settings) if err != nil { b.Fatalf(err.Error()) @@ -886,7 +886,7 @@ func BenchmarkAppendTxRawSQL(b *testing.B) { var sess db.Database var tx *sql.Tx - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { b.Fatalf(err.Error()) } @@ -919,7 +919,7 @@ func BenchmarkAppendTxUpper(b *testing.B) { var sess db.Database var err error - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { b.Fatalf(err.Error()) } @@ -960,7 +960,7 @@ func BenchmarkAppendTxUpperMap(b *testing.B) { var sess db.Database var err error - if sess, err = db.Open(Driver, settings); err != nil { + if sess, err = db.Open(Adapter, settings); err != nil { b.Fatalf(err.Error()) } diff --git a/ql/result.go b/ql/result.go index bcdfb3c4b4867b8371a1391c65acb800e7051a0e..2c88d7497d88e3ede763d2fd886eaf1241171ee5 100644 --- a/ql/result.go +++ b/ql/result.go @@ -61,6 +61,12 @@ func (self *Result) setCursor() error { return err } +// Sets conditions for reducing the working set. +func (self *Result) Where(terms ...interface{}) db.Result { + self.where, self.arguments = whereValues(terms) + return self +} + // Determines the maximum limit of results to be returned. func (self *Result) Limit(n uint) db.Result { self.limit = sqlgen.Limit(n) @@ -204,10 +210,13 @@ func (self *Result) Update(values interface{}) error { cvs = append(cvs, sqlgen.ColumnValue{sqlgen.Column{ff[i]}, "=", sqlPlaceholder}) } + vv = append(vv, self.arguments...) + _, err = self.table.source.doExec(sqlgen.Statement{ Type: sqlgen.SqlUpdate, Table: sqlgen.Table{self.table.Name()}, ColumnValues: cvs, + Where: self.where, }, vv...) return err