gosql

package module
v1.2.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 28, 2020 License: MIT Imports: 8 Imported by: 0

README

GoSQL

Query builder with some handy utility functions.

Documentation

For full documentation see godoc.

Benchmarks

BenchmarkInsert-4        	    836143 ns/op	     400 B/op	      17 allocs/op
BenchmarkUpdate-4        	     22923 ns/op	     488 B/op	      18 allocs/op
BenchmarkSelect-4        	     24934 ns/op	     648 B/op	      26 allocs/op
BenchmarkSelectMany-4    	    127559 ns/op	    6568 B/op	     328 allocs/op
BenchmarkSelectManyPtrs-4	    130752 ns/op	    7976 B/op	     428 allocs/op

Contribute

Make a pull request

Documentation

Index

Examples

Constants

This section is empty.

Variables

View Source
var ErrNotFound = errors.New("no result found")

ErrNotFound .

Functions

This section is empty.

Types

type CountQuery

type CountQuery struct {
	// contains filtered or unexported fields
}

CountQuery .

func (*CountQuery) Exec

func (cq *CountQuery) Exec() (int64, error)

Exec .

func (*CountQuery) Join

func (cq *CountQuery) Join(join string) *CountQuery

Join .

func (*CountQuery) OrWhere

func (cq *CountQuery) OrWhere(condition string, args ...interface{}) *CountQuery

OrWhere .

func (*CountQuery) String

func (cq *CountQuery) String() string

String returns the string representation of CountQuery.

func (*CountQuery) Where

func (cq *CountQuery) Where(condition string, args ...interface{}) *CountQuery

Where .

type DB

type DB struct {
	// contains filtered or unexported fields
}

DB is a wrapper around sql.DB.

func New

func New(db *sql.DB) *DB

New returns a reference to DB.

func (*DB) Begin

func (db *DB) Begin() (*sql.Tx, error)

Begin starts a transaction.

func (*DB) Count

func (db *DB) Count(table string, count string) *CountQuery

Count .

func (*DB) Delete

func (db *DB) Delete(obj interface{}) (sql.Result, error)

Delete .

Example
package main

import (
	"database/sql"
	"fmt"
	"os"

	_ "github.com/mattn/go-sqlite3"
	"github.com/twharmon/gosql"
)

func main() {
	os.Remove("/tmp/foo.db")
	sqliteDB, _ := sql.Open("sqlite3", "/tmp/foo.db")
	sqliteDB.Exec("create table user (id integer not null primary key, name text); delete from user")
	db := gosql.New(sqliteDB)
	type User struct {
		ID   int `gosql:"primary"`
		Name string
	}
	db.Register(User{})
	user := User{ID: 5, Name: "Gopher"}
	db.Insert(&user)
	db.Delete(&user)
	var foo User
	err := db.Select("*").To(&foo)
	fmt.Println(err)
}
Output:

no result found

func (*DB) Exec

func (db *DB) Exec(query string, args ...interface{}) (sql.Result, error)

Exec .

func (*DB) Insert

func (db *DB) Insert(obj interface{}) (sql.Result, error)

Insert .

Example
package main

import (
	"database/sql"
	"fmt"
	"os"

	_ "github.com/mattn/go-sqlite3"
	"github.com/twharmon/gosql"
)

func main() {
	os.Remove("/tmp/foo.db")
	sqliteDB, _ := sql.Open("sqlite3", "/tmp/foo.db")
	sqliteDB.Exec("create table user (id integer not null primary key, name text); delete from user")
	db := gosql.New(sqliteDB)
	type User struct {
		ID   int `gosql:"primary"`
		Name string
	}
	db.Register(User{})
	db.Insert(&User{Name: "Gopher"})
	var user User
	db.Select("*").To(&user)
	fmt.Println(user.Name)
}
Output:

Gopher

func (*DB) ManualDelete

func (db *DB) ManualDelete(table string) *DeleteQuery

ManualDelete .

func (*DB) ManualUpdate

func (db *DB) ManualUpdate(table string) *UpdateQuery

ManualUpdate .

func (*DB) Query

func (db *DB) Query(query string, args ...interface{}) (*sql.Rows, error)

Query .

func (*DB) QueryRow

func (db *DB) QueryRow(query string, args ...interface{}) *sql.Row

QueryRow .

func (*DB) Register

func (db *DB) Register(structs ...interface{}) error

Register registers structs for database queries.

func (*DB) Select

func (db *DB) Select(fields ...string) *SelectQuery

Select .

func (*DB) Update

func (db *DB) Update(obj interface{}) (sql.Result, error)

Update .

Example
package main

import (
	"database/sql"
	"fmt"
	"os"

	_ "github.com/mattn/go-sqlite3"
	"github.com/twharmon/gosql"
)

func main() {
	os.Remove("/tmp/foo.db")
	sqliteDB, _ := sql.Open("sqlite3", "/tmp/foo.db")
	sqliteDB.Exec("create table user (id integer not null primary key, name text, email text); delete from user")
	db := gosql.New(sqliteDB)
	type User struct {
		ID    int `gosql:"primary"`
		Name  string
		Email string
	}
	db.Register(User{})
	user := User{ID: 5, Name: "Gopher", Email: "gopher@example.com"}
	db.Insert(&user)
	user.Name = "Gofer"
	user.Email = "gofer@example.com"
	db.Update(&user)
	var foo User
	db.Select("*").To(&foo)
	fmt.Println(foo.Name, foo.Email)
}
Output:

Gofer gofer@example.com

type DeleteQuery

type DeleteQuery struct {
	// contains filtered or unexported fields
}

DeleteQuery .

func (*DeleteQuery) Exec

func (dq *DeleteQuery) Exec() (sql.Result, error)

Exec .

func (*DeleteQuery) Join

func (dq *DeleteQuery) Join(join string) *DeleteQuery

Join .

func (*DeleteQuery) OrWhere

func (dq *DeleteQuery) OrWhere(condition string, args ...interface{}) *DeleteQuery

OrWhere .

func (*DeleteQuery) String

func (dq *DeleteQuery) String() string

String returns the string representation of DeleteQuery.

func (*DeleteQuery) Where

func (dq *DeleteQuery) Where(condition string, args ...interface{}) *DeleteQuery

Where .

type SelectQuery

type SelectQuery struct {
	// contains filtered or unexported fields
}

SelectQuery .

func (*SelectQuery) Join

func (sq *SelectQuery) Join(join string) *SelectQuery

Join .

func (*SelectQuery) Limit

func (sq *SelectQuery) Limit(limit int64) *SelectQuery

Limit .

func (*SelectQuery) Offset

func (sq *SelectQuery) Offset(offset int64) *SelectQuery

Offset .

func (*SelectQuery) OrWhere

func (sq *SelectQuery) OrWhere(condition string, args ...interface{}) *SelectQuery

OrWhere .

func (*SelectQuery) OrderBy

func (sq *SelectQuery) OrderBy(orderBy string) *SelectQuery

OrderBy .

func (*SelectQuery) String

func (sq *SelectQuery) String() string

String returns the string representation of SelectQuery.

func (*SelectQuery) To

func (sq *SelectQuery) To(out interface{}) error

To sets the result of the query to out. To() can only take a pointer to a struct, a pointer to a slice of structs, or a pointer to a slice of pointers to structs.

func (*SelectQuery) Where

func (sq *SelectQuery) Where(condition string, args ...interface{}) *SelectQuery

Where .

type UpdateQuery

type UpdateQuery struct {
	// contains filtered or unexported fields
}

UpdateQuery .

func (*UpdateQuery) Exec

func (uq *UpdateQuery) Exec() (sql.Result, error)

Exec .

func (*UpdateQuery) Join

func (uq *UpdateQuery) Join(join string) *UpdateQuery

Join .

func (*UpdateQuery) OrWhere

func (uq *UpdateQuery) OrWhere(condition string, args ...interface{}) *UpdateQuery

OrWhere .

func (*UpdateQuery) Set

func (uq *UpdateQuery) Set(set string, args ...interface{}) *UpdateQuery

Set .

func (*UpdateQuery) String

func (uq *UpdateQuery) String() string

String returns the string representation of UpdateQuery.

func (*UpdateQuery) Where

func (uq *UpdateQuery) Where(condition string, args ...interface{}) *UpdateQuery

Where .

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL