Skip to content
This repository was archived by the owner on Feb 5, 2023. It is now read-only.

Repository files navigation

go-orm

Examples

Init connection

package main
import (
"context""database/sql""github.com/deweppro/go-orm""github.com/deweppro/go-orm/plugins""github.com/deweppro/go-orm/schema/mysql"
)
funcmain() {
conn:=mysql.New(&mysql.Config{
Pool: []mysql.Item{
{
Name: "main_db",
Host: "127.0.0.1",
Port: 3306,
Schema: "test_table",
User: "demo",
Password: "1234",
},
}})
deferconn.Close()
iferr:=conn.Reconnect(); err!=nil {
panic(err.Error())
}
db:=orm.NewDB(conn, orm.Plugins{Logger: plugins.StdOutLog, Metrics: plugins.StdOutMetric})
pool:=db.Pool("main_db")
iferr:=pool.Ping(); err!=nil {
panic(err.Error())
}
// use pool[main_db] hereerr:=pool.CallContext("query name", context.Background(), func(ctx context.Context, db*sql.DB) error {...}
err:=pool.TxContext("query name", context.Background(), func(context.Context, *sql.Tx) error) error {...}
}

Basic query

package main
import (
"context""database/sql""github.com/deweppro/go-orm""github.com/deweppro/go-orm/plugins""github.com/deweppro/go-orm/schema/mysql"
)
funcmain() {
...varuserNamestringerr:=pool.CallContext("user_name", context.Background(), func(ctx context.Context, db*sql.DB) error {
rows, err:=db.QueryContext(ctx, "select `name` from `users` where `id`=?", 10)
iferr!=nil {
returnerr
}
deferrows.Close()
forrows.Next() {
iferr=rows.Scan(&userName); err!=nil {
returnerr
}
}
iferr=rows.Close(); err!=nil {
returnerr
}
iferr=rows.Err(); err!=nil {
returnerr
}
returnnil
})
iferr!=nil {
panic(err.Error())
}
}

Lite query

package main
import (
"context""fmt""github.com/deweppro/go-orm""github.com/deweppro/go-orm/plugins""github.com/deweppro/go-orm/schema/mysql"
)
funcmain() {
...varuserNamestringerr:=pool.QueryContext("user_name", context.Background(), func(q orm.Querier) {
q.SQL("select `name` from `users` limit 1")
q.Bind(func(bind orm.Scanner) error {
returnbind.Scan(&userName)
})
})
err=pool.ExecContext("user_name", context.Background(), func(e orm.Executor) {
e.SQL("insert into `users` (`id`, `name`) values (?, ?);")
e.Params(3, "cccc")
e.Bind(func(result orm.Result) error {
fmt.Printf("RowsAffected=%d LastInsertId=%d", result.RowsAffected, result.LastInsertId)
returnnil
})
})
err=pool.TransactionContext("", context.Background(), func(v orm.Tx) {
v.Exec(func(e orm.Executor) {
e.SQL("insert into `users` (`id`, `name`) values (?, ?);")
e.Params(3, "cccc")
e.Bind(func(result orm.Result) error {
fmt.Printf("RowsAffected=%d LastInsertId=%d", result.RowsAffected, result.LastInsertId)
returnnil
})
})
v.Query(func(q orm.Querier) {
q.SQL("select `name` from `users` limit 1")
q.Bind(func(bind orm.Scanner) error {
returnbind.Scan(&userName)
})
})
})
}

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages