Categorygithub.com/pengsrc/upper-db
modulepackage
3.3.1+incompatible
Repository: https://github.com/pengsrc/upper-db.git
Documentation: pkg.go.dev

# README

upper.io/db.v3 Build Status GoDoc

The upper.io/db.v3 package for Go is a productive data access layer for Go that provides a common interface to work with different data sources such as PostgreSQL, MySQL, SQLite, MSSQL, QL and MongoDB.

go get upper.io/db.v3

The tour

screen shot 2017-05-01 at 19 23 22

Take the tour to see real live examples in your browser.

Live demos

You can run the following example on our playground:

package main

import (
	"log"

	"upper.io/db.v3/postgresql"
)

var settings = postgresql.ConnectionURL{
	Host:     "demo.upper.io",
	Database: "booktown",
	User:     "demouser",
	Password: "demop4ss",
}

type Book struct {
	ID        int    `db:"id"`
	Title     string `db:"title"`
	AuthorID  int    `db:"author_id"`
	SubjectID int    `db:"subject_id"`
}

func main() {
	sess, err := postgresql.Open(settings)
	if err != nil {
		log.Fatalf("db.Open(): %q\n", err)
	}
	defer sess.Close()

	var books []Book
	err = sess.Collection("books").Find().All(&books)
	if err != nil {
		log.Fatalf("Find(): %q\n", err)
	}

	for i, book := range books {
		log.Printf("Book %d: %#v\n", i, book)
	}
}

Or you can also run it locally from the _examples directory:

go run _examples/booktown-books/main.go
2016/08/10 08:42:48 "The Shining" (ID: 7808)
2016/08/10 08:42:48 "Dune" (ID: 4513)
2016/08/10 08:42:48 "2001: A Space Odyssey" (ID: 4267)
2016/08/10 08:42:48 "The Cat in the Hat" (ID: 1608)
2016/08/10 08:42:48 "Bartholomew and the Oobleck" (ID: 1590)
2016/08/10 08:42:48 "Franklin in the Dark" (ID: 25908)
2016/08/10 08:42:48 "Goodnight Moon" (ID: 1501)
2016/08/10 08:42:48 "Little Women" (ID: 190)
2016/08/10 08:42:48 "The Velveteen Rabbit" (ID: 1234)
2016/08/10 08:42:48 "Dynamic Anatomy" (ID: 2038)
2016/08/10 08:42:48 "The Tell-Tale Heart" (ID: 156)
2016/08/10 08:42:48 "Programming Python" (ID: 41473)
2016/08/10 08:42:48 "Learning Python" (ID: 41477)
2016/08/10 08:42:48 "Perl Cookbook" (ID: 41478)
2016/08/10 08:42:48 "Practical PostgreSQL" (ID: 41472)

Documentation for users

This is the source code repository, check out our release notes and see examples and documentation at upper.io/db.v3.

Changelog

See CHANGELOG.md.

License

This project is licensed under the terms of the MIT License.

Copyright (c) 2012-present The upper.io/db authors. All rights reserved.

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.

Authors and contributors

# Packages

No description provided by the author
Package mongo wraps the gopkg.in/mgo.v2 MongoDB driver.
Package mssql wraps the github.com/go-sql-driver/mssql MySQL driver.
Package mysql wraps the github.com/go-sql-driver/mysql MySQL driver.
Package postgresql wraps the github.com/lib/pq PostgreSQL driver.
Package ql wraps the github.com/cznic/ql/driver QL driver.
Package sqlite wraps the github.com/lib/sqlite SQLite driver.

# Functions

And joins conditions under logical conjunction.
Func represents a database function and satisfies the db.Function interface.
NewConstraint creates a constraint.
NewSettings returns a new settings value prefilled with the current default settings.
Open attempts to open a database.
Or joins conditions under logical disjunction.
Raw marks chunks of data as protected, so they pass directly to the query without any filtering.
RegisterAdapter registers a generic Database adapter.

# Constants

EnvEnableDebug can be used by adapters to determine if the user has enabled debugging.
Compound operators.
Compound operators.
Compound operators.

# Variables

Settings provides global configuration settings for database sessions.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.
Error messages.

# Structs

AdapterFuncMap defines functions that need to be implemented by adapters.
Intersection represents a compound joined by AND.
QueryStatus represents the status of a query after being executed.
Union represents a compound joined by OR.

# Interfaces

Collection is an interface that defines methods useful for handling tables.
Compound represents an statement that has one or many sentences joined by by an operator like "AND" or "OR".
ConnectionURL represents a connection string.
Constraint interface represents a single condition, like "a = 1".
Constraints interface represents an array or constraints, like "a = 1, b = 2, c = 3".
Database is an interface that defines methods that must be satisfied by all database adapters.
Function interface defines methods for representing database functions.
Logger represents a logging collector.
Marshaler is the interface implemented by struct fields that can transform themselves into values that can be stored on a database.
RawValue interface represents values that can bypass SQL filters.
Result is an interface that defines methods useful for working with result sets.
Settings defines methods to get or set configuration values.
Tx has methods for transactions that can be either committed or rolled back.
Unmarshaler is the interface implemented by struct fields that can transform themselves from stored database values into Go values.

# Type aliases

CompoundOperator represents the operation on a compound statement.
Cond is a map that defines conditions for a query and satisfies the Constraints and Compound interfaces.