Table of Contents |
---|
Specification
...
- Verify the validity of access token
- in case of error return 401 ('Access denied')
- Check user scope merge_candidate:assign in order to perform this action
- in case of error generate 401 response ('Invalid scopes')
- Verify the validity of access token
Verify role
Extract from token:
...
- Priority by records which already has some decisions
- join table manual_merge_requests on manual_merge_requests.merge_candidate_id=manual_merge_candidates.merge_candidate_id and manual_merge_requests.assignee_id<>$user_id
- choose manual_merge_requests.merge_candidate_id order by count() DESC
- manual_merge_candidate must satisfy constraint: merge_candidate_id+assignee_id in table manual_merge_requests
Validate request
- Check whether this user doesn't have other merge_requests in status='NEW'
- check manual_merge_requests by assignee_id=$user_id and status='NEW'
- in case of error return conflict error 'CONFLICT' - 'Assignee is not allowed to ask for new merge request'
- check manual_merge_requests by assignee_id=$user_id and status='NEW'
- Check amount of postponed merge_requests for current employee_id
- check qty from manual_merge_requests by assignee_id=$user_id and status='POSTPONED'
- in case of qty<postponed_requests_limit return conflict error 'CONFLICT' - 'Assignee reached limit in postponed merge_requests'
- check qty from manual_merge_requests by assignee_id=$user_id and status='POSTPONED'
- Check there is no record for merge_candidate_id+assignee_id
- in table manual_merge_requests fetch a record by condition merge_candidate_id+$user_id
- in case of such record exists return conflict error 'CONFLICT' - 'Assignee can review merge_request only once'
- in table manual_merge_requests fetch a record by condition merge_candidate_id+$user_id
- Check whether merge_candidate_id can be reviewed
- verify merge_candidate_id has status NEW and assignee_id is null in table manual_merge_candidates
- in case of error return conflict error 'CONFLICT' - 'Invalid merge_request to be reviewed'
- verify merge_candidate_id has status NEW and assignee_id is null in table manual_merge_candidates
...
Update assignee for merge_candidate
- Update assignee_id in manual_merge_candidates to $employee_id
- Update updated_at = now()
- Update updated_at = $user_id
manual_merge_candidates
Field | Value |
---|---|
assignee_id | $user_id |
updated_at | now() |
updated_at | $user_id |
Make merge_request for assignee
...
column | value |
---|---|
id | UUID |
merge_candidate_id | $merge_candidate_id |
assignee_id | $user_id |
inserted_at | now() |
updated_at | now() |
status | NEW |
comment | null |
Add a record to audit log
After status was changed add new record to audit_log
field | value |
---|---|
id | generate UUID |
actor_id | $user_id |
resource | 'manual_merge_process' |
resource_id | $manual_merge_process.id |
changeset | {status:NEW} |
inserted_at | DATETIME |