Categorygithub.com/go-ginseng/sql
repositorypackage
2.0.0+incompatible
Repository: https://github.com/go-ginseng/sql.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author

# README

Go Utility: sql

Installation

go get -u github.com/go-ginseng/sql

Connection

Connect to MySQL

// import "github.com/go-ginseng/sql/conn"

// param: (host, port, username, password, database string, silent bool)
// return: (*sql.DB, error)
db, err := conn.MySql("127.0.0.1", "3306", "root", "password", "database", true)
if err != nil {
    panic(err)
}

Connect to disk-based SQLite

// import "github.com/go-ginseng/sql/conn"

// param: (dsn string, silent bool)
// return: (*sql.DB, error)
db, err := conn.Sqlite("./database.db", true)
if err != nil {
    panic(err)
}

Connect to memory-based SQLite

// import "github.com/go-ginseng/sql/conn"

// param: (shared, silent bool)
// return: (*sql.DB, error)
db, err := conn.SqliteMemory(":memory:", true)
if err != nil {
    panic(err)
}

Encryption

AES encrypt and decrypt

// import "github.com/go-ginseng/sql/encrypt"

encryption, err := encrypt.NewAesEncrypt("aes key")
data := "data to encrypt"

// param: (plainText string)
// return: (string, error)
encrypted, err := encryption.Encrypt(data)
if err != nil {
    panic(err)
}

// param: (cipherText string)
// return: (string, error)
decrypted, err := encryption.Decrypt(encrypted)
if err != nil {
    panic(err)
}

Clause Builder

// import "github.com/go-ginseng/sql"

// id = ?
cls := sql.Eq("id", 1)

// id <> ?
cls := sql.Neq("id", 1)

// id > ?
cls := sql.Gt("id", 1)

// id >= ?
cls := sql.Gte("id", 1)

// id < ?
cls := sql.Lt("id", 1)

// id <= ?
cls := sql.Lte("id", 1)

// id IN (?, ?, ?)
cls := sql.In("id", []int{1, 2, 3})

// id NOT IN (?, ?, ?)
cls := sql.Nin("id", []int{1, 2, 3})

// id LIKE ?
cls := sql.Lk("id", "value")

// id NOT LIKE ?
cls := sql.Nlk("id", "value")

// id IS NULL
cls := sql.Null("id")

// id IS NOT NULL
cls := sql.NotNull("id")

// id BETWEEN ? AND ?
cls := sql.Between("id", 1, 10)

// (id = ? AND name <> ?)
cls := sql.And(sql.Eq("id", 1), sql.Neq("name", "name"))

// (id = ? OR name <> ?)
cls := sql.Or(sql.Eq("id", 1), sql.Neq("name", "name"))

// build clause and use it
stm, values := cls.Build()
db.Where(stm, values...).Find(&data)

Generic Query Functions

FindOne

// import "github.com/go-ginseng/sql"

m, err := FindOne[Model](db, sql.Eq("id", 1))

FindAll

// import "github.com/go-ginseng/sql"

ms, err := FindAll[Model](
    db,
    sql.Eq("id", 1),
    &sql.Pagination{Page: 1, Size: 10},
    &sql.Sort{By: "id", Asc: true})

Count

// import "github.com/go-ginseng/sql"

count, err := Count[Model](db, sql.Eq("id", 1))

Generic Write Functions

Create

// import "github.com/go-ginseng/sql"

m := &Model{Id: 1, Name: "name"}
m, err := Create[Model](db, m)

Update

// import "github.com/go-ginseng/sql"

m := &Model{Id: 1, Name: "name"}
m, err := Update[Model](db, m)

Delete

// import "github.com/go-ginseng/sql"

m := &Model{Id: 1, Name: "name"}
err := Delete[Model](db, m)

DeleteBy

// import "github.com/go-ginseng/sql"

err := DeleteBy[Model](db, sql.Eq("id", 1))