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