diff --git a/mysql/database.go b/mysql/database.go index 7730534e524c2d62b96512736c440cd0bf15d231..0dd71f85a1b12b4e04d2582784704456c77487f4 100644 --- a/mysql/database.go +++ b/mysql/database.go @@ -34,7 +34,7 @@ import ( "upper.io/db/util/sqlutil" ) -const Driver = `mysql` +const Adapter = `mysql` var ( // Format for saving dates. @@ -101,7 +101,7 @@ func init() { mysqlSelectCountLayout, } - db.Register(Driver, &Source{}) + db.Register(Adapter, &Source{}) } func (self *Source) doExec(stmt sqlgen.Statement, args ...interface{}) (sql.Result, error) { diff --git a/mysql/database_test.go b/mysql/database_test.go index 9f41024ad9418b42c00d8aca7fa0fa13e0a50155..c08bc47c70bfe64ac676ca1862dff0f5dc8c416b 100644 --- a/mysql/database_test.go +++ b/mysql/database_test.go @@ -105,7 +105,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.") } @@ -119,7 +119,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()) } @@ -161,7 +161,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()) } @@ -233,7 +233,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()) } @@ -264,7 +264,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()) } @@ -427,7 +427,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()) } @@ -516,7 +516,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()) } @@ -569,7 +569,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()) } @@ -616,7 +616,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()) } @@ -777,7 +777,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()) } @@ -830,7 +830,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()) } @@ -855,7 +855,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()) @@ -884,7 +884,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()) } @@ -917,7 +917,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()) } @@ -958,7 +958,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/mysql/result.go b/mysql/result.go index 1f4b3a89f54643ec0cffd6486e55183963b36104..614bfabfd2b3d11d2c5124d90ff77864b86aa97c 100644 --- a/mysql/result.go +++ b/mysql/result.go @@ -60,6 +60,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) @@ -203,10 +209,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