aleksander-git / data-analyzer

6 stars 2 forks source link

buf #10

Open aleksander-git opened 1 month ago

aleksander-git commented 1 month ago

Для описания API будем использовать proto файлы с помощью buf (https://github.com/bufbuild/buf)

Этого даст нам возможность хранить описание всего API в proto-файлах.

Понадобятся следующие плагины:

Структура будет следующая: /grpc/proto - здесь файлы конфигурации buf /grpc/proto/v1 - сами прото файлы /grpc/gen/v1 - сгенерированный код

TODO Подготовить структуру, файлы конфигурации buf и команды для генерации кода

Для работы с buf из РФ нужен будет VPN

semyadmin commented 1 month ago

Вопрос - нужен ли нам линтер для протофайлов? Если да, то какой? По умолчанию есть DEFAULT, но там, например имена в snake_lower_case а не camelCase и методам надо дописывать Service. Если подойдет можно и по умолчанию оставить. И еще проверка с версией протофайла тоже есть в DEFAULT.

aleksander-git commented 1 month ago

Да, минимальный набор линтеров нужно оставить + проверка версий тоже удобно

semyadmin commented 1 month ago

Решил закачать плагины для бафа локально по гайду https://eliofery.github.io/blog/2024-02-03-kodogeneraciya-protobuf-fajlov-ispolzuya-plagin-buf-backend.html Получаются исталлы локальные. Их надо в репозиторий тащить или нет? Или все таки оставить плагины как например buf.build/grpc/go?

semyadmin commented 1 month ago

Еще момент - buf.build/bufbuild/validate-go - я зашел на гит https://github.com/bufbuild/protoc-gen-validate/tree/main у них и там написано - мол,мы рекомендуем новые проекты на https://github.com/bufbuild/protovalidate переходить (но там версия 0.64 стабильная). Переходим или этот оставляем? UPD. Правда пока непонятно, как его локально юзать. И похоже что никак - чисто на buf цепляется

aleksander-git commented 1 month ago

Первый вопрос: в репозиторий тащить не надо, вся кодогенерация будет локально. Второй вопрос: по возможности лучше использовать рекомендуемые инструменты

semyadmin commented 1 month ago

По поводу структуры - именно так делаем? /grpc/proto - здесь файлы конфигурации buf /grpc/proto/v1 - сами прото файлы В документации buf там вроде рекомендуют в корне файлы конфигурации. Но мне кажется лучше в /grpc а не в /grpc/proto И еще в документации написан пример - там так └── proto ├── google │ └── type │ └── datetime.proto └── pet └── v1 └── pet.proto То есть сначала папка proto, потом модуль (или пакет?), потом уже версия паекта и в версии протофайл На мой взгляд лучше так /grpc - здесь файлы конфигурации buf /grpc/proto - сами прото файлы /grpc/gen - сгенерированный код Генерироваться будет так же как в proto с папками примерно так

└── gen ├── google │ └── type │ └── datetime.pb.go └── pet └── v1 └── pet.pb.go А плагин openapiv2 как я понимаю генерирует swagger - это в папку /grpc/docs?

semyadmin commented 4 weeks ago

Сделал скрипты buf для генерации файлов. Скорее всего нужна документация или презнтация - делаем? :) Если да то куда? Если что - ветка buf называется

semyadmin commented 3 weeks ago

Сгенерировал файлы для демонстрации работы buf generate Запускаем файл test_file.go Переходим по адресу http://localhost:8080/version - и видим ответ от сервера в виде JSON файла

semyadmin commented 3 weeks ago

Добавлен docker-compose.yaml для запуска Swagger UI. Доступен по адресу http://localhost:8086