(typ reflect.Type)
| 139 | } |
| 140 | |
| 141 | func (d *Dialect) arrayElemAppender(typ reflect.Type) schema.AppenderFunc { |
| 142 | if typ.Implements(driverValuerType) { |
| 143 | return arrayAppendDriverValue |
| 144 | } |
| 145 | if typ == timeType { |
| 146 | return appendTimeElemValue |
| 147 | } |
| 148 | |
| 149 | switch typ.Kind() { |
| 150 | case reflect.String: |
| 151 | return appendStringElemValue |
| 152 | case reflect.Slice: |
| 153 | if typ.Elem().Kind() == reflect.Uint8 { |
| 154 | return appendBytesElemValue |
| 155 | } |
| 156 | case reflect.Ptr: |
| 157 | return schema.PtrAppender(d.arrayElemAppender(typ.Elem())) |
| 158 | } |
| 159 | return schema.Appender(d, typ) |
| 160 | } |
| 161 | |
| 162 | func appendTimeElemValue(gen schema.QueryGen, b []byte, v reflect.Value) []byte { |
| 163 | ts := v.Convert(timeType).Interface().(time.Time) |
no test coverage detected