stash-box/pkg/api/sql_resolver.go

69 lines
1.2 KiB
Go

package api
import (
"database/sql"
"reflect"
"github.com/stashapp/stash-box/pkg/models"
"github.com/stashapp/stash-box/pkg/utils"
)
type validator interface {
IsValid() bool
}
func resolveNullString(value sql.NullString) *string {
if value.Valid {
return &value.String
}
return nil
}
func validateEnum(value interface{}) bool {
v, ok := value.(validator)
if !ok {
// shouldn't happen
return false
}
return v.IsValid()
}
func resolveEnum(value sql.NullString, out interface{}) bool {
if !value.Valid {
return false
}
outValue := reflect.ValueOf(out).Elem()
outValue.SetString(value.String)
return validateEnum(out)
}
func resolveEnumString(value string, out interface{}) bool {
if value == "" {
return false
}
outValue := reflect.ValueOf(out).Elem()
outValue.SetString(value)
return validateEnum(out)
}
func resolveSQLiteDate(value models.SQLiteDate) (*string, error) {
if value.Valid {
result := utils.GetYMDFromDatabaseDate(value.String)
return &result, nil
}
return nil, nil
}
func resolveNullInt64(value sql.NullInt64) (*int, error) {
if value.Valid {
result := int(value.Int64)
return &result, nil
}
return nil, nil
}