/
githubmirror
/
xorm
Обзор
Документация
Войти
/
githubmirror
/
xorm
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
core/scan.go
70 строк
1 KB
Lunny Xiao
Fix comments (#1896)
12 апр 2021, 11:00
12 апр 2021, 11:00
ce2a743
Код
Авторство
О чём код?
// Copyright 2019 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 core import ( "database/sql/driver" "fmt" "time" ) // NullTime defines a customize type NullTime type NullTime time.Time var ( _ driver.Valuer = NullTime{} ) // Scan implements driver.Valuer func (ns *NullTime) Scan(value interface{}) error { if value == nil { return nil } return convertTime(ns, value) } // Value implements the driver Valuer interface. func (ns NullTime) Value() (driver.Value, error) { if (time.Time)(ns).IsZero() { return nil, nil } return (time.Time)(ns).Format("2006-01-02 15:04:05"), nil } func convertTime(dest *NullTime, src interface{}) error { // Common cases, without reflect. switch s := src.(type) { case string: t, err := time.Parse("2006-01-02 15:04:05", s) if err != nil { return err } *dest = NullTime(t) return nil case []uint8: t, err := time.Parse("2006-01-02 15:04:05", string(s)) if err != nil { return err } *dest = NullTime(t) return nil case time.Time: *dest = NullTime(s) return nil case nil: default: return fmt.Errorf("unsupported driver -> Scan pair: %T -> %T", src, dest) } return nil } // EmptyScanner represents an empty scanner type EmptyScanner struct { } // Scan implements func (EmptyScanner) Scan(src interface{}) error { return nil }