Carapacik / swagger_parser

Dart package that takes an OpenApi definition file and generates REST clients based on retrofit and data classes for your project.
https://pub.dev/packages/swagger_parser
MIT License
87 stars 33 forks source link

AllOf duplication filds #204

Open dickermoshe opened 4 months ago

dickermoshe commented 4 months ago

Generated

// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, unused_import, invalid_annotation_target

import 'package:freezed_annotation/freezed_annotation.dart';

part 'model_c.freezed.dart';
part 'model_c.g.dart';

@Freezed()
class ModelC with _$ModelC {
  const factory ModelC({
    required String foo,
    @JsonKey(name: 'duplicated_optional')
    required String duplicatedOptional0,
    @JsonKey(name: 'duplicated_optional')
    required int duplicatedOptional1,
    @JsonKey(name: 'duplicated_required')
    required String duplicatedRequired0,
    @JsonKey(name: 'duplicated_required')
    required int duplicatedRequired1,
    required String bar,
    required String baz,
  }) = _ModelC;

  factory ModelC.fromJson(Map<String, Object?> json) => _$ModelCFromJson(json);
}

Schema

openapi: 3.0.0
info:
  title: TestApi
  version: 1.0.0
paths:
  /test:
    get:
      summary: Test
      operationId: testApi
      responses:
        "200":
          description: Ok
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ModelC"
components:
  schemas:
    ModelA:
      required:
        - duplicated_required
      properties:
        foo:
          type: string
        duplicated_optional:
           type: string
        duplicated_required:
           type: string
    ModelB:
      required:
        - duplicated_required
      properties:
        bar:
          type: string
        duplicated_optional:
           type: integer
        duplicated_required:
           type: integer
    ModelC:
      allOf:
        - $ref: "#/components/schemas/ModelA"
        - $ref: "#/components/schemas/ModelB"
        - type: object
          properties:
            baz:
              type: string