Skip to content

Instantly share code, notes, and snippets.

@vitalibaranov
Created January 22, 2024 13:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vitalibaranov/6ae17e07d9442e8513be0c1dcbd3a409 to your computer and use it in GitHub Desktop.
Save vitalibaranov/6ae17e07d9442e8513be0c1dcbd3a409 to your computer and use it in GitHub Desktop.
Декомпозиция мутации
Декомпозиция мутация
[tms-api] задженерить тестовые обвязки под mutation (сейчас все сделано под query)
[tms-api] мониторинг мутаций (запросы в разрезе mutations/queries) ???
[tms-api] описание мутации в документации
----
а) Создание заявки:
[tms-hiring-request] вынести бизнес логику проверки пермишена на создание, валидации tms(существование менеджера) (дубль существующей ручки, выпил старой)
[tms-api] резолвер получения ареек с фильтром по названию (id-ки нужны для передачи в резолвер)
[tms-api] мутация создания заявки
[tms]выпил ручки создания завявки
----
b) Создание отклика
[tms-core] POST привязки кандидата нв вакансию (проверка пермишена, валидация id-к кандидата и вакансии, определение этапа прикрепления, возврат кастомной ошибки, пуш в очередь автофильтра)
[tms-api] мутация создания отклика
[tms-api] документация, пример создания отклика
-- Перевод автофильтра на кафку ???
[dd] кафка таскс топик автофильтра
[tms-core] продюсер автофильтра при прикреплении кандидата к вакансии
[tms-core] консьюмер автофильтра
[tms] продюсер автофильтра, выпилить сендера rabbit автофильтра
[tms] выпил листенер rabbit автофильтре
[dd] выпилить убрать кофниги очереди автофильтр
[exp] curl удаления очереди автофильтра
-----
Контракт
a) Создания заявки:
type Mutation {
createHiringRequest(hiringRequestCreate: HiringRequestCreatePayload!): HiringRequestCreate!
}
union HiringRequestCreate = HiringRequestItem | HiringRequestCreateError // в системе уже есть union HiringRequest - новый добавляется из-за специфических ошибок создания
type HiringRequestCreateError {
errorType: HiringRequestCreateErrorType
errorData: Json
message: String
}
enum HiringRequestCreateErrorType {
ACCESS_DENIED
VALIDATION
}
input HiringRequestCreatePayload {
areaIds: [Int]!
creationReason: HiringRequestCreationReason
department: String
description: String
approvingManagerId: Int!
proposedDateOfClose: Instant
salary: HiringRequestSalaryRange
}
input HiringRequestSalaryRange {
salaryFrom: Int,
salaryTo: Int
}
{
areas(name: String) {
items {
id!
name!
parentId
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment