clean_api_codegen

Генератор data/domain слоя по OpenAPI (REST, JSON) с раскладкой по clean architecture.

Возможности

  • Генерация структуры data и domain из OpenAPI спецификации
  • Разбиение по сущностям: отдельные файлы для DTO/Entity/Repository/UseCase
  • Поддержка query‑параметров
  • Имена usecase без лишнего GetGet...
  • Запуск одной командой, без build_runner
  • Автоматическое добавление зависимостей в pubspec.yaml (можно отключить вручную)

Установка

Добавьте пакет в dev_dependencies.

dev_dependencies:
  clean_api_codegen: ^0.1.1

Быстрый старт

Запуск генерации:

dart run clean_api_codegen:clean_api_codegen --spec lib/features/matches/v1.yaml

Переопределить имя папки фичи:

dart run clean_api_codegen:clean_api_codegen --spec lib/features/matches/v1.yaml --feature matches

Структура, которую создаёт генератор

lib/features/<feature>/
  data/
    models/
      <entity>_dto.dart
    datasources/
      <entity>_remote_data_source.dart
    repositories/
      <entity>_repository_impl.dart
  domain/
    entities/
      <entity>.dart
    repositories/
      <entity>_repository.dart
    usecases/
      get_<method>.dart

Как формируются имена

  • <feature> берётся из info.title в YAML или из имени файла, либо из --feature
  • DTO: <Entity>Dto
  • Entity: <Entity>
  • Repository: <Entity>Repository
  • UseCase:
    • если operationId есть и начинается с get, используется GetXxx
    • иначе Get<MethodName>

Что меняется в проекте

  • Генератор создаёт/перезаписывает файлы в lib/features/<feature>/...
  • Добавляет зависимости в pubspec.yaml:
    • equatable
    • dartz
    • http

Ограничения

  • Только REST (GET/POST)
  • Только application/json
  • Поддерживается ответ с data массивом и $ref на объект
  • Генерация не трогает UI и DI, только data/domain