| 427 | } |
| 428 | |
| 429 | func parseFieldSpec(field reflect.StructField, xlang bool, trackRef bool) (FieldSpec, error) { |
| 430 | parsed, err := parseFieldTag(field) |
| 431 | if err != nil { |
| 432 | return FieldSpec{}, err |
| 433 | } |
| 434 | spec := FieldSpec{ |
| 435 | Name: SnakeCase(field.Name), |
| 436 | GoType: field.Type, |
| 437 | TagID: TagIDUseFieldName, |
| 438 | Ignore: parsed.ignore, |
| 439 | HasTag: parsed.hasTag, |
| 440 | RawTag: parsed.rawTag, |
| 441 | Nullable: parsed.nullable, |
| 442 | NullableSet: parsed.nullableSet, |
| 443 | Ref: parsed.ref, |
| 444 | RefSet: parsed.refSet, |
| 445 | } |
| 446 | if parsed.idSet { |
| 447 | spec.TagID = parsed.tagID |
| 448 | } |
| 449 | if parsed.ignore { |
| 450 | return spec, nil |
| 451 | } |
| 452 | typeSpec, err := resolveFieldTypeSpec(field, parsed, xlang, trackRef) |
| 453 | if err != nil { |
| 454 | return FieldSpec{}, err |
| 455 | } |
| 456 | spec.Type = typeSpec |
| 457 | return spec, nil |
| 458 | } |
| 459 | |
| 460 | func parseFieldTag(field reflect.StructField) (parsedFieldTag, error) { |
| 461 | parsed := parsedFieldTag{tagID: TagIDUseFieldName} |