pki/vendor/xorm.io/xorm/session_query.go

155 lines
3.4 KiB
Go
Raw Normal View History

2020-11-25 20:36:07 +01:00
// Copyright 2017 The Xorm Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package xorm
import (
"xorm.io/xorm/core"
)
// Query runs a raw sql and return records as []map[string][]byte
func (session *Session) Query(sqlOrArgs ...interface{}) ([]map[string][]byte, error) {
if session.isAutoClose {
defer session.Close()
}
sqlStr, args, err := session.statement.GenQuerySQL(sqlOrArgs...)
if err != nil {
return nil, err
}
return session.queryBytes(sqlStr, args...)
}
2021-08-30 20:04:15 +02:00
func (session *Session) rows2Strings(rows *core.Rows) (resultsSlice []map[string]string, err error) {
fields, err := rows.Columns()
if err != nil {
2020-11-25 20:36:07 +01:00
return nil, err
}
2021-08-30 20:04:15 +02:00
types, err := rows.ColumnTypes()
2020-11-25 20:36:07 +01:00
if err != nil {
return nil, err
}
2021-08-30 20:04:15 +02:00
2020-11-25 20:36:07 +01:00
for rows.Next() {
2021-08-30 20:04:15 +02:00
result, err := session.engine.row2mapStr(rows, types, fields)
2020-11-25 20:36:07 +01:00
if err != nil {
return nil, err
}
resultsSlice = append(resultsSlice, result)
}
2021-08-30 20:04:15 +02:00
if rows.Err() != nil {
return nil, rows.Err()
}
2020-11-25 20:36:07 +01:00
return resultsSlice, nil
}
2021-08-30 20:04:15 +02:00
func (session *Session) rows2SliceString(rows *core.Rows) (resultsSlice [][]string, err error) {
2020-11-25 20:36:07 +01:00
fields, err := rows.Columns()
if err != nil {
return nil, err
}
2021-08-30 20:04:15 +02:00
types, err := rows.ColumnTypes()
if err != nil {
return nil, err
}
2020-11-25 20:36:07 +01:00
for rows.Next() {
2021-08-30 20:04:15 +02:00
record, err := session.engine.row2sliceStr(rows, types, fields)
2020-11-25 20:36:07 +01:00
if err != nil {
return nil, err
}
resultsSlice = append(resultsSlice, record)
}
2021-08-30 20:04:15 +02:00
if rows.Err() != nil {
return nil, rows.Err()
}
2020-11-25 20:36:07 +01:00
return resultsSlice, nil
}
// QueryString runs a raw sql and return records as []map[string]string
func (session *Session) QueryString(sqlOrArgs ...interface{}) ([]map[string]string, error) {
if session.isAutoClose {
defer session.Close()
}
sqlStr, args, err := session.statement.GenQuerySQL(sqlOrArgs...)
if err != nil {
return nil, err
}
rows, err := session.queryRows(sqlStr, args...)
if err != nil {
return nil, err
}
defer rows.Close()
2021-08-30 20:04:15 +02:00
return session.rows2Strings(rows)
2020-11-25 20:36:07 +01:00
}
// QuerySliceString runs a raw sql and return records as [][]string
func (session *Session) QuerySliceString(sqlOrArgs ...interface{}) ([][]string, error) {
if session.isAutoClose {
defer session.Close()
}
sqlStr, args, err := session.statement.GenQuerySQL(sqlOrArgs...)
if err != nil {
return nil, err
}
rows, err := session.queryRows(sqlStr, args...)
if err != nil {
return nil, err
}
defer rows.Close()
2021-08-30 20:04:15 +02:00
return session.rows2SliceString(rows)
2020-11-25 20:36:07 +01:00
}
2021-08-30 20:04:15 +02:00
func (session *Session) rows2Interfaces(rows *core.Rows) (resultsSlice []map[string]interface{}, err error) {
fields, err := rows.Columns()
if err != nil {
2020-11-25 20:36:07 +01:00
return nil, err
}
2021-08-30 20:04:15 +02:00
types, err := rows.ColumnTypes()
2020-11-25 20:36:07 +01:00
if err != nil {
return nil, err
}
for rows.Next() {
2021-08-30 20:04:15 +02:00
result, err := session.engine.row2mapInterface(rows, types, fields)
2020-11-25 20:36:07 +01:00
if err != nil {
return nil, err
}
resultsSlice = append(resultsSlice, result)
}
2021-08-30 20:04:15 +02:00
if rows.Err() != nil {
return nil, rows.Err()
}
2020-11-25 20:36:07 +01:00
return resultsSlice, nil
}
// QueryInterface runs a raw sql and return records as []map[string]interface{}
func (session *Session) QueryInterface(sqlOrArgs ...interface{}) ([]map[string]interface{}, error) {
if session.isAutoClose {
defer session.Close()
}
sqlStr, args, err := session.statement.GenQuerySQL(sqlOrArgs...)
if err != nil {
return nil, err
}
rows, err := session.queryRows(sqlStr, args...)
if err != nil {
return nil, err
}
defer rows.Close()
2021-08-30 20:04:15 +02:00
return session.rows2Interfaces(rows)
2020-11-25 20:36:07 +01:00
}