From 891961ef1954cd90c911cd9a297a55574fbff1d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Carlos=20Nieto?= <jose.carlos@menteslibres.net> Date: Fri, 13 Jun 2014 19:41:25 -0500 Subject: [PATCH] Adding Adapter constant and Where() method. --- sqlite/database.go | 4 ++-- sqlite/database_test.go | 30 +++++++++++++++--------------- sqlite/result.go | 9 +++++++++ 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/sqlite/database.go b/sqlite/database.go index 1572115c..008f1df6 100644 --- a/sqlite/database.go +++ b/sqlite/database.go @@ -34,7 +34,7 @@ import ( "upper.io/db/util/sqlutil" ) -const Driver = `sqlite` +const Adapter = `sqlite` var ( // Format for saving dates. @@ -102,7 +102,7 @@ func init() { sqlSelectCountLayout, } - db.Register(Driver, &Source{}) + db.Register(Adapter, &Source{}) } func (self *Source) doExec(stmt sqlgen.Statement, args ...interface{}) (sql.Result, error) { diff --git a/sqlite/database_test.go b/sqlite/database_test.go index 0a34c8c8..90ef19b1 100644 --- a/sqlite/database_test.go +++ b/sqlite/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()) } @@ -765,7 +765,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()) } @@ -818,7 +818,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()) } @@ -843,7 +843,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()) @@ -872,7 +872,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()) } @@ -905,7 +905,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()) } @@ -946,7 +946,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/sqlite/result.go b/sqlite/result.go index 04a1dd98..8c7feba1 100644 --- a/sqlite/result.go +++ b/sqlite/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 -- GitLab