This repository is now moved to https://github.com/gouniverse/sb
An SQL package that wraps the mainstream DB package to allow transparent working with transactions and simplified SQL builder (with limited functionality).
For a full SQL builder functionality check: https://doug-martin.github.io/goqu
go get -u github.com/gouniverse/sql
import sb "github.com/gouniverse/sql"
sql := NewBuilder(DIALECT_MYSQL).
Table("users").
Column("id", COLUMN_TYPE_STRING, map[string]string{
COLUMN_ATTRIBUTE_PRIMARY: "yes",
COLUMN_ATTRIBUTE_LENGTH: "40",
}).
Column("image", COLUMN_TYPE_BLOB, map[string]string{}).
Column("price_default", COLUMN_TYPE_DECIMAL, map[string]string{
COLUMN_ATTRIBUTE_LENGTH: "12",
COLUMN_ATTRIBUTE_DECIMALS: "10",
}).
Column("price_custom", COLUMN_TYPE_DECIMAL, map[string]string{
COLUMN_ATTRIBUTE_LENGTH: "12",
COLUMN_ATTRIBUTE_DECIMALS: "10",
}).
Column("created_at", COLUMN_TYPE_DATETIME, map[string]string{}).
Column("updated_at", COLUMN_TYPE_DATETIME, map[string]string{}).
Column("deleted_at", COLUMN_TYPE_DATETIME, map[string]string{
COLUMN_ATTRIBUTE_NULLABLE: "yes",
}).
Create()
import sb "github.com/gouniverse/sql"
sql := NewBuilder(DIALECT_MYSQL).
Table("users").
Drop()
import sb "github.com/gouniverse/sql"
sql := sb.NewBuilder(DIALECT_MYSQL).
Table("cache").
Insert(map[string]string{
"ID": uid.NanoUid(),
"CacheKey": token,
"CacheValue": string(emailJSON),
"ExpiresAt": expiresAt.Format("2006-01-02T15:04:05"),
"CreatedAt": time.Now().Format("2006-01-02T15:04:05"),
"UpdatedAt": time.Now().Format("2006-01-02T15:04:05"),
})
sql := sb.NewBuilder(DIALECT_MYSQL).
Table("user").
Where(sb.Where{
Column: "id",
Operator: "==",
Value: "1",
}).
Limit(1).
Delete()
- From existing Go DB instance
myDb := sb.NewDatabaseFromDb(sqlDb, DIALECT_MYSQL)
- From driver
myDb = sql.NewDatabaseFromDriver("sqlite3", "test.db")
myDb := sb.NewDatabaseFromDb(sqlDb, DIALECT_MYSQL)
err := myDb.Exec(sql)
import _ "modernc.org/sqlite"
import sb "github.com/gouniverse/sql"
myDb = sql.NewDatabaseFromDriver("sqlite3", "test.db")
myDb.BeginTransaction()
err := Database.Exec(sql1)
if err != nil {
myDb.RollbackTransaction()
return err
}
err := Database.Exec(sql2)
if err != nil {
myDb.RollbackTransaction()
return err
}
myDB.CommitTransaction()
selectSQL := NewBuilder(DIALECT_POSTGRES).
Table("users").
Select([]string{"FirstName", "LastName"})
createViewSql := NewBuilder(DIALECT_POSTGRES).
View("v_users").
ViewColumns([]string{"first_name", "last_name"}).
ViewSQL(selectSQL).
Create()
selectSQL := NewBuilder(DIALECT_POSTGRES).
Table("users").
Select([]string{"FirstName", "LastName"})
createViewSql := NewBuilder(DIALECT_POSTGRES).
View("v_users").
ViewColumns([]string{"first_name", "last_name"}).
ViewSQL(selectSQL).
CreateIfNotExists()
dropiewSql := NewBuilder(DIALECT_POSTGRES).
View("v_users").
Drop()
Executes a select query and returns map[string]any
mapAny := myDb.SelectToMapAny(sql)
Executes a select query and returns map[string]string
mapString := myDb.SelectToMapAny(sql)