mirror of
https://github.com/go-gitea/gitea.git
synced 2024-12-13 16:09:48 +08:00
1790f01dd9
* Upgrade xorm to v1.2.2 (#16663) Backport #16663 Fix #16683 * Add test to ensure that dumping of login sources remains correct (#16847) #16831 has occurred because of a missed regression. This PR adds a simple test to try to prevent this occuring again. Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
52 lines
995 B
Go
Vendored
52 lines
995 B
Go
Vendored
// Copyright 2021 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 convert
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"strconv"
|
|
)
|
|
|
|
// AsBool convert interface as bool
|
|
func AsBool(src interface{}) (bool, error) {
|
|
switch v := src.(type) {
|
|
case bool:
|
|
return v, nil
|
|
case *bool:
|
|
return *v, nil
|
|
case *sql.NullBool:
|
|
return v.Bool, nil
|
|
case int64:
|
|
return v > 0, nil
|
|
case int:
|
|
return v > 0, nil
|
|
case int8:
|
|
return v > 0, nil
|
|
case int16:
|
|
return v > 0, nil
|
|
case int32:
|
|
return v > 0, nil
|
|
case []byte:
|
|
if len(v) == 0 {
|
|
return false, nil
|
|
}
|
|
if v[0] == 0x00 {
|
|
return false, nil
|
|
} else if v[0] == 0x01 {
|
|
return true, nil
|
|
}
|
|
return strconv.ParseBool(string(v))
|
|
case string:
|
|
return strconv.ParseBool(v)
|
|
case *sql.NullInt64:
|
|
return v.Int64 > 0, nil
|
|
case *sql.NullInt32:
|
|
return v.Int32 > 0, nil
|
|
default:
|
|
return false, fmt.Errorf("unknow type %T as bool", src)
|
|
}
|
|
}
|