mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-27 15:24:25 +00:00
ad1b6d439f
* Add support for database schema * Require setting search_path for the db user * Add schema setting to admin/config.tmpl * Use a schema different from default for psql tests * Update postgres scripts to use custom schema * Update to xorm/core 0.7.3 and xorm/xorm c37aff9b3a * Fix migration test Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> |
||
---|---|---|
.. | ||
.drone.yml | ||
.gitignore | ||
benchmark.sh | ||
cache.go | ||
column.go | ||
converstion.go | ||
db.go | ||
dialect.go | ||
driver.go | ||
error.go | ||
filter.go | ||
go.mod | ||
go.sum | ||
ilogger.go | ||
index.go | ||
LICENSE | ||
mapper.go | ||
pk.go | ||
README.md | ||
rows.go | ||
scan.go | ||
stmt.go | ||
table.go | ||
tx.go | ||
type.go |
Core is a lightweight wrapper of sql.DB.
Open
db, _ := core.Open(db, connstr)
SetMapper
db.SetMapper(SameMapper())
Scan usage
Scan
rows, _ := db.Query()
for rows.Next() {
rows.Scan()
}
ScanMap
rows, _ := db.Query()
for rows.Next() {
rows.ScanMap()
ScanSlice
You can use []string
, [][]byte
, []interface{}
, []*string
, []sql.NullString
to ScanSclice. Notice, slice's length should be equal or less than select columns.
rows, _ := db.Query()
cols, _ := rows.Columns()
for rows.Next() {
var s = make([]string, len(cols))
rows.ScanSlice(&s)
}
rows, _ := db.Query()
cols, _ := rows.Columns()
for rows.Next() {
var s = make([]*string, len(cols))
rows.ScanSlice(&s)
}
ScanStruct
rows, _ := db.Query()
for rows.Next() {
rows.ScanStructByName()
rows.ScanStructByIndex()
}
Query usage
rows, err := db.Query("select * from table where name = ?", name)
user = User{
Name:"lunny",
}
rows, err := db.QueryStruct("select * from table where name = ?Name",
&user)
var user = map[string]interface{}{
"name": "lunny",
}
rows, err = db.QueryMap("select * from table where name = ?name",
&user)
QueryRow usage
row := db.QueryRow("select * from table where name = ?", name)
user = User{
Name:"lunny",
}
row := db.QueryRowStruct("select * from table where name = ?Name",
&user)
var user = map[string]interface{}{
"name": "lunny",
}
row = db.QueryRowMap("select * from table where name = ?name",
&user)
Exec usage
db.Exec("insert into user (`name`, title, age, alias, nick_name,created) values (?,?,?,?,?,?)", name, title, age, alias...)
user = User{
Name:"lunny",
Title:"test",
Age: 18,
}
result, err = db.ExecStruct("insert into user (`name`, title, age, alias, nick_name,created) values (?Name,?Title,?Age,?Alias,?NickName,?Created)",
&user)
var user = map[string]interface{}{
"Name": "lunny",
"Title": "test",
"Age": 18,
}
result, err = db.ExecMap("insert into user (`name`, title, age, alias, nick_name,created) values (?Name,?Title,?Age,?Alias,?NickName,?Created)",
&user)