diff --git a/compose/repository/attachment.go b/compose/repository/attachment.go index ef93051cf..53498b06f 100644 --- a/compose/repository/attachment.go +++ b/compose/repository/attachment.go @@ -4,9 +4,9 @@ import ( "context" "time" + "github.com/Masterminds/squirrel" "github.com/pkg/errors" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/compose/types" "github.com/cortezaproject/corteza-server/pkg/rh" diff --git a/compose/repository/chart.go b/compose/repository/chart.go index b3cf3ac2b..b057bb187 100644 --- a/compose/repository/chart.go +++ b/compose/repository/chart.go @@ -4,8 +4,8 @@ import ( "context" "strings" + "github.com/Masterminds/squirrel" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/compose/types" "github.com/cortezaproject/corteza-server/pkg/rh" diff --git a/compose/repository/module.go b/compose/repository/module.go index a5f98a6cc..d196666ed 100644 --- a/compose/repository/module.go +++ b/compose/repository/module.go @@ -5,10 +5,10 @@ import ( "fmt" "strings" + "github.com/Masterminds/squirrel" "github.com/jmoiron/sqlx" "github.com/pkg/errors" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/compose/types" "github.com/cortezaproject/corteza-server/pkg/rh" diff --git a/compose/repository/namespace.go b/compose/repository/namespace.go index 749ecbaa4..b7c48ee53 100644 --- a/compose/repository/namespace.go +++ b/compose/repository/namespace.go @@ -4,8 +4,8 @@ import ( "context" "strings" + "github.com/Masterminds/squirrel" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/compose/types" "github.com/cortezaproject/corteza-server/pkg/rh" diff --git a/compose/repository/page.go b/compose/repository/page.go index b2d6eea52..daa1661ea 100644 --- a/compose/repository/page.go +++ b/compose/repository/page.go @@ -4,8 +4,8 @@ import ( "context" "strings" + "github.com/Masterminds/squirrel" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/compose/types" "github.com/cortezaproject/corteza-server/pkg/rh" diff --git a/compose/repository/record.go b/compose/repository/record.go index d1d806532..55934d4de 100644 --- a/compose/repository/record.go +++ b/compose/repository/record.go @@ -5,10 +5,10 @@ import ( "fmt" "strings" + "github.com/Masterminds/squirrel" "github.com/jmoiron/sqlx" "github.com/pkg/errors" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/compose/types" "github.com/cortezaproject/corteza-server/pkg/ql" diff --git a/compose/repository/record_report_builder.go b/compose/repository/record_report_builder.go index cbd13b1bf..84d547c59 100644 --- a/compose/repository/record_report_builder.go +++ b/compose/repository/record_report_builder.go @@ -5,9 +5,9 @@ import ( "strconv" "strings" + "github.com/Masterminds/squirrel" "github.com/jmoiron/sqlx" "github.com/pkg/errors" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/compose/types" "github.com/cortezaproject/corteza-server/pkg/ql" diff --git a/go.mod b/go.mod index 3f96caa22..0e8bd5682 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,7 @@ require ( github.com/766b/chi-prometheus v0.0.0-20180509160047-46ac2b31aa30 github.com/99designs/basicauth-go v0.0.0-20160802081356-2a93ba0f464d github.com/DestinyWang/cronexpr v0.0.0-20140423231348-a557574d6c02 + github.com/Masterminds/squirrel v1.1.1-0.20191017225151-12f2162c8d8d github.com/PaesslerAG/gval v1.0.1 // indirect github.com/PaesslerAG/jsonpath v0.1.1 // indirect github.com/SentimensRG/ctx v0.0.0-20180729130232-0bfd988c655d @@ -57,11 +58,8 @@ require ( go.uber.org/zap v1.10.0 golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5 google.golang.org/grpc v1.22.1 - gopkg.in/Masterminds/squirrel.v1 v1.1.0 gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/mail.v2 v2.3.1 gopkg.in/square/go-jose.v2 v2.3.1 // indirect gopkg.in/yaml.v2 v2.2.2 ) - -replace gopkg.in/Masterminds/squirrel.v1 => github.com/Masterminds/squirrel v1.1.0 diff --git a/go.sum b/go.sum index 34512b4f9..0dd45285f 100644 --- a/go.sum +++ b/go.sum @@ -16,8 +16,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DestinyWang/cronexpr v0.0.0-20140423231348-a557574d6c02 h1:RYr0de1Y6gmGRVOMXjukGEipri3BYGFJXns5L8waV2A= github.com/DestinyWang/cronexpr v0.0.0-20140423231348-a557574d6c02/go.mod h1:MgxEIF6QMQcVlF8dU9fH1qlPpJmtNFs8aLzRgj6fs+w= -github.com/Masterminds/squirrel v1.1.0 h1:baP1qLdoQCeTw3ifCdOq2dkYc6vGcmRdaociKLbEJXs= -github.com/Masterminds/squirrel v1.1.0/go.mod h1:yaPeOnPG5ZRwL9oKdTsO/prlkPbXWZlRVMQ/gGlzIuA= +github.com/Masterminds/squirrel v1.1.1-0.20191017225151-12f2162c8d8d h1:5ocAvSd8xUzrwz0ZTZrSWFLhYTwdnXBxlIJeVIkO5y8= +github.com/Masterminds/squirrel v1.1.1-0.20191017225151-12f2162c8d8d/go.mod h1:yaPeOnPG5ZRwL9oKdTsO/prlkPbXWZlRVMQ/gGlzIuA= github.com/PaesslerAG/gval v0.1.1/go.mod h1:y/nm5yEyTeX6av0OfKJNp9rBNj2XrGhAf5+v24IBN1I= github.com/PaesslerAG/gval v1.0.0/go.mod h1:y/nm5yEyTeX6av0OfKJNp9rBNj2XrGhAf5+v24IBN1I= github.com/PaesslerAG/gval v1.0.1 h1:QnCvok0w0Y3uZNxmNmC6GZ0cuBl+jH0tu/rBMT8pso4= diff --git a/messaging/repository/attachment.go b/messaging/repository/attachment.go index d738559f5..116b2d96f 100644 --- a/messaging/repository/attachment.go +++ b/messaging/repository/attachment.go @@ -4,9 +4,8 @@ import ( "context" "time" - "github.com/davecgh/go-spew/spew" + "github.com/Masterminds/squirrel" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/messaging/types" "github.com/cortezaproject/corteza-server/pkg/rh" @@ -108,7 +107,7 @@ func (r attachment) FindAttachmentByMessageID(IDs ...uint64) (rval types.Message Columns("ma.rel_message"). Join(r.tableMessage() + " AS ma ON (a.id = ma.rel_attachment)"). Where(squirrel.Eq{"rel_message": IDs}) - spew.Dump(query.ToSql()) + return rval, rh.FetchAll(r.db(), query, &rval) } diff --git a/messaging/repository/channel.go b/messaging/repository/channel.go index a3927d763..cd00f1e12 100644 --- a/messaging/repository/channel.go +++ b/messaging/repository/channel.go @@ -7,8 +7,8 @@ import ( "strings" "time" + "github.com/Masterminds/squirrel" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/messaging/types" "github.com/cortezaproject/corteza-server/pkg/rh" diff --git a/messaging/repository/repository.go b/messaging/repository/repository.go index bf695b7b2..accd7f5dc 100644 --- a/messaging/repository/repository.go +++ b/messaging/repository/repository.go @@ -3,8 +3,8 @@ package repository import ( "context" + "github.com/Masterminds/squirrel" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/pkg/auth" ) diff --git a/messaging/repository/unread.go b/messaging/repository/unread.go index c00b03b76..bcd394752 100644 --- a/messaging/repository/unread.go +++ b/messaging/repository/unread.go @@ -3,8 +3,8 @@ package repository import ( "context" + "github.com/Masterminds/squirrel" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/messaging/types" ) diff --git a/pkg/automation/script_repository.go b/pkg/automation/script_repository.go index 012298a93..1a81b8040 100644 --- a/pkg/automation/script_repository.go +++ b/pkg/automation/script_repository.go @@ -3,9 +3,9 @@ package automation import ( "fmt" + "github.com/Masterminds/squirrel" "github.com/pkg/errors" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/pkg/rh" ) diff --git a/pkg/automation/trigger_repository.go b/pkg/automation/trigger_repository.go index 42727a910..2a2a66aa3 100644 --- a/pkg/automation/trigger_repository.go +++ b/pkg/automation/trigger_repository.go @@ -1,9 +1,9 @@ package automation import ( + "github.com/Masterminds/squirrel" "github.com/pkg/errors" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/pkg/rh" ) diff --git a/pkg/permissions/filter.go b/pkg/permissions/filter.go index 6aeb72dcd..ab17ed66c 100644 --- a/pkg/permissions/filter.go +++ b/pkg/permissions/filter.go @@ -3,7 +3,7 @@ package permissions import ( "fmt" - "gopkg.in/Masterminds/squirrel.v1" + "github.com/Masterminds/squirrel" "github.com/cortezaproject/corteza-server/pkg/rh" ) diff --git a/pkg/permissions/filter_test.go b/pkg/permissions/filter_test.go index a651c3427..20da90b65 100644 --- a/pkg/permissions/filter_test.go +++ b/pkg/permissions/filter_test.go @@ -3,8 +3,8 @@ package permissions import ( "testing" + "github.com/Masterminds/squirrel" "github.com/stretchr/testify/require" - "gopkg.in/Masterminds/squirrel.v1" ) func TestResourceFilter_Build(t *testing.T) { diff --git a/pkg/permissions/repository.go b/pkg/permissions/repository.go index c223ff5b1..1f99a60d8 100644 --- a/pkg/permissions/repository.go +++ b/pkg/permissions/repository.go @@ -3,9 +3,9 @@ package permissions import ( "context" + "github.com/Masterminds/squirrel" "github.com/pkg/errors" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" ) type ( diff --git a/pkg/ql/ast_nodes.go b/pkg/ql/ast_nodes.go index c54c84623..067cd6a91 100644 --- a/pkg/ql/ast_nodes.go +++ b/pkg/ql/ast_nodes.go @@ -3,7 +3,7 @@ package ql import ( "fmt" - "gopkg.in/Masterminds/squirrel.v1" + "github.com/Masterminds/squirrel" ) // SelectStatement represents a SQL SELECT statement. diff --git a/pkg/ql/squirrel.go b/pkg/ql/squirrel.go index 9d4375c8e..2128b21ce 100644 --- a/pkg/ql/squirrel.go +++ b/pkg/ql/squirrel.go @@ -6,7 +6,7 @@ package ql import ( "fmt" - "gopkg.in/Masterminds/squirrel.v1" + "github.com/Masterminds/squirrel" ) // ToSql concatenates outputs and arguments from all nodes diff --git a/pkg/rh/helpers.go b/pkg/rh/helpers.go index 7b9cef15e..da882e3cd 100644 --- a/pkg/rh/helpers.go +++ b/pkg/rh/helpers.go @@ -1,10 +1,10 @@ package rh import ( + "github.com/Masterminds/squirrel" "github.com/lann/builder" "github.com/pkg/errors" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" ) // FetchOne fetches single row from table diff --git a/pkg/rh/squirrel_fn.go b/pkg/rh/squirrel_fn.go index 505aab671..13ef45f17 100644 --- a/pkg/rh/squirrel_fn.go +++ b/pkg/rh/squirrel_fn.go @@ -3,7 +3,7 @@ package rh import ( "strings" - "gopkg.in/Masterminds/squirrel.v1" + "github.com/Masterminds/squirrel" ) type ( diff --git a/pkg/settings/repository.go b/pkg/settings/repository.go index 3b0aa2ea4..7fa962403 100644 --- a/pkg/settings/repository.go +++ b/pkg/settings/repository.go @@ -5,9 +5,9 @@ import ( "fmt" "time" + "github.com/Masterminds/squirrel" "github.com/pkg/errors" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" ) type ( diff --git a/system/repository/application.go b/system/repository/application.go index e6317cb5e..f7e76a59c 100644 --- a/system/repository/application.go +++ b/system/repository/application.go @@ -4,8 +4,8 @@ import ( "context" "time" + "github.com/Masterminds/squirrel" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/pkg/rh" "github.com/cortezaproject/corteza-server/system/types" diff --git a/system/repository/reminder.go b/system/repository/reminder.go index cc7bca995..b286aec30 100644 --- a/system/repository/reminder.go +++ b/system/repository/reminder.go @@ -6,9 +6,9 @@ import ( "github.com/cortezaproject/corteza-server/pkg/rh" + squirrel "github.com/Masterminds/squirrel" "github.com/cortezaproject/corteza-server/system/types" "github.com/titpetric/factory" - squirrel "gopkg.in/Masterminds/squirrel.v1" ) type ( diff --git a/system/repository/role.go b/system/repository/role.go index f2689c87e..a363c1cba 100644 --- a/system/repository/role.go +++ b/system/repository/role.go @@ -4,8 +4,8 @@ import ( "context" "time" + "github.com/Masterminds/squirrel" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/pkg/rh" "github.com/cortezaproject/corteza-server/system/types" diff --git a/system/repository/user.go b/system/repository/user.go index b1fa5acec..748ef1a0d 100644 --- a/system/repository/user.go +++ b/system/repository/user.go @@ -5,8 +5,8 @@ import ( "io" "time" + "github.com/Masterminds/squirrel" "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" "github.com/cortezaproject/corteza-server/pkg/permissions" "github.com/cortezaproject/corteza-server/pkg/rh" diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/.gitignore b/vendor/gopkg.in/Masterminds/squirrel.v1/.gitignore deleted file mode 100644 index 4a0699f0b..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/.gitignore +++ /dev/null @@ -1 +0,0 @@ -squirrel.test \ No newline at end of file diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/.travis.yml b/vendor/gopkg.in/Masterminds/squirrel.v1/.travis.yml deleted file mode 100644 index 06ee48eee..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/.travis.yml +++ /dev/null @@ -1,34 +0,0 @@ -language: go - -go: - - 1.8.x - - 1.9.x - - 1.10.x - - 1.11.x - - tip - -services: - - mysql - - postgresql - -# Setting sudo access to false will let Travis CI use containers rather than -# VMs to run the tests. For more details see: -# - http://docs.travis-ci.com/user/workers/container-based-infrastructure/ -# - http://docs.travis-ci.com/user/workers/standard-infrastructure/ -sudo: false - -install: - - go get -t -tags integration - - go install github.com/mattn/go-sqlite3 # Precompile so test timing is accurate - -before_script: - - mysql -e 'CREATE DATABASE squirrel;' - - psql -c 'CREATE DATABASE squirrel;' -U postgres - -script: - - go test -tags integration -args -driver sqlite3 - - go test -tags integration -args -driver mysql -dataSource travis@/squirrel - - go test -tags integration -args -driver postgres -dataSource 'postgres://postgres@localhost/squirrel?sslmode=disable' - -notifications: - irc: "irc.freenode.net#masterminds" diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/LICENSE.txt b/vendor/gopkg.in/Masterminds/squirrel.v1/LICENSE.txt deleted file mode 100644 index 74c20a2b9..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/LICENSE.txt +++ /dev/null @@ -1,23 +0,0 @@ -Squirrel -The Masterminds -Copyright (C) 2014-2015, Lann Martin -Copyright (C) 2015-2016, Google -Copyright (C) 2015, Matt Farina and Matt Butcher - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/README.md b/vendor/gopkg.in/Masterminds/squirrel.v1/README.md deleted file mode 100644 index 6ea9747c5..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/README.md +++ /dev/null @@ -1,146 +0,0 @@ -# Squirrel - fluent SQL generator for Go - -```go -import "gopkg.in/Masterminds/squirrel.v1" -``` -or if you prefer using `master` (which may be arbitrarily ahead of or behind `v1`): - -**NOTE:** as of Go 1.6, `go get` correctly clones the Github default branch (which is `v1` in this repo). -```go -import "github.com/Masterminds/squirrel" -``` - -[![GoDoc](https://godoc.org/github.com/Masterminds/squirrel?status.png)](https://godoc.org/github.com/Masterminds/squirrel) -[![Build Status](https://travis-ci.org/Masterminds/squirrel.svg?branch=v1)](https://travis-ci.org/Masterminds/squirrel) - -_**Note:** This project has moved from `github.com/lann/squirrel` to -`github.com/Masterminds/squirrel`. Lann remains the architect of the -project, but we're helping him curate. - -**Squirrel is not an ORM.** For an application of Squirrel, check out -[structable, a table-struct mapper](https://github.com/Masterminds/structable) - - -Squirrel helps you build SQL queries from composable parts: - -```go -import sq "github.com/Masterminds/squirrel" - -users := sq.Select("*").From("users").Join("emails USING (email_id)") - -active := users.Where(sq.Eq{"deleted_at": nil}) - -sql, args, err := active.ToSql() - -sql == "SELECT * FROM users JOIN emails USING (email_id) WHERE deleted_at IS NULL" -``` - -```go -sql, args, err := sq. - Insert("users").Columns("name", "age"). - Values("moe", 13).Values("larry", sq.Expr("? + 5", 12)). - ToSql() - -sql == "INSERT INTO users (name,age) VALUES (?,?),(?,? + 5)" -``` - -Squirrel can also execute queries directly: - -```go -stooges := users.Where(sq.Eq{"username": []string{"moe", "larry", "curly", "shemp"}}) -three_stooges := stooges.Limit(3) -rows, err := three_stooges.RunWith(db).Query() - -// Behaves like: -rows, err := db.Query("SELECT * FROM users WHERE username IN (?,?,?,?) LIMIT 3", - "moe", "larry", "curly", "shemp") -``` - -Squirrel makes conditional query building a breeze: - -```go -if len(q) > 0 { - users = users.Where("name LIKE ?", fmt.Sprint("%", q, "%")) -} -``` - -Squirrel wants to make your life easier: - -```go -// StmtCache caches Prepared Stmts for you -dbCache := sq.NewStmtCacher(db) - -// StatementBuilder keeps your syntax neat -mydb := sq.StatementBuilder.RunWith(dbCache) -select_users := mydb.Select("*").From("users") -``` - -Squirrel loves PostgreSQL: - -```go -psql := sq.StatementBuilder.PlaceholderFormat(sq.Dollar) - -// You use question marks for placeholders... -sql, _, _ := psql.Select("*").From("elephants").Where("name IN (?,?)", "Dumbo", "Verna").ToSql() - -/// ...squirrel replaces them using PlaceholderFormat. -sql == "SELECT * FROM elephants WHERE name IN ($1,$2)" - - -/// You can retrieve id ... -query := sq.Insert("nodes"). - Columns("uuid", "type", "data"). - Values(node.Uuid, node.Type, node.Data). - Suffix("RETURNING \"id\""). - RunWith(m.db). - PlaceholderFormat(sq.Dollar) - -query.QueryRow().Scan(&node.id) -``` - -You can escape question mask by inserting two question marks: - -```sql -SELECT * FROM nodes WHERE meta->'format' ??| array[?,?] -``` - -will generate with the Dollar Placeholder: - -```sql -SELECT * FROM nodes WHERE meta->'format' ?| array[$1,$2] -``` - -## FAQ - -* **How can I build an IN query on composite keys / tuples, e.g. `WHERE (col1, col2) IN ((1,2),(3,4))`? ([#104](https://github.com/Masterminds/squirrel/issues/104))** - - Squirrel does not explicitly support tuples, but you can get the same effect with e.g.: - - ```go - sq.Or{ - sq.Eq{"col1": 1, "col2": 2}, - sq.Eq{"col1": 3, "col2": 4}} - ``` - - ```sql - WHERE (col1 = 1 AND col2 = 2) OR (col1 = 3 AND col2 = 4) - ``` - - (which should produce the same query plan as the tuple version) - -* **Why doesn't `Eq{"mynumber": []uint8{1,2,3}}` turn into an `IN` query? ([#114](https://github.com/Masterminds/squirrel/issues/114))** - - Values of type `[]byte` are handled specially by `database/sql`. In Go, [`byte` is just an alias of `uint8`](https://golang.org/pkg/builtin/#byte), so there is no way to distinguish `[]uint8` from `[]byte`. - -* **Some features are poorly documented!** - - This isn't a frequent complaints section! - -* **Some features are poorly documented?** - - Yes. The tests should be considered a part of the documentation; take a look at those for ideas on how to express more complex queries. - -## License - -Squirrel is released under the -[MIT License](http://www.opensource.org/licenses/MIT). diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/case.go b/vendor/gopkg.in/Masterminds/squirrel.v1/case.go deleted file mode 100644 index 2eb69dd5c..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/case.go +++ /dev/null @@ -1,118 +0,0 @@ -package squirrel - -import ( - "bytes" - "errors" - - "github.com/lann/builder" -) - -func init() { - builder.Register(CaseBuilder{}, caseData{}) -} - -// sqlizerBuffer is a helper that allows to write many Sqlizers one by one -// without constant checks for errors that may come from Sqlizer -type sqlizerBuffer struct { - bytes.Buffer - args []interface{} - err error -} - -// WriteSql converts Sqlizer to SQL strings and writes it to buffer -func (b *sqlizerBuffer) WriteSql(item Sqlizer) { - if b.err != nil { - return - } - - var str string - var args []interface{} - str, args, b.err = item.ToSql() - - if b.err != nil { - return - } - - b.WriteString(str) - b.WriteByte(' ') - b.args = append(b.args, args...) -} - -func (b *sqlizerBuffer) ToSql() (string, []interface{}, error) { - return b.String(), b.args, b.err -} - -// whenPart is a helper structure to describe SQLs "WHEN ... THEN ..." expression -type whenPart struct { - when Sqlizer - then Sqlizer -} - -func newWhenPart(when interface{}, then interface{}) whenPart { - return whenPart{newPart(when), newPart(then)} -} - -// caseData holds all the data required to build a CASE SQL construct -type caseData struct { - What Sqlizer - WhenParts []whenPart - Else Sqlizer -} - -// ToSql implements Sqlizer -func (d *caseData) ToSql() (sqlStr string, args []interface{}, err error) { - if len(d.WhenParts) == 0 { - err = errors.New("case expression must contain at lease one WHEN clause") - - return - } - - sql := sqlizerBuffer{} - - sql.WriteString("CASE ") - if d.What != nil { - sql.WriteSql(d.What) - } - - for _, p := range d.WhenParts { - sql.WriteString("WHEN ") - sql.WriteSql(p.when) - sql.WriteString("THEN ") - sql.WriteSql(p.then) - } - - if d.Else != nil { - sql.WriteString("ELSE ") - sql.WriteSql(d.Else) - } - - sql.WriteString("END") - - return sql.ToSql() -} - -// CaseBuilder builds SQL CASE construct which could be used as parts of queries. -type CaseBuilder builder.Builder - -// ToSql builds the query into a SQL string and bound args. -func (b CaseBuilder) ToSql() (string, []interface{}, error) { - data := builder.GetStruct(b).(caseData) - return data.ToSql() -} - -// what sets optional value for CASE construct "CASE [value] ..." -func (b CaseBuilder) what(expr interface{}) CaseBuilder { - return builder.Set(b, "What", newPart(expr)).(CaseBuilder) -} - -// When adds "WHEN ... THEN ..." part to CASE construct -func (b CaseBuilder) When(when interface{}, then interface{}) CaseBuilder { - // TODO: performance hint: replace slice of WhenPart with just slice of parts - // where even indices of the slice belong to "when"s and odd indices belong to "then"s - return builder.Append(b, "WhenParts", newWhenPart(when, then)).(CaseBuilder) -} - -// What sets optional "ELSE ..." part for CASE construct -func (b CaseBuilder) Else(expr interface{}) CaseBuilder { - return builder.Set(b, "Else", newPart(expr)).(CaseBuilder) -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/delete.go b/vendor/gopkg.in/Masterminds/squirrel.v1/delete.go deleted file mode 100644 index 41aebbbe5..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/delete.go +++ /dev/null @@ -1,164 +0,0 @@ -package squirrel - -import ( - "bytes" - "database/sql" - "fmt" - "strings" - - "github.com/lann/builder" -) - -type deleteData struct { - PlaceholderFormat PlaceholderFormat - RunWith BaseRunner - Prefixes exprs - From string - WhereParts []Sqlizer - OrderBys []string - Limit string - Offset string - Suffixes exprs -} - -func (d *deleteData) Exec() (sql.Result, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - return ExecWith(d.RunWith, d) -} - -func (d *deleteData) ToSql() (sqlStr string, args []interface{}, err error) { - if len(d.From) == 0 { - err = fmt.Errorf("delete statements must specify a From table") - return - } - - sql := &bytes.Buffer{} - - if len(d.Prefixes) > 0 { - args, _ = d.Prefixes.AppendToSql(sql, " ", args) - sql.WriteString(" ") - } - - sql.WriteString("DELETE FROM ") - sql.WriteString(d.From) - - if len(d.WhereParts) > 0 { - sql.WriteString(" WHERE ") - args, err = appendToSql(d.WhereParts, sql, " AND ", args) - if err != nil { - return - } - } - - if len(d.OrderBys) > 0 { - sql.WriteString(" ORDER BY ") - sql.WriteString(strings.Join(d.OrderBys, ", ")) - } - - if len(d.Limit) > 0 { - sql.WriteString(" LIMIT ") - sql.WriteString(d.Limit) - } - - if len(d.Offset) > 0 { - sql.WriteString(" OFFSET ") - sql.WriteString(d.Offset) - } - - if len(d.Suffixes) > 0 { - sql.WriteString(" ") - args, _ = d.Suffixes.AppendToSql(sql, " ", args) - } - - sqlStr, err = d.PlaceholderFormat.ReplacePlaceholders(sql.String()) - return -} - -// Builder - -// DeleteBuilder builds SQL DELETE statements. -type DeleteBuilder builder.Builder - -func init() { - builder.Register(DeleteBuilder{}, deleteData{}) -} - -// Format methods - -// PlaceholderFormat sets PlaceholderFormat (e.g. Question or Dollar) for the -// query. -func (b DeleteBuilder) PlaceholderFormat(f PlaceholderFormat) DeleteBuilder { - return builder.Set(b, "PlaceholderFormat", f).(DeleteBuilder) -} - -// Runner methods - -// RunWith sets a Runner (like database/sql.DB) to be used with e.g. Exec. -func (b DeleteBuilder) RunWith(runner BaseRunner) DeleteBuilder { - return setRunWith(b, runner).(DeleteBuilder) -} - -// Exec builds and Execs the query with the Runner set by RunWith. -func (b DeleteBuilder) Exec() (sql.Result, error) { - data := builder.GetStruct(b).(deleteData) - return data.Exec() -} - -// SQL methods - -// ToSql builds the query into a SQL string and bound args. -func (b DeleteBuilder) ToSql() (string, []interface{}, error) { - data := builder.GetStruct(b).(deleteData) - return data.ToSql() -} - -// Prefix adds an expression to the beginning of the query -func (b DeleteBuilder) Prefix(sql string, args ...interface{}) DeleteBuilder { - return builder.Append(b, "Prefixes", Expr(sql, args...)).(DeleteBuilder) -} - -// From sets the table to be deleted from. -func (b DeleteBuilder) From(from string) DeleteBuilder { - return builder.Set(b, "From", from).(DeleteBuilder) -} - -// Where adds WHERE expressions to the query. -// -// See SelectBuilder.Where for more information. -func (b DeleteBuilder) Where(pred interface{}, args ...interface{}) DeleteBuilder { - return builder.Append(b, "WhereParts", newWherePart(pred, args...)).(DeleteBuilder) -} - -// OrderBy adds ORDER BY expressions to the query. -func (b DeleteBuilder) OrderBy(orderBys ...string) DeleteBuilder { - return builder.Extend(b, "OrderBys", orderBys).(DeleteBuilder) -} - -// Limit sets a LIMIT clause on the query. -func (b DeleteBuilder) Limit(limit uint64) DeleteBuilder { - return builder.Set(b, "Limit", fmt.Sprintf("%d", limit)).(DeleteBuilder) -} - -// Offset sets a OFFSET clause on the query. -func (b DeleteBuilder) Offset(offset uint64) DeleteBuilder { - return builder.Set(b, "Offset", fmt.Sprintf("%d", offset)).(DeleteBuilder) -} - -// Suffix adds an expression to the end of the query -func (b DeleteBuilder) Suffix(sql string, args ...interface{}) DeleteBuilder { - return builder.Append(b, "Suffixes", Expr(sql, args...)).(DeleteBuilder) -} - -func (b DeleteBuilder) Query() (*sql.Rows, error) { - data := builder.GetStruct(b).(deleteData) - return data.Query() -} - -func (d *deleteData) Query() (*sql.Rows, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - return QueryWith(d.RunWith, d) -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/delete_ctx.go b/vendor/gopkg.in/Masterminds/squirrel.v1/delete_ctx.go deleted file mode 100644 index ecdf7ef03..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/delete_ctx.go +++ /dev/null @@ -1,27 +0,0 @@ -// +build go1.8 - -package squirrel - -import ( - "context" - "database/sql" - - "github.com/lann/builder" -) - -func (d *deleteData) ExecContext(ctx context.Context) (sql.Result, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - ctxRunner, ok := d.RunWith.(ExecerContext) - if !ok { - return nil, NoContextSupport - } - return ExecContextWith(ctx, ctxRunner, d) -} - -// ExecContext builds and ExecContexts the query with the Runner set by RunWith. -func (b DeleteBuilder) ExecContext(ctx context.Context) (sql.Result, error) { - data := builder.GetStruct(b).(deleteData) - return data.ExecContext(ctx) -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/expr.go b/vendor/gopkg.in/Masterminds/squirrel.v1/expr.go deleted file mode 100644 index cfb752164..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/expr.go +++ /dev/null @@ -1,351 +0,0 @@ -package squirrel - -import ( - "database/sql/driver" - "fmt" - "io" - "reflect" - "sort" - "strings" -) - -const ( - // Portable true/false literals. - sqlTrue = "(1=1)" - sqlFalse = "(1=0)" -) - -type expr struct { - sql string - args []interface{} -} - -// Expr builds value expressions for InsertBuilder and UpdateBuilder. -// -// Ex: -// .Values(Expr("FROM_UNIXTIME(?)", t)) -func Expr(sql string, args ...interface{}) expr { - return expr{sql: sql, args: args} -} - -func (e expr) ToSql() (sql string, args []interface{}, err error) { - return e.sql, e.args, nil -} - -type exprs []expr - -func (es exprs) AppendToSql(w io.Writer, sep string, args []interface{}) ([]interface{}, error) { - for i, e := range es { - if i > 0 { - _, err := io.WriteString(w, sep) - if err != nil { - return nil, err - } - } - _, err := io.WriteString(w, e.sql) - if err != nil { - return nil, err - } - args = append(args, e.args...) - } - return args, nil -} - -// aliasExpr helps to alias part of SQL query generated with underlying "expr" -type aliasExpr struct { - expr Sqlizer - alias string -} - -// Alias allows to define alias for column in SelectBuilder. Useful when column is -// defined as complex expression like IF or CASE -// Ex: -// .Column(Alias(caseStmt, "case_column")) -func Alias(expr Sqlizer, alias string) aliasExpr { - return aliasExpr{expr, alias} -} - -func (e aliasExpr) ToSql() (sql string, args []interface{}, err error) { - sql, args, err = e.expr.ToSql() - if err == nil { - sql = fmt.Sprintf("(%s) AS %s", sql, e.alias) - } - return -} - -// Eq is syntactic sugar for use with Where/Having/Set methods. -// Ex: -// .Where(Eq{"id": 1}) -type Eq map[string]interface{} - -func (eq Eq) toSQL(useNotOpr bool) (sql string, args []interface{}, err error) { - if len(eq) == 0 { - // Empty Sql{} evaluates to true. - sql = sqlTrue - return - } - - var ( - exprs []string - equalOpr = "=" - inOpr = "IN" - nullOpr = "IS" - inEmptyExpr = sqlFalse - ) - - if useNotOpr { - equalOpr = "<>" - inOpr = "NOT IN" - nullOpr = "IS NOT" - inEmptyExpr = sqlTrue - } - - sortedKeys := getSortedKeys(eq) - for _, key := range sortedKeys { - var expr string - val := eq[key] - - switch v := val.(type) { - case driver.Valuer: - if val, err = v.Value(); err != nil { - return - } - } - - r := reflect.ValueOf(val) - if r.Kind() == reflect.Ptr { - if r.IsNil() { - val = nil - } else { - val = r.Elem().Interface() - } - } - - if val == nil { - expr = fmt.Sprintf("%s %s NULL", key, nullOpr) - } else { - if isListType(val) { - valVal := reflect.ValueOf(val) - if valVal.Len() == 0 { - expr = inEmptyExpr - if args == nil { - args = []interface{}{} - } - } else { - for i := 0; i < valVal.Len(); i++ { - args = append(args, valVal.Index(i).Interface()) - } - expr = fmt.Sprintf("%s %s (%s)", key, inOpr, Placeholders(valVal.Len())) - } - } else { - expr = fmt.Sprintf("%s %s ?", key, equalOpr) - args = append(args, val) - } - } - exprs = append(exprs, expr) - } - sql = strings.Join(exprs, " AND ") - return -} - -func (eq Eq) ToSql() (sql string, args []interface{}, err error) { - return eq.toSQL(false) -} - -// NotEq is syntactic sugar for use with Where/Having/Set methods. -// Ex: -// .Where(NotEq{"id": 1}) == "id <> 1" -type NotEq Eq - -func (neq NotEq) ToSql() (sql string, args []interface{}, err error) { - return Eq(neq).toSQL(true) -} - -// Like is syntactic sugar for use with LIKE conditions. -// Ex: -// .Where(Like{"name": "%irrel"}) -type Like map[string]interface{} - -func (lk Like) toSql(opposite bool) (sql string, args []interface{}, err error) { - var ( - exprs []string - opr = "LIKE" - ) - - if opposite { - opr = "NOT LIKE" - } - - for key, val := range lk { - expr := "" - - switch v := val.(type) { - case driver.Valuer: - if val, err = v.Value(); err != nil { - return - } - } - - if val == nil { - err = fmt.Errorf("cannot use null with like operators") - return - } else { - if isListType(val) { - err = fmt.Errorf("cannot use array or slice with like operators") - return - } else { - expr = fmt.Sprintf("%s %s ?", key, opr) - args = append(args, val) - } - } - exprs = append(exprs, expr) - } - sql = strings.Join(exprs, " AND ") - return -} - -func (lk Like) ToSql() (sql string, args []interface{}, err error) { - return lk.toSql(false) -} - -// NotLike is syntactic sugar for use with LIKE conditions. -// Ex: -// .Where(NotLike{"name": "%irrel"}) -type NotLike Like - -func (nlk NotLike) ToSql() (sql string, args []interface{}, err error) { - return Like(nlk).toSql(true) -} - -// Lt is syntactic sugar for use with Where/Having/Set methods. -// Ex: -// .Where(Lt{"id": 1}) -type Lt map[string]interface{} - -func (lt Lt) toSql(opposite, orEq bool) (sql string, args []interface{}, err error) { - var ( - exprs []string - opr = "<" - ) - - if opposite { - opr = ">" - } - - if orEq { - opr = fmt.Sprintf("%s%s", opr, "=") - } - - sortedKeys := getSortedKeys(lt) - for _, key := range sortedKeys { - var expr string - val := lt[key] - - switch v := val.(type) { - case driver.Valuer: - if val, err = v.Value(); err != nil { - return - } - } - - if val == nil { - err = fmt.Errorf("cannot use null with less than or greater than operators") - return - } - if isListType(val) { - err = fmt.Errorf("cannot use array or slice with less than or greater than operators") - return - } - expr = fmt.Sprintf("%s %s ?", key, opr) - args = append(args, val) - - exprs = append(exprs, expr) - } - sql = strings.Join(exprs, " AND ") - return -} - -func (lt Lt) ToSql() (sql string, args []interface{}, err error) { - return lt.toSql(false, false) -} - -// LtOrEq is syntactic sugar for use with Where/Having/Set methods. -// Ex: -// .Where(LtOrEq{"id": 1}) == "id <= 1" -type LtOrEq Lt - -func (ltOrEq LtOrEq) ToSql() (sql string, args []interface{}, err error) { - return Lt(ltOrEq).toSql(false, true) -} - -// Gt is syntactic sugar for use with Where/Having/Set methods. -// Ex: -// .Where(Gt{"id": 1}) == "id > 1" -type Gt Lt - -func (gt Gt) ToSql() (sql string, args []interface{}, err error) { - return Lt(gt).toSql(true, false) -} - -// GtOrEq is syntactic sugar for use with Where/Having/Set methods. -// Ex: -// .Where(GtOrEq{"id": 1}) == "id >= 1" -type GtOrEq Lt - -func (gtOrEq GtOrEq) ToSql() (sql string, args []interface{}, err error) { - return Lt(gtOrEq).toSql(true, true) -} - -type conj []Sqlizer - -func (c conj) join(sep, defaultExpr string) (sql string, args []interface{}, err error) { - if len(c) == 0 { - return defaultExpr, []interface{}{}, nil - } - var sqlParts []string - for _, sqlizer := range c { - partSQL, partArgs, err := sqlizer.ToSql() - if err != nil { - return "", nil, err - } - if partSQL != "" { - sqlParts = append(sqlParts, partSQL) - args = append(args, partArgs...) - } - } - if len(sqlParts) > 0 { - sql = fmt.Sprintf("(%s)", strings.Join(sqlParts, sep)) - } - return -} - -// And conjunction Sqlizers -type And conj - -func (a And) ToSql() (string, []interface{}, error) { - return conj(a).join(" AND ", sqlTrue) -} - -// Or conjunction Sqlizers -type Or conj - -func (o Or) ToSql() (string, []interface{}, error) { - return conj(o).join(" OR ", sqlFalse) -} - -func getSortedKeys(exp map[string]interface{}) []string { - sortedKeys := make([]string, 0, len(exp)) - for k := range exp { - sortedKeys = append(sortedKeys, k) - } - sort.Strings(sortedKeys) - return sortedKeys -} - -func isListType(val interface{}) bool { - if driver.IsValue(val) { - return false - } - valVal := reflect.ValueOf(val) - return valVal.Kind() == reflect.Array || valVal.Kind() == reflect.Slice -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/go.mod b/vendor/gopkg.in/Masterminds/squirrel.v1/go.mod deleted file mode 100644 index ba46589a6..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module github.com/Masterminds/squirrel - -require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 - github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/stretchr/testify v1.2.2 -) diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/go.sum b/vendor/gopkg.in/Masterminds/squirrel.v1/go.sum deleted file mode 100644 index a92f768e6..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/go.sum +++ /dev/null @@ -1,10 +0,0 @@ -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw= -github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= -github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= -github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/insert.go b/vendor/gopkg.in/Masterminds/squirrel.v1/insert.go deleted file mode 100644 index becf81e40..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/insert.go +++ /dev/null @@ -1,258 +0,0 @@ -package squirrel - -import ( - "bytes" - "database/sql" - "errors" - "fmt" - "io" - "sort" - "strings" - - "github.com/lann/builder" -) - -type insertData struct { - PlaceholderFormat PlaceholderFormat - RunWith BaseRunner - Prefixes exprs - Options []string - Into string - Columns []string - Values [][]interface{} - Suffixes exprs - Select *SelectBuilder -} - -func (d *insertData) Exec() (sql.Result, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - return ExecWith(d.RunWith, d) -} - -func (d *insertData) Query() (*sql.Rows, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - return QueryWith(d.RunWith, d) -} - -func (d *insertData) QueryRow() RowScanner { - if d.RunWith == nil { - return &Row{err: RunnerNotSet} - } - queryRower, ok := d.RunWith.(QueryRower) - if !ok { - return &Row{err: RunnerNotQueryRunner} - } - return QueryRowWith(queryRower, d) -} - -func (d *insertData) ToSql() (sqlStr string, args []interface{}, err error) { - if len(d.Into) == 0 { - err = errors.New("insert statements must specify a table") - return - } - if len(d.Values) == 0 && d.Select == nil { - err = errors.New("insert statements must have at least one set of values or select clause") - return - } - - sql := &bytes.Buffer{} - - if len(d.Prefixes) > 0 { - args, _ = d.Prefixes.AppendToSql(sql, " ", args) - sql.WriteString(" ") - } - - sql.WriteString("INSERT ") - - if len(d.Options) > 0 { - sql.WriteString(strings.Join(d.Options, " ")) - sql.WriteString(" ") - } - - sql.WriteString("INTO ") - sql.WriteString(d.Into) - sql.WriteString(" ") - - if len(d.Columns) > 0 { - sql.WriteString("(") - sql.WriteString(strings.Join(d.Columns, ",")) - sql.WriteString(") ") - } - - if d.Select != nil { - args, err = d.appendSelectToSQL(sql, args) - } else { - args, err = d.appendValuesToSQL(sql, args) - } - if err != nil { - return - } - - if len(d.Suffixes) > 0 { - sql.WriteString(" ") - args, _ = d.Suffixes.AppendToSql(sql, " ", args) - } - - sqlStr, err = d.PlaceholderFormat.ReplacePlaceholders(sql.String()) - return -} - -func (d *insertData) appendValuesToSQL(w io.Writer, args []interface{}) ([]interface{}, error) { - if len(d.Values) == 0 { - return args, errors.New("values for insert statements are not set") - } - - io.WriteString(w, "VALUES ") - - valuesStrings := make([]string, len(d.Values)) - for r, row := range d.Values { - valueStrings := make([]string, len(row)) - for v, val := range row { - e, isExpr := val.(expr) - if isExpr { - valueStrings[v] = e.sql - args = append(args, e.args...) - } else { - valueStrings[v] = "?" - args = append(args, val) - } - } - valuesStrings[r] = fmt.Sprintf("(%s)", strings.Join(valueStrings, ",")) - } - - io.WriteString(w, strings.Join(valuesStrings, ",")) - - return args, nil -} - -func (d *insertData) appendSelectToSQL(w io.Writer, args []interface{}) ([]interface{}, error) { - if d.Select == nil { - return args, errors.New("select clause for insert statements are not set") - } - - selectClause, sArgs, err := d.Select.ToSql() - if err != nil { - return args, err - } - - io.WriteString(w, selectClause) - args = append(args, sArgs...) - - return args, nil -} - -// Builder - -// InsertBuilder builds SQL INSERT statements. -type InsertBuilder builder.Builder - -func init() { - builder.Register(InsertBuilder{}, insertData{}) -} - -// Format methods - -// PlaceholderFormat sets PlaceholderFormat (e.g. Question or Dollar) for the -// query. -func (b InsertBuilder) PlaceholderFormat(f PlaceholderFormat) InsertBuilder { - return builder.Set(b, "PlaceholderFormat", f).(InsertBuilder) -} - -// Runner methods - -// RunWith sets a Runner (like database/sql.DB) to be used with e.g. Exec. -func (b InsertBuilder) RunWith(runner BaseRunner) InsertBuilder { - return setRunWith(b, runner).(InsertBuilder) -} - -// Exec builds and Execs the query with the Runner set by RunWith. -func (b InsertBuilder) Exec() (sql.Result, error) { - data := builder.GetStruct(b).(insertData) - return data.Exec() -} - -// Query builds and Querys the query with the Runner set by RunWith. -func (b InsertBuilder) Query() (*sql.Rows, error) { - data := builder.GetStruct(b).(insertData) - return data.Query() -} - -// QueryRow builds and QueryRows the query with the Runner set by RunWith. -func (b InsertBuilder) QueryRow() RowScanner { - data := builder.GetStruct(b).(insertData) - return data.QueryRow() -} - -// Scan is a shortcut for QueryRow().Scan. -func (b InsertBuilder) Scan(dest ...interface{}) error { - return b.QueryRow().Scan(dest...) -} - -// SQL methods - -// ToSql builds the query into a SQL string and bound args. -func (b InsertBuilder) ToSql() (string, []interface{}, error) { - data := builder.GetStruct(b).(insertData) - return data.ToSql() -} - -// Prefix adds an expression to the beginning of the query -func (b InsertBuilder) Prefix(sql string, args ...interface{}) InsertBuilder { - return builder.Append(b, "Prefixes", Expr(sql, args...)).(InsertBuilder) -} - -// Options adds keyword options before the INTO clause of the query. -func (b InsertBuilder) Options(options ...string) InsertBuilder { - return builder.Extend(b, "Options", options).(InsertBuilder) -} - -// Into sets the INTO clause of the query. -func (b InsertBuilder) Into(from string) InsertBuilder { - return builder.Set(b, "Into", from).(InsertBuilder) -} - -// Columns adds insert columns to the query. -func (b InsertBuilder) Columns(columns ...string) InsertBuilder { - return builder.Extend(b, "Columns", columns).(InsertBuilder) -} - -// Values adds a single row's values to the query. -func (b InsertBuilder) Values(values ...interface{}) InsertBuilder { - return builder.Append(b, "Values", values).(InsertBuilder) -} - -// Suffix adds an expression to the end of the query -func (b InsertBuilder) Suffix(sql string, args ...interface{}) InsertBuilder { - return builder.Append(b, "Suffixes", Expr(sql, args...)).(InsertBuilder) -} - -// SetMap set columns and values for insert builder from a map of column name and value -// note that it will reset all previous columns and values was set if any -func (b InsertBuilder) SetMap(clauses map[string]interface{}) InsertBuilder { - // Keep the columns in a consistent order by sorting the column key string. - cols := make([]string, 0, len(clauses)) - for col := range clauses { - cols = append(cols, col) - } - sort.Strings(cols) - - vals := make([]interface{}, 0, len(clauses)) - for _, col := range cols { - vals = append(vals, clauses[col]) - } - - b = builder.Set(b, "Columns", cols).(InsertBuilder) - b = builder.Set(b, "Values", [][]interface{}{vals}).(InsertBuilder) - - return b -} - -// Select set Select clause for insert query -// If Values and Select are used, then Select has higher priority -func (b InsertBuilder) Select(sb SelectBuilder) InsertBuilder { - return builder.Set(b, "Select", &sb).(InsertBuilder) -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/insert_ctx.go b/vendor/gopkg.in/Masterminds/squirrel.v1/insert_ctx.go deleted file mode 100644 index 4541c2fed..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/insert_ctx.go +++ /dev/null @@ -1,69 +0,0 @@ -// +build go1.8 - -package squirrel - -import ( - "context" - "database/sql" - - "github.com/lann/builder" -) - -func (d *insertData) ExecContext(ctx context.Context) (sql.Result, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - ctxRunner, ok := d.RunWith.(ExecerContext) - if !ok { - return nil, NoContextSupport - } - return ExecContextWith(ctx, ctxRunner, d) -} - -func (d *insertData) QueryContext(ctx context.Context) (*sql.Rows, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - ctxRunner, ok := d.RunWith.(QueryerContext) - if !ok { - return nil, NoContextSupport - } - return QueryContextWith(ctx, ctxRunner, d) -} - -func (d *insertData) QueryRowContext(ctx context.Context) RowScanner { - if d.RunWith == nil { - return &Row{err: RunnerNotSet} - } - queryRower, ok := d.RunWith.(QueryRowerContext) - if !ok { - if _, ok := d.RunWith.(QueryerContext); !ok { - return &Row{err: RunnerNotQueryRunner} - } - return &Row{err: NoContextSupport} - } - return QueryRowContextWith(ctx, queryRower, d) -} - -// ExecContext builds and ExecContexts the query with the Runner set by RunWith. -func (b InsertBuilder) ExecContext(ctx context.Context) (sql.Result, error) { - data := builder.GetStruct(b).(insertData) - return data.ExecContext(ctx) -} - -// QueryContext builds and QueryContexts the query with the Runner set by RunWith. -func (b InsertBuilder) QueryContext(ctx context.Context) (*sql.Rows, error) { - data := builder.GetStruct(b).(insertData) - return data.QueryContext(ctx) -} - -// QueryRowContext builds and QueryRowContexts the query with the Runner set by RunWith. -func (b InsertBuilder) QueryRowContext(ctx context.Context) RowScanner { - data := builder.GetStruct(b).(insertData) - return data.QueryRowContext(ctx) -} - -// ScanContext is a shortcut for QueryRowContext().Scan. -func (b InsertBuilder) ScanContext(ctx context.Context, dest ...interface{}) error { - return b.QueryRowContext(ctx).Scan(dest...) -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/part.go b/vendor/gopkg.in/Masterminds/squirrel.v1/part.go deleted file mode 100644 index 2926d0315..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/part.go +++ /dev/null @@ -1,55 +0,0 @@ -package squirrel - -import ( - "fmt" - "io" -) - -type part struct { - pred interface{} - args []interface{} -} - -func newPart(pred interface{}, args ...interface{}) Sqlizer { - return &part{pred, args} -} - -func (p part) ToSql() (sql string, args []interface{}, err error) { - switch pred := p.pred.(type) { - case nil: - // no-op - case Sqlizer: - sql, args, err = pred.ToSql() - case string: - sql = pred - args = p.args - default: - err = fmt.Errorf("expected string or Sqlizer, not %T", pred) - } - return -} - -func appendToSql(parts []Sqlizer, w io.Writer, sep string, args []interface{}) ([]interface{}, error) { - for i, p := range parts { - partSql, partArgs, err := p.ToSql() - if err != nil { - return nil, err - } else if len(partSql) == 0 { - continue - } - - if i > 0 { - _, err := io.WriteString(w, sep) - if err != nil { - return nil, err - } - } - - _, err = io.WriteString(w, partSql) - if err != nil { - return nil, err - } - args = append(args, partArgs...) - } - return args, nil -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/placeholder.go b/vendor/gopkg.in/Masterminds/squirrel.v1/placeholder.go deleted file mode 100644 index a01618239..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/placeholder.go +++ /dev/null @@ -1,84 +0,0 @@ -package squirrel - -import ( - "bytes" - "fmt" - "strings" -) - -// PlaceholderFormat is the interface that wraps the ReplacePlaceholders method. -// -// ReplacePlaceholders takes a SQL statement and replaces each question mark -// placeholder with a (possibly different) SQL placeholder. -type PlaceholderFormat interface { - ReplacePlaceholders(sql string) (string, error) -} - -var ( - // Question is a PlaceholderFormat instance that leaves placeholders as - // question marks. - Question = questionFormat{} - - // Dollar is a PlaceholderFormat instance that replaces placeholders with - // dollar-prefixed positional placeholders (e.g. $1, $2, $3). - Dollar = dollarFormat{} - - // Colon is a PlaceholderFormat instance that replaces placeholders with - // colon-prefixed positional placeholders (e.g. :1, :2, :3). - Colon = colonFormat{} -) - -type questionFormat struct{} - -func (questionFormat) ReplacePlaceholders(sql string) (string, error) { - return sql, nil -} - -type dollarFormat struct{} - -func (dollarFormat) ReplacePlaceholders(sql string) (string, error) { - return replacePositionalPlaceholders(sql, "$") -} - -type colonFormat struct{} - -func (colonFormat) ReplacePlaceholders(sql string) (string, error) { - return replacePositionalPlaceholders(sql, ":") -} - -// Placeholders returns a string with count ? placeholders joined with commas. -func Placeholders(count int) string { - if count < 1 { - return "" - } - - return strings.Repeat(",?", count)[1:] -} - -func replacePositionalPlaceholders(sql, prefix string) (string, error) { - buf := &bytes.Buffer{} - i := 0 - for { - p := strings.Index(sql, "?") - if p == -1 { - break - } - - if len(sql[p:]) > 1 && sql[p:p+2] == "??" { // escape ?? => ? - buf.WriteString(sql[:p]) - buf.WriteString("?") - if len(sql[p:]) == 1 { - break - } - sql = sql[p+2:] - } else { - i++ - buf.WriteString(sql[:p]) - fmt.Fprintf(buf, "%s%d", prefix, i) - sql = sql[p+1:] - } - } - - buf.WriteString(sql) - return buf.String(), nil -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/row.go b/vendor/gopkg.in/Masterminds/squirrel.v1/row.go deleted file mode 100644 index 74ffda92b..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/row.go +++ /dev/null @@ -1,22 +0,0 @@ -package squirrel - -// RowScanner is the interface that wraps the Scan method. -// -// Scan behaves like database/sql.Row.Scan. -type RowScanner interface { - Scan(...interface{}) error -} - -// Row wraps database/sql.Row to let squirrel return new errors on Scan. -type Row struct { - RowScanner - err error -} - -// Scan returns Row.err or calls RowScanner.Scan. -func (r *Row) Scan(dest ...interface{}) error { - if r.err != nil { - return r.err - } - return r.RowScanner.Scan(dest...) -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/select.go b/vendor/gopkg.in/Masterminds/squirrel.v1/select.go deleted file mode 100644 index 0ec4dc6ba..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/select.go +++ /dev/null @@ -1,348 +0,0 @@ -package squirrel - -import ( - "bytes" - "database/sql" - "fmt" - "strings" - - "github.com/lann/builder" -) - -type selectData struct { - PlaceholderFormat PlaceholderFormat - RunWith BaseRunner - Prefixes exprs - Options []string - Columns []Sqlizer - From Sqlizer - Joins []Sqlizer - WhereParts []Sqlizer - GroupBys []string - HavingParts []Sqlizer - OrderBys []string - Limit string - Offset string - Suffixes exprs -} - -func (d *selectData) Exec() (sql.Result, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - return ExecWith(d.RunWith, d) -} - -func (d *selectData) Query() (*sql.Rows, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - return QueryWith(d.RunWith, d) -} - -func (d *selectData) QueryRow() RowScanner { - if d.RunWith == nil { - return &Row{err: RunnerNotSet} - } - queryRower, ok := d.RunWith.(QueryRower) - if !ok { - return &Row{err: RunnerNotQueryRunner} - } - return QueryRowWith(queryRower, d) -} - -func (d *selectData) ToSql() (sqlStr string, args []interface{}, err error) { - sqlStr, args, err = d.toSql() - if err != nil { - return - } - - sqlStr, err = d.PlaceholderFormat.ReplacePlaceholders(sqlStr) - return -} - -func (d *selectData) toSqlRaw() (sqlStr string, args []interface{}, err error) { - return d.toSql() -} - -func (d *selectData) toSql() (sqlStr string, args []interface{}, err error) { - if len(d.Columns) == 0 { - err = fmt.Errorf("select statements must have at least one result column") - return - } - - sql := &bytes.Buffer{} - - if len(d.Prefixes) > 0 { - args, _ = d.Prefixes.AppendToSql(sql, " ", args) - sql.WriteString(" ") - } - - sql.WriteString("SELECT ") - - if len(d.Options) > 0 { - sql.WriteString(strings.Join(d.Options, " ")) - sql.WriteString(" ") - } - - if len(d.Columns) > 0 { - args, err = appendToSql(d.Columns, sql, ", ", args) - if err != nil { - return - } - } - - if d.From != nil { - sql.WriteString(" FROM ") - args, err = appendToSql([]Sqlizer{d.From}, sql, "", args) - if err != nil { - return - } - } - - if len(d.Joins) > 0 { - sql.WriteString(" ") - args, err = appendToSql(d.Joins, sql, " ", args) - if err != nil { - return - } - } - - if len(d.WhereParts) > 0 { - sql.WriteString(" WHERE ") - args, err = appendToSql(d.WhereParts, sql, " AND ", args) - if err != nil { - return - } - } - - if len(d.GroupBys) > 0 { - sql.WriteString(" GROUP BY ") - sql.WriteString(strings.Join(d.GroupBys, ", ")) - } - - if len(d.HavingParts) > 0 { - sql.WriteString(" HAVING ") - args, err = appendToSql(d.HavingParts, sql, " AND ", args) - if err != nil { - return - } - } - - if len(d.OrderBys) > 0 { - sql.WriteString(" ORDER BY ") - sql.WriteString(strings.Join(d.OrderBys, ", ")) - } - - if len(d.Limit) > 0 { - sql.WriteString(" LIMIT ") - sql.WriteString(d.Limit) - } - - if len(d.Offset) > 0 { - sql.WriteString(" OFFSET ") - sql.WriteString(d.Offset) - } - - if len(d.Suffixes) > 0 { - sql.WriteString(" ") - args, _ = d.Suffixes.AppendToSql(sql, " ", args) - } - - sqlStr = sql.String() - return -} - -// Builder - -// SelectBuilder builds SQL SELECT statements. -type SelectBuilder builder.Builder - -func init() { - builder.Register(SelectBuilder{}, selectData{}) -} - -// Format methods - -// PlaceholderFormat sets PlaceholderFormat (e.g. Question or Dollar) for the -// query. -func (b SelectBuilder) PlaceholderFormat(f PlaceholderFormat) SelectBuilder { - return builder.Set(b, "PlaceholderFormat", f).(SelectBuilder) -} - -// Runner methods - -// RunWith sets a Runner (like database/sql.DB) to be used with e.g. Exec. -func (b SelectBuilder) RunWith(runner BaseRunner) SelectBuilder { - return setRunWith(b, runner).(SelectBuilder) -} - -// Exec builds and Execs the query with the Runner set by RunWith. -func (b SelectBuilder) Exec() (sql.Result, error) { - data := builder.GetStruct(b).(selectData) - return data.Exec() -} - -// Query builds and Querys the query with the Runner set by RunWith. -func (b SelectBuilder) Query() (*sql.Rows, error) { - data := builder.GetStruct(b).(selectData) - return data.Query() -} - -// QueryRow builds and QueryRows the query with the Runner set by RunWith. -func (b SelectBuilder) QueryRow() RowScanner { - data := builder.GetStruct(b).(selectData) - return data.QueryRow() -} - -// Scan is a shortcut for QueryRow().Scan. -func (b SelectBuilder) Scan(dest ...interface{}) error { - return b.QueryRow().Scan(dest...) -} - -// SQL methods - -// ToSql builds the query into a SQL string and bound args. -func (b SelectBuilder) ToSql() (string, []interface{}, error) { - data := builder.GetStruct(b).(selectData) - return data.ToSql() -} - -func (b SelectBuilder) MustSql() (string, []interface{}) { - sql, args, err := b.ToSql() - if err != nil { - panic(err) - } - return sql, args -} - -func (b SelectBuilder) toSqlRaw() (string, []interface{}, error) { - data := builder.GetStruct(b).(selectData) - return data.toSqlRaw() -} - -// Prefix adds an expression to the beginning of the query -func (b SelectBuilder) Prefix(sql string, args ...interface{}) SelectBuilder { - return builder.Append(b, "Prefixes", Expr(sql, args...)).(SelectBuilder) -} - -// Distinct adds a DISTINCT clause to the query. -func (b SelectBuilder) Distinct() SelectBuilder { - return b.Options("DISTINCT") -} - -// Options adds select option to the query -func (b SelectBuilder) Options(options ...string) SelectBuilder { - return builder.Extend(b, "Options", options).(SelectBuilder) -} - -// Columns adds result columns to the query. -func (b SelectBuilder) Columns(columns ...string) SelectBuilder { - var parts []interface{} - for _, str := range columns { - parts = append(parts, newPart(str)) - } - return builder.Extend(b, "Columns", parts).(SelectBuilder) -} - -// Column adds a result column to the query. -// Unlike Columns, Column accepts args which will be bound to placeholders in -// the columns string, for example: -// Column("IF(col IN ("+squirrel.Placeholders(3)+"), 1, 0) as col", 1, 2, 3) -func (b SelectBuilder) Column(column interface{}, args ...interface{}) SelectBuilder { - return builder.Append(b, "Columns", newPart(column, args...)).(SelectBuilder) -} - -// From sets the FROM clause of the query. -func (b SelectBuilder) From(from string) SelectBuilder { - return builder.Set(b, "From", newPart(from)).(SelectBuilder) -} - -// FromSelect sets a subquery into the FROM clause of the query. -func (b SelectBuilder) FromSelect(from SelectBuilder, alias string) SelectBuilder { - return builder.Set(b, "From", Alias(from, alias)).(SelectBuilder) -} - -// JoinClause adds a join clause to the query. -func (b SelectBuilder) JoinClause(pred interface{}, args ...interface{}) SelectBuilder { - return builder.Append(b, "Joins", newPart(pred, args...)).(SelectBuilder) -} - -// Join adds a JOIN clause to the query. -func (b SelectBuilder) Join(join string, rest ...interface{}) SelectBuilder { - return b.JoinClause("JOIN "+join, rest...) -} - -// LeftJoin adds a LEFT JOIN clause to the query. -func (b SelectBuilder) LeftJoin(join string, rest ...interface{}) SelectBuilder { - return b.JoinClause("LEFT JOIN "+join, rest...) -} - -// RightJoin adds a RIGHT JOIN clause to the query. -func (b SelectBuilder) RightJoin(join string, rest ...interface{}) SelectBuilder { - return b.JoinClause("RIGHT JOIN "+join, rest...) -} - -// Where adds an expression to the WHERE clause of the query. -// -// Expressions are ANDed together in the generated SQL. -// -// Where accepts several types for its pred argument: -// -// nil OR "" - ignored. -// -// string - SQL expression. -// If the expression has SQL placeholders then a set of arguments must be passed -// as well, one for each placeholder. -// -// map[string]interface{} OR Eq - map of SQL expressions to values. Each key is -// transformed into an expression like " = ?", with the corresponding value -// bound to the placeholder. If the value is nil, the expression will be " -// IS NULL". If the value is an array or slice, the expression will be " IN -// (?,?,...)", with one placeholder for each item in the value. These expressions -// are ANDed together. -// -// Where will panic if pred isn't any of the above types. -func (b SelectBuilder) Where(pred interface{}, args ...interface{}) SelectBuilder { - if pred == nil || pred == "" { - return b - } - return builder.Append(b, "WhereParts", newWherePart(pred, args...)).(SelectBuilder) -} - -// GroupBy adds GROUP BY expressions to the query. -func (b SelectBuilder) GroupBy(groupBys ...string) SelectBuilder { - return builder.Extend(b, "GroupBys", groupBys).(SelectBuilder) -} - -// Having adds an expression to the HAVING clause of the query. -// -// See Where. -func (b SelectBuilder) Having(pred interface{}, rest ...interface{}) SelectBuilder { - return builder.Append(b, "HavingParts", newWherePart(pred, rest...)).(SelectBuilder) -} - -// OrderBy adds ORDER BY expressions to the query. -func (b SelectBuilder) OrderBy(orderBys ...string) SelectBuilder { - return builder.Extend(b, "OrderBys", orderBys).(SelectBuilder) -} - -// Limit sets a LIMIT clause on the query. -func (b SelectBuilder) Limit(limit uint64) SelectBuilder { - return builder.Set(b, "Limit", fmt.Sprintf("%d", limit)).(SelectBuilder) -} - -// Limit ALL allows to access all records with limit -func (b SelectBuilder) RemoveLimit() SelectBuilder { - return builder.Delete(b, "Limit").(SelectBuilder) -} - -// Offset sets a OFFSET clause on the query. -func (b SelectBuilder) Offset(offset uint64) SelectBuilder { - return builder.Set(b, "Offset", fmt.Sprintf("%d", offset)).(SelectBuilder) -} - -// Suffix adds an expression to the end of the query -func (b SelectBuilder) Suffix(sql string, args ...interface{}) SelectBuilder { - return builder.Append(b, "Suffixes", Expr(sql, args...)).(SelectBuilder) -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/select_ctx.go b/vendor/gopkg.in/Masterminds/squirrel.v1/select_ctx.go deleted file mode 100644 index 4c42c13f4..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/select_ctx.go +++ /dev/null @@ -1,69 +0,0 @@ -// +build go1.8 - -package squirrel - -import ( - "context" - "database/sql" - - "github.com/lann/builder" -) - -func (d *selectData) ExecContext(ctx context.Context) (sql.Result, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - ctxRunner, ok := d.RunWith.(ExecerContext) - if !ok { - return nil, NoContextSupport - } - return ExecContextWith(ctx, ctxRunner, d) -} - -func (d *selectData) QueryContext(ctx context.Context) (*sql.Rows, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - ctxRunner, ok := d.RunWith.(QueryerContext) - if !ok { - return nil, NoContextSupport - } - return QueryContextWith(ctx, ctxRunner, d) -} - -func (d *selectData) QueryRowContext(ctx context.Context) RowScanner { - if d.RunWith == nil { - return &Row{err: RunnerNotSet} - } - queryRower, ok := d.RunWith.(QueryRowerContext) - if !ok { - if _, ok := d.RunWith.(QueryerContext); !ok { - return &Row{err: RunnerNotQueryRunner} - } - return &Row{err: NoContextSupport} - } - return QueryRowContextWith(ctx, queryRower, d) -} - -// ExecContext builds and ExecContexts the query with the Runner set by RunWith. -func (b SelectBuilder) ExecContext(ctx context.Context) (sql.Result, error) { - data := builder.GetStruct(b).(selectData) - return data.ExecContext(ctx) -} - -// QueryContext builds and QueryContexts the query with the Runner set by RunWith. -func (b SelectBuilder) QueryContext(ctx context.Context) (*sql.Rows, error) { - data := builder.GetStruct(b).(selectData) - return data.QueryContext(ctx) -} - -// QueryRowContext builds and QueryRowContexts the query with the Runner set by RunWith. -func (b SelectBuilder) QueryRowContext(ctx context.Context) RowScanner { - data := builder.GetStruct(b).(selectData) - return data.QueryRowContext(ctx) -} - -// ScanContext is a shortcut for QueryRowContext().Scan. -func (b SelectBuilder) ScanContext(ctx context.Context, dest ...interface{}) error { - return b.QueryRowContext(ctx).Scan(dest...) -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/squirrel.go b/vendor/gopkg.in/Masterminds/squirrel.v1/squirrel.go deleted file mode 100644 index 3190ce7e2..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/squirrel.go +++ /dev/null @@ -1,172 +0,0 @@ -// Package squirrel provides a fluent SQL generator. -// -// See https://github.com/Masterminds/squirrel for examples. -package squirrel - -import ( - "bytes" - "context" - "database/sql" - "fmt" - "strings" - - "github.com/lann/builder" -) - -// Sqlizer is the interface that wraps the ToSql method. -// -// ToSql returns a SQL representation of the Sqlizer, along with a slice of args -// as passed to e.g. database/sql.Exec. It can also return an error. -type Sqlizer interface { - ToSql() (string, []interface{}, error) -} - -// rawSqlizer is expected to do what Sqlizer does, but without finalizing placeholders. -// This is useful for nested queries. -type rawSqlizer interface { - toSqlRaw() (string, []interface{}, error) -} - -// Execer is the interface that wraps the Exec method. -// -// Exec executes the given query as implemented by database/sql.Exec. -type Execer interface { - Exec(query string, args ...interface{}) (sql.Result, error) -} - -// Queryer is the interface that wraps the Query method. -// -// Query executes the given query as implemented by database/sql.Query. -type Queryer interface { - Query(query string, args ...interface{}) (*sql.Rows, error) -} - -// QueryRower is the interface that wraps the QueryRow method. -// -// QueryRow executes the given query as implemented by database/sql.QueryRow. -type QueryRower interface { - QueryRow(query string, args ...interface{}) RowScanner -} - -// BaseRunner groups the Execer and Queryer interfaces. -type BaseRunner interface { - Execer - Queryer -} - -// Runner groups the Execer, Queryer, and QueryRower interfaces. -type Runner interface { - Execer - Queryer - QueryRower -} - -type stdsql interface { - Query(string, ...interface{}) (*sql.Rows, error) - QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error) - QueryRow(string, ...interface{}) *sql.Row - QueryRowContext(context.Context, string, ...interface{}) *sql.Row - Exec(string, ...interface{}) (sql.Result, error) - ExecContext(context.Context, string, ...interface{}) (sql.Result, error) -} - -type stdsqlRunner struct { - stdsql -} - -func (r *stdsqlRunner) QueryRow(query string, args ...interface{}) RowScanner { - return r.stdsql.QueryRow(query, args...) -} - -func setRunWith(b interface{}, baseRunner BaseRunner) interface{} { - var runner Runner - switch r := baseRunner.(type) { - case Runner: - runner = r - case stdsql: - runner = &stdsqlRunner{r} - - } - return builder.Set(b, "RunWith", runner) -} - -// RunnerNotSet is returned by methods that need a Runner if it isn't set. -var RunnerNotSet = fmt.Errorf("cannot run; no Runner set (RunWith)") - -// RunnerNotQueryRunner is returned by QueryRow if the RunWith value doesn't implement QueryRower. -var RunnerNotQueryRunner = fmt.Errorf("cannot QueryRow; Runner is not a QueryRower") - -// ExecWith Execs the SQL returned by s with db. -func ExecWith(db Execer, s Sqlizer) (res sql.Result, err error) { - query, args, err := s.ToSql() - if err != nil { - return - } - return db.Exec(query, args...) -} - -// QueryWith Querys the SQL returned by s with db. -func QueryWith(db Queryer, s Sqlizer) (rows *sql.Rows, err error) { - query, args, err := s.ToSql() - if err != nil { - return - } - return db.Query(query, args...) -} - -// QueryRowWith QueryRows the SQL returned by s with db. -func QueryRowWith(db QueryRower, s Sqlizer) RowScanner { - query, args, err := s.ToSql() - return &Row{RowScanner: db.QueryRow(query, args...), err: err} -} - -// DebugSqlizer calls ToSql on s and shows the approximate SQL to be executed -// -// If ToSql returns an error, the result of this method will look like: -// "[ToSql error: %s]" or "[DebugSqlizer error: %s]" -// -// IMPORTANT: As its name suggests, this function should only be used for -// debugging. While the string result *might* be valid SQL, this function does -// not try very hard to ensure it. Additionally, executing the output of this -// function with any untrusted user input is certainly insecure. -func DebugSqlizer(s Sqlizer) string { - sql, args, err := s.ToSql() - if err != nil { - return fmt.Sprintf("[ToSql error: %s]", err) - } - - // TODO: dedupe this with placeholder.go - buf := &bytes.Buffer{} - i := 0 - for { - p := strings.Index(sql, "?") - if p == -1 { - break - } - if len(sql[p:]) > 1 && sql[p:p+2] == "??" { // escape ?? => ? - buf.WriteString(sql[:p]) - buf.WriteString("?") - if len(sql[p:]) == 1 { - break - } - sql = sql[p+2:] - } else { - if i+1 > len(args) { - return fmt.Sprintf( - "[DebugSqlizer error: too many placeholders in %#v for %d args]", - sql, len(args)) - } - buf.WriteString(sql[:p]) - fmt.Fprintf(buf, "'%v'", args[i]) - sql = sql[p+1:] - i++ - } - } - if i < len(args) { - return fmt.Sprintf( - "[DebugSqlizer error: not enough placeholders in %#v for %d args]", - sql, len(args)) - } - buf.WriteString(sql) - return buf.String() -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/squirrel_ctx.go b/vendor/gopkg.in/Masterminds/squirrel.v1/squirrel_ctx.go deleted file mode 100644 index 9a50067d9..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/squirrel_ctx.go +++ /dev/null @@ -1,61 +0,0 @@ -// +build go1.8 - -package squirrel - -import ( - "context" - "database/sql" - "errors" -) - -// NoContextSupport is returned if a db doesn't support Context. -var NoContextSupport = errors.New("DB does not support Context") - -// ExecerContext is the interface that wraps the ExecContext method. -// -// Exec executes the given query as implemented by database/sql.ExecContext. -type ExecerContext interface { - ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error) -} - -// QueryerContext is the interface that wraps the QueryContext method. -// -// QueryContext executes the given query as implemented by database/sql.QueryContext. -type QueryerContext interface { - QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error) -} - -// QueryRowerContext is the interface that wraps the QueryRowContext method. -// -// QueryRowContext executes the given query as implemented by database/sql.QueryRowContext. -type QueryRowerContext interface { - QueryRowContext(ctx context.Context, query string, args ...interface{}) RowScanner -} - -func (r *stdsqlRunner) QueryRowContext(ctx context.Context, query string, args ...interface{}) RowScanner { - return r.stdsql.QueryRowContext(ctx, query, args...) -} - -// ExecContextWith ExecContexts the SQL returned by s with db. -func ExecContextWith(ctx context.Context, db ExecerContext, s Sqlizer) (res sql.Result, err error) { - query, args, err := s.ToSql() - if err != nil { - return - } - return db.ExecContext(ctx, query, args...) -} - -// QueryContextWith QueryContexts the SQL returned by s with db. -func QueryContextWith(ctx context.Context, db QueryerContext, s Sqlizer) (rows *sql.Rows, err error) { - query, args, err := s.ToSql() - if err != nil { - return - } - return db.QueryContext(ctx, query, args...) -} - -// QueryRowContextWith QueryRowContexts the SQL returned by s with db. -func QueryRowContextWith(ctx context.Context, db QueryRowerContext, s Sqlizer) RowScanner { - query, args, err := s.ToSql() - return &Row{RowScanner: db.QueryRowContext(ctx, query, args...), err: err} -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/statement.go b/vendor/gopkg.in/Masterminds/squirrel.v1/statement.go deleted file mode 100644 index 275388f63..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/statement.go +++ /dev/null @@ -1,83 +0,0 @@ -package squirrel - -import "github.com/lann/builder" - -// StatementBuilderType is the type of StatementBuilder. -type StatementBuilderType builder.Builder - -// Select returns a SelectBuilder for this StatementBuilderType. -func (b StatementBuilderType) Select(columns ...string) SelectBuilder { - return SelectBuilder(b).Columns(columns...) -} - -// Insert returns a InsertBuilder for this StatementBuilderType. -func (b StatementBuilderType) Insert(into string) InsertBuilder { - return InsertBuilder(b).Into(into) -} - -// Update returns a UpdateBuilder for this StatementBuilderType. -func (b StatementBuilderType) Update(table string) UpdateBuilder { - return UpdateBuilder(b).Table(table) -} - -// Delete returns a DeleteBuilder for this StatementBuilderType. -func (b StatementBuilderType) Delete(from string) DeleteBuilder { - return DeleteBuilder(b).From(from) -} - -// PlaceholderFormat sets the PlaceholderFormat field for any child builders. -func (b StatementBuilderType) PlaceholderFormat(f PlaceholderFormat) StatementBuilderType { - return builder.Set(b, "PlaceholderFormat", f).(StatementBuilderType) -} - -// RunWith sets the RunWith field for any child builders. -func (b StatementBuilderType) RunWith(runner BaseRunner) StatementBuilderType { - return setRunWith(b, runner).(StatementBuilderType) -} - -// StatementBuilder is a parent builder for other builders, e.g. SelectBuilder. -var StatementBuilder = StatementBuilderType(builder.EmptyBuilder).PlaceholderFormat(Question) - -// Select returns a new SelectBuilder, optionally setting some result columns. -// -// See SelectBuilder.Columns. -func Select(columns ...string) SelectBuilder { - return StatementBuilder.Select(columns...) -} - -// Insert returns a new InsertBuilder with the given table name. -// -// See InsertBuilder.Into. -func Insert(into string) InsertBuilder { - return StatementBuilder.Insert(into) -} - -// Update returns a new UpdateBuilder with the given table name. -// -// See UpdateBuilder.Table. -func Update(table string) UpdateBuilder { - return StatementBuilder.Update(table) -} - -// Delete returns a new DeleteBuilder with the given table name. -// -// See DeleteBuilder.Table. -func Delete(from string) DeleteBuilder { - return StatementBuilder.Delete(from) -} - -// Case returns a new CaseBuilder -// "what" represents case value -func Case(what ...interface{}) CaseBuilder { - b := CaseBuilder(builder.EmptyBuilder) - - switch len(what) { - case 0: - case 1: - b = b.what(what[0]) - default: - b = b.what(newPart(what[0], what[1:]...)) - - } - return b -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/stmtcacher.go b/vendor/gopkg.in/Masterminds/squirrel.v1/stmtcacher.go deleted file mode 100644 index 2540565e5..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/stmtcacher.go +++ /dev/null @@ -1,85 +0,0 @@ -package squirrel - -import ( - "database/sql" - "sync" -) - -// Prepareer is the interface that wraps the Prepare method. -// -// Prepare executes the given query as implemented by database/sql.Prepare. -type Preparer interface { - Prepare(query string) (*sql.Stmt, error) -} - -// DBProxy groups the Execer, Queryer, QueryRower, and Preparer interfaces. -type DBProxy interface { - Execer - Queryer - QueryRower - Preparer -} - -// NOTE: NewStmtCacher is defined in stmtcacher_ctx.go (Go >= 1.8) or stmtcacher_noctx.go (Go < 1.8). - -type stmtCacher struct { - prep Preparer - cache map[string]*sql.Stmt - mu sync.Mutex -} - -func (sc *stmtCacher) Prepare(query string) (*sql.Stmt, error) { - sc.mu.Lock() - defer sc.mu.Unlock() - stmt, ok := sc.cache[query] - if ok { - return stmt, nil - } - stmt, err := sc.prep.Prepare(query) - if err == nil { - sc.cache[query] = stmt - } - return stmt, err -} - -func (sc *stmtCacher) Exec(query string, args ...interface{}) (res sql.Result, err error) { - stmt, err := sc.Prepare(query) - if err != nil { - return - } - return stmt.Exec(args...) -} - -func (sc *stmtCacher) Query(query string, args ...interface{}) (rows *sql.Rows, err error) { - stmt, err := sc.Prepare(query) - if err != nil { - return - } - return stmt.Query(args...) -} - -func (sc *stmtCacher) QueryRow(query string, args ...interface{}) RowScanner { - stmt, err := sc.Prepare(query) - if err != nil { - return &Row{err: err} - } - return stmt.QueryRow(args...) -} - -type DBProxyBeginner interface { - DBProxy - Begin() (*sql.Tx, error) -} - -type stmtCacheProxy struct { - DBProxy - db *sql.DB -} - -func NewStmtCacheProxy(db *sql.DB) DBProxyBeginner { - return &stmtCacheProxy{DBProxy: NewStmtCacher(db), db: db} -} - -func (sp *stmtCacheProxy) Begin() (*sql.Tx, error) { - return sp.db.Begin() -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/stmtcacher_ctx.go b/vendor/gopkg.in/Masterminds/squirrel.v1/stmtcacher_ctx.go deleted file mode 100644 index 2ad51e494..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/stmtcacher_ctx.go +++ /dev/null @@ -1,74 +0,0 @@ -// +build go1.8 - -package squirrel - -import ( - "context" - "database/sql" -) - -// PrepareerContext is the interface that wraps the Prepare and PrepareContext methods. -// -// Prepare executes the given query as implemented by database/sql.Prepare. -// PrepareContext executes the given query as implemented by database/sql.PrepareContext. -type PreparerContext interface { - Preparer - PrepareContext(ctx context.Context, query string) (*sql.Stmt, error) -} - -// DBProxyContext groups the Execer, Queryer, QueryRower and PreparerContext interfaces. -type DBProxyContext interface { - Execer - Queryer - QueryRower - PreparerContext -} - -// NewStmtCacher returns a DBProxy wrapping prep that caches Prepared Stmts. -// -// Stmts are cached based on the string value of their queries. -func NewStmtCacher(prep PreparerContext) DBProxyContext { - return &stmtCacher{prep: prep, cache: make(map[string]*sql.Stmt)} -} - -func (sc *stmtCacher) PrepareContext(ctx context.Context, query string) (*sql.Stmt, error) { - ctxPrep, ok := sc.prep.(PreparerContext) - if !ok { - return nil, NoContextSupport - } - sc.mu.Lock() - defer sc.mu.Unlock() - stmt, ok := sc.cache[query] - if ok { - return stmt, nil - } - stmt, err := ctxPrep.PrepareContext(ctx, query) - if err == nil { - sc.cache[query] = stmt - } - return stmt, err -} - -func (sc *stmtCacher) ExecContext(ctx context.Context, query string, args ...interface{}) (res sql.Result, err error) { - stmt, err := sc.PrepareContext(ctx, query) - if err != nil { - return - } - return stmt.ExecContext(ctx, args...) -} - -func (sc *stmtCacher) QueryContext(ctx context.Context, query string, args ...interface{}) (rows *sql.Rows, err error) { - stmt, err := sc.PrepareContext(ctx, query) - if err != nil { - return - } - return stmt.QueryContext(ctx, args...) -} - -func (sc *stmtCacher) QueryRowContext(ctx context.Context, query string, args ...interface{}) RowScanner { - stmt, err := sc.PrepareContext(ctx, query) - if err != nil { - return &Row{err: err} - } - return stmt.QueryRowContext(ctx, args...) -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/stmtcacher_noctx.go b/vendor/gopkg.in/Masterminds/squirrel.v1/stmtcacher_noctx.go deleted file mode 100644 index f89f5b2c2..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/stmtcacher_noctx.go +++ /dev/null @@ -1,14 +0,0 @@ -// +build !go1.8 - -package squirrel - -import ( - "database/sql" -) - -// NewStmtCacher returns a DBProxy wrapping prep that caches Prepared Stmts. -// -// Stmts are cached based on the string value of their queries. -func NewStmtCacher(prep Preparer) DBProxy { - return &stmtCacher{prep: prep, cache: make(map[string]*sql.Stmt)} -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/update.go b/vendor/gopkg.in/Masterminds/squirrel.v1/update.go deleted file mode 100644 index 682906bc0..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/update.go +++ /dev/null @@ -1,232 +0,0 @@ -package squirrel - -import ( - "bytes" - "database/sql" - "fmt" - "sort" - "strings" - - "github.com/lann/builder" -) - -type updateData struct { - PlaceholderFormat PlaceholderFormat - RunWith BaseRunner - Prefixes exprs - Table string - SetClauses []setClause - WhereParts []Sqlizer - OrderBys []string - Limit string - Offset string - Suffixes exprs -} - -type setClause struct { - column string - value interface{} -} - -func (d *updateData) Exec() (sql.Result, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - return ExecWith(d.RunWith, d) -} - -func (d *updateData) Query() (*sql.Rows, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - return QueryWith(d.RunWith, d) -} - -func (d *updateData) QueryRow() RowScanner { - if d.RunWith == nil { - return &Row{err: RunnerNotSet} - } - queryRower, ok := d.RunWith.(QueryRower) - if !ok { - return &Row{err: RunnerNotQueryRunner} - } - return QueryRowWith(queryRower, d) -} - -func (d *updateData) ToSql() (sqlStr string, args []interface{}, err error) { - if len(d.Table) == 0 { - err = fmt.Errorf("update statements must specify a table") - return - } - if len(d.SetClauses) == 0 { - err = fmt.Errorf("update statements must have at least one Set clause") - return - } - - sql := &bytes.Buffer{} - - if len(d.Prefixes) > 0 { - args, _ = d.Prefixes.AppendToSql(sql, " ", args) - sql.WriteString(" ") - } - - sql.WriteString("UPDATE ") - sql.WriteString(d.Table) - - sql.WriteString(" SET ") - setSqls := make([]string, len(d.SetClauses)) - for i, setClause := range d.SetClauses { - var valSql string - e, isExpr := setClause.value.(expr) - if isExpr { - valSql = e.sql - args = append(args, e.args...) - } else { - valSql = "?" - args = append(args, setClause.value) - } - setSqls[i] = fmt.Sprintf("%s = %s", setClause.column, valSql) - } - sql.WriteString(strings.Join(setSqls, ", ")) - - if len(d.WhereParts) > 0 { - sql.WriteString(" WHERE ") - args, err = appendToSql(d.WhereParts, sql, " AND ", args) - if err != nil { - return - } - } - - if len(d.OrderBys) > 0 { - sql.WriteString(" ORDER BY ") - sql.WriteString(strings.Join(d.OrderBys, ", ")) - } - - if len(d.Limit) > 0 { - sql.WriteString(" LIMIT ") - sql.WriteString(d.Limit) - } - - if len(d.Offset) > 0 { - sql.WriteString(" OFFSET ") - sql.WriteString(d.Offset) - } - - if len(d.Suffixes) > 0 { - sql.WriteString(" ") - args, _ = d.Suffixes.AppendToSql(sql, " ", args) - } - - sqlStr, err = d.PlaceholderFormat.ReplacePlaceholders(sql.String()) - return -} - -// Builder - -// UpdateBuilder builds SQL UPDATE statements. -type UpdateBuilder builder.Builder - -func init() { - builder.Register(UpdateBuilder{}, updateData{}) -} - -// Format methods - -// PlaceholderFormat sets PlaceholderFormat (e.g. Question or Dollar) for the -// query. -func (b UpdateBuilder) PlaceholderFormat(f PlaceholderFormat) UpdateBuilder { - return builder.Set(b, "PlaceholderFormat", f).(UpdateBuilder) -} - -// Runner methods - -// RunWith sets a Runner (like database/sql.DB) to be used with e.g. Exec. -func (b UpdateBuilder) RunWith(runner BaseRunner) UpdateBuilder { - return setRunWith(b, runner).(UpdateBuilder) -} - -// Exec builds and Execs the query with the Runner set by RunWith. -func (b UpdateBuilder) Exec() (sql.Result, error) { - data := builder.GetStruct(b).(updateData) - return data.Exec() -} - -func (b UpdateBuilder) Query() (*sql.Rows, error) { - data := builder.GetStruct(b).(updateData) - return data.Query() -} - -func (b UpdateBuilder) QueryRow() RowScanner { - data := builder.GetStruct(b).(updateData) - return data.QueryRow() -} - -func (b UpdateBuilder) Scan(dest ...interface{}) error { - return b.QueryRow().Scan(dest...) -} - -// SQL methods - -// ToSql builds the query into a SQL string and bound args. -func (b UpdateBuilder) ToSql() (string, []interface{}, error) { - data := builder.GetStruct(b).(updateData) - return data.ToSql() -} - -// Prefix adds an expression to the beginning of the query -func (b UpdateBuilder) Prefix(sql string, args ...interface{}) UpdateBuilder { - return builder.Append(b, "Prefixes", Expr(sql, args...)).(UpdateBuilder) -} - -// Table sets the table to be updated. -func (b UpdateBuilder) Table(table string) UpdateBuilder { - return builder.Set(b, "Table", table).(UpdateBuilder) -} - -// Set adds SET clauses to the query. -func (b UpdateBuilder) Set(column string, value interface{}) UpdateBuilder { - return builder.Append(b, "SetClauses", setClause{column: column, value: value}).(UpdateBuilder) -} - -// SetMap is a convenience method which calls .Set for each key/value pair in clauses. -func (b UpdateBuilder) SetMap(clauses map[string]interface{}) UpdateBuilder { - keys := make([]string, len(clauses)) - i := 0 - for key := range clauses { - keys[i] = key - i++ - } - sort.Strings(keys) - for _, key := range keys { - val, _ := clauses[key] - b = b.Set(key, val) - } - return b -} - -// Where adds WHERE expressions to the query. -// -// See SelectBuilder.Where for more information. -func (b UpdateBuilder) Where(pred interface{}, args ...interface{}) UpdateBuilder { - return builder.Append(b, "WhereParts", newWherePart(pred, args...)).(UpdateBuilder) -} - -// OrderBy adds ORDER BY expressions to the query. -func (b UpdateBuilder) OrderBy(orderBys ...string) UpdateBuilder { - return builder.Extend(b, "OrderBys", orderBys).(UpdateBuilder) -} - -// Limit sets a LIMIT clause on the query. -func (b UpdateBuilder) Limit(limit uint64) UpdateBuilder { - return builder.Set(b, "Limit", fmt.Sprintf("%d", limit)).(UpdateBuilder) -} - -// Offset sets a OFFSET clause on the query. -func (b UpdateBuilder) Offset(offset uint64) UpdateBuilder { - return builder.Set(b, "Offset", fmt.Sprintf("%d", offset)).(UpdateBuilder) -} - -// Suffix adds an expression to the end of the query -func (b UpdateBuilder) Suffix(sql string, args ...interface{}) UpdateBuilder { - return builder.Append(b, "Suffixes", Expr(sql, args...)).(UpdateBuilder) -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/update_ctx.go b/vendor/gopkg.in/Masterminds/squirrel.v1/update_ctx.go deleted file mode 100644 index ad479f96f..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/update_ctx.go +++ /dev/null @@ -1,69 +0,0 @@ -// +build go1.8 - -package squirrel - -import ( - "context" - "database/sql" - - "github.com/lann/builder" -) - -func (d *updateData) ExecContext(ctx context.Context) (sql.Result, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - ctxRunner, ok := d.RunWith.(ExecerContext) - if !ok { - return nil, NoContextSupport - } - return ExecContextWith(ctx, ctxRunner, d) -} - -func (d *updateData) QueryContext(ctx context.Context) (*sql.Rows, error) { - if d.RunWith == nil { - return nil, RunnerNotSet - } - ctxRunner, ok := d.RunWith.(QueryerContext) - if !ok { - return nil, NoContextSupport - } - return QueryContextWith(ctx, ctxRunner, d) -} - -func (d *updateData) QueryRowContext(ctx context.Context) RowScanner { - if d.RunWith == nil { - return &Row{err: RunnerNotSet} - } - queryRower, ok := d.RunWith.(QueryRowerContext) - if !ok { - if _, ok := d.RunWith.(QueryerContext); !ok { - return &Row{err: RunnerNotQueryRunner} - } - return &Row{err: NoContextSupport} - } - return QueryRowContextWith(ctx, queryRower, d) -} - -// ExecContext builds and ExecContexts the query with the Runner set by RunWith. -func (b UpdateBuilder) ExecContext(ctx context.Context) (sql.Result, error) { - data := builder.GetStruct(b).(updateData) - return data.ExecContext(ctx) -} - -// QueryContext builds and QueryContexts the query with the Runner set by RunWith. -func (b UpdateBuilder) QueryContext(ctx context.Context) (*sql.Rows, error) { - data := builder.GetStruct(b).(updateData) - return data.QueryContext(ctx) -} - -// QueryRowContext builds and QueryRowContexts the query with the Runner set by RunWith. -func (b UpdateBuilder) QueryRowContext(ctx context.Context) RowScanner { - data := builder.GetStruct(b).(updateData) - return data.QueryRowContext(ctx) -} - -// ScanContext is a shortcut for QueryRowContext().Scan. -func (b UpdateBuilder) ScanContext(ctx context.Context, dest ...interface{}) error { - return b.QueryRowContext(ctx).Scan(dest...) -} diff --git a/vendor/gopkg.in/Masterminds/squirrel.v1/where.go b/vendor/gopkg.in/Masterminds/squirrel.v1/where.go deleted file mode 100644 index 976b63ace..000000000 --- a/vendor/gopkg.in/Masterminds/squirrel.v1/where.go +++ /dev/null @@ -1,30 +0,0 @@ -package squirrel - -import ( - "fmt" -) - -type wherePart part - -func newWherePart(pred interface{}, args ...interface{}) Sqlizer { - return &wherePart{pred: pred, args: args} -} - -func (p wherePart) ToSql() (sql string, args []interface{}, err error) { - switch pred := p.pred.(type) { - case nil: - // no-op - case rawSqlizer: - return pred.toSqlRaw() - case Sqlizer: - return pred.ToSql() - case map[string]interface{}: - return Eq(pred).ToSql() - case string: - sql = pred - args = p.args - default: - err = fmt.Errorf("expected string-keyed map or string, not %T", pred) - } - return -}