func(s *sqlite3) DataTypeOf(typ reflect.Value) string { switch typ.Kind() { case reflect.Bool: return"bool" case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uintptr: return"integer" case reflect.Int64, reflect.Uint64: return"bigint" case reflect.Float32, reflect.Float64: return"real" case reflect.String: return"text" case reflect.Array, reflect.Slice: return"blob" case reflect.Struct: if _, ok := typ.Interface().(time.Time); ok { return"datetime" } } panic(fmt.Sprintf("invalid sql type %s (%s)", typ.Type().Name(), typ.Kind())) }
func(s *sqlite3) TableExistSQL(tableName string) (string, []interface{}) { args := []interface{}{tableName} return"SELECT name FROM sqlite_master WHERE type='table' and name = ?", args }
for i := 0; i < modelType.NumField(); i++ { p := modelType.Field(i) if !p.Anonymous && ast.IsExported(p.Name) { field := &Field{ Name: p.Name, Type: d.DataTypeOf(reflect.Indirect(reflect.New(p.Type))), } if v, ok := p.Tag.Lookup("geeorm"); ok { field.Tag = v } schema.Fields = append(schema.Fields, field) schema.FieldNames = append(schema.FieldNames, p.Name) schema.fieldMap[p.Name] = field } } return schema }
func(s *sqlite3) DataTypeOf(typ reflect.Value) string { switch typ.Kind() { case reflect.Bool: return"bool" case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uintptr: return"integer" case reflect.Int64, reflect.Uint64: return"bigint" case reflect.Float32, reflect.Float64: return"real" case reflect.String: return"text" case reflect.Array, reflect.Slice: return"blob" case reflect.Struct: if _, ok := typ.Interface().(time.Time); ok { return"datetime" } } panic(fmt.Sprintf("invalid sql type %s (%s)", typ.Type().Name(), typ.Kind())) }
func(s *sqlite3) TableExistSQL(tableName string) (string, []interface{}) { args := []interface{}{tableName} return"SELECT name FROM sqlite_master WHERE type='table' and name = ?", args }
for i := 0; i < modelType.NumField(); i++ { p := modelType.Field(i) if !p.Anonymous && ast.IsExported(p.Name) { field := &Field{ Name: p.Name, Type: d.DataTypeOf(reflect.Indirect(reflect.New(p.Type))), } if v, ok := p.Tag.Lookup("geeorm"); ok { field.Tag = v } schema.Fields = append(schema.Fields, field) schema.FieldNames = append(schema.FieldNames, p.Name) schema.fieldMap[p.Name] = field } } return schema }