92 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package orm
 | 
						|
 | 
						|
import ()
 | 
						|
 | 
						|
type fieldError struct {
 | 
						|
	name string
 | 
						|
	err  error
 | 
						|
}
 | 
						|
 | 
						|
func (f *fieldError) Name() string {
 | 
						|
	return f.name
 | 
						|
}
 | 
						|
 | 
						|
func (f *fieldError) Error() error {
 | 
						|
	return f.err
 | 
						|
}
 | 
						|
 | 
						|
func NewFieldError(name string, err error) IFieldError {
 | 
						|
	return &fieldError{name, err}
 | 
						|
}
 | 
						|
 | 
						|
// non cleaned field errors
 | 
						|
type fieldErrors struct {
 | 
						|
	errors    map[string]IFieldError
 | 
						|
	errorList []IFieldError
 | 
						|
}
 | 
						|
 | 
						|
func (fe *fieldErrors) Get(name string) IFieldError {
 | 
						|
	return fe.errors[name]
 | 
						|
}
 | 
						|
 | 
						|
func (fe *fieldErrors) Set(name string, value IFieldError) {
 | 
						|
	fe.errors[name] = value
 | 
						|
}
 | 
						|
 | 
						|
func (fe *fieldErrors) List() []IFieldError {
 | 
						|
	return fe.errorList
 | 
						|
}
 | 
						|
 | 
						|
func NewFieldErrors() IFieldErrors {
 | 
						|
	return &fieldErrors{errors: make(map[string]IFieldError)}
 | 
						|
}
 | 
						|
 | 
						|
type Manager struct {
 | 
						|
	ins    Modeler
 | 
						|
	inited bool
 | 
						|
}
 | 
						|
 | 
						|
// func (m *Manager) init(model reflect.Value) {
 | 
						|
// 	elm := model.Elem()
 | 
						|
// 	for i := 0; i < elm.NumField(); i++ {
 | 
						|
// 		field := elm.Field(i)
 | 
						|
// 		if _, ok := field.Interface().(Fielder); ok && field.CanSet() {
 | 
						|
// 			if field.Elem().Kind() != reflect.Struct {
 | 
						|
// 				field.Set(reflect.New(field.Type().Elem()))
 | 
						|
// 			}
 | 
						|
// 		}
 | 
						|
// 	}
 | 
						|
// }
 | 
						|
 | 
						|
func (m *Manager) Init(model Modeler, args ...interface{}) Modeler {
 | 
						|
	if m.inited {
 | 
						|
		return m.ins
 | 
						|
	}
 | 
						|
	m.inited = true
 | 
						|
	m.ins = model
 | 
						|
	skipInitial := false
 | 
						|
	if len(args) > 0 {
 | 
						|
		if b, ok := args[0].(bool); ok && b {
 | 
						|
			skipInitial = true
 | 
						|
		}
 | 
						|
	}
 | 
						|
	_ = skipInitial
 | 
						|
	return model
 | 
						|
}
 | 
						|
 | 
						|
func (m *Manager) IsInited() bool {
 | 
						|
	return m.inited
 | 
						|
}
 | 
						|
 | 
						|
func (m *Manager) Clean() IFieldErrors {
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
func (m *Manager) CleanFields(name string) IFieldErrors {
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
func (m *Manager) GetTableName() string {
 | 
						|
	return getTableName(m.ins)
 | 
						|
}
 |