Advertisement
CyberN00b

Untitled

Sep 28th, 2023
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.83 KB | None | 0 0
  1. Таблицы: // а где авторизация и аутентификация?
  2. -Операции(id отправителя, id получателя, статус операции, сумма перевода) // нужно еще время создании операции и время изменения операции, также стоит создать историю операций
  3. id операции: uuid
  4. id отправителя: uuid
  5. id получателя: uuid (при снятии/зачислении средств поле принимает значение NULL)
  6. статус операции: enum
  7. -успешно
  8. -в обработке
  9. -провалено
  10. тип операции: enum
  11. -перевод
  12. -снятие средств
  13. -зачисление средств
  14. сумма перевода: bigint
  15.  
  16. -Баланс пользователя: (id пользователя, баланс)
  17. id пользователя: uuid
  18. баланс: bigint
  19. handlers:
  20. -зачисления/снятия средств:
  21. обрабатывает json, содержащий поля id операции, id пользователя, тип операции (зачисление/снятие средств/перевод), является, как основной, так и вспомогательной операцией.
  22. при снятии средств, проверяет возможность снятия (хватает ли денег на балансе для осуществления операции), если операция осуществима, в таблице 1
  23. изменяется статус операции на succesful, в противном случает - failed. При успешном статусе изменяет балансы пользователей.
  24. -перевод:
  25. обрабатывает json, содержащий поля id операции, id отправителя, id получателя. Создает строку в базе данных и создает статус "в обработке" для обработки балансов пользователей.
  26. -создание пользователя:
  27. обрабатывает json, содежащий поля id пользователя, первоначальный баланс(поле может быть пустым). создает пользователя в таблице 2. при наличии поля с первоначальным балансом
  28. создается строка в таблицу с операциями, как зачисление.
  29.  
  30. Примечание: можно объединить две ручки в одном, обрабатывая два вхождения в базу данных, как один постгрес-запрос.
  31.  
  32.  
  33.  
  34.  
  35. openapi: 3.0.0
  36. info:
  37. version: 1.0.0
  38. servers: 'qwerty'
  39. title: ''
  40.  
  41. paths: // зачем везде префикс /example?
  42. /example/operations:
  43. post:
  44. request:
  45. parameters: // нужен токен идемпотентности, так же нужно прикидывать токен сессии
  46. user_id:
  47. type: uuid
  48. operation_type: // при создании енама ты должен его полностью описать. Пример: https://pastebin.com/GukHEMgj
  49. type: enum
  50. example: 'sending'
  51. operation_status:
  52. type: enum // ^^ same
  53. example: 'succesful'
  54. summary: // это что? Сумма? Как будто неправильный нейминг
  55. type: int64
  56. responce: // нормальное опиши статусы
  57. '200':
  58. description: OK
  59. parameters: // а зачем мы это возвращаем? Подумай над тем, что мы должны возвращать
  60. user_id:
  61. type: uuid
  62. operation_type:
  63. type: enum
  64. example: 'sending'
  65. operation_status:
  66. type: enum
  67. example: 'succesful'
  68. summary:
  69. type: int64
  70. '400':
  71. description: BadRequest
  72. parameters:
  73. null: null
  74. '404':
  75. description: NotFound
  76. parameters:
  77. null: null
  78. /example/transfer:
  79. post:
  80. request:
  81. parameters: // ^^ same про токены
  82. sender_id:
  83. type: uuid
  84. recipient_id:
  85. type: uuid
  86. operation_type:
  87. type: enum
  88. example: 'sending'
  89. summary: // скорее value
  90. type: int64
  91. rescponce:
  92. '200':
  93. description: OK
  94. parameters: // ^^ same про параметры
  95. sender_id:
  96. type: uuid
  97. recipient_id:
  98. type: uuid
  99. operation_type:
  100. type: enum
  101. example: 'sending'
  102. summary:
  103. type: int64
  104. '400':
  105. description: BadRequest
  106. parameters:
  107. null: null
  108. '404':
  109. description: NotFound
  110. parameters:
  111. null: null
  112. /example/user: // это что? Зачем?
  113. post:
  114. request:
  115. parameters:
  116. username:
  117. type: string
  118. responce:
  119. '200':
  120. description: OK
  121. parameters:
  122. user_id:
  123. type: uuid
  124. '400':
  125. description: BadRequest
  126. parameters:
  127. null: null
  128. /example/balance/{user_id}: // нельзя так делать, любой пользователь может узнать баланс другого пользователя; делай по-другому
  129. get:
  130. request:
  131. parameters:
  132. user_id:
  133. type: uuid
  134. responce:
  135. '200':
  136. description: OK
  137. parameters:
  138. user_id:
  139. type: uuid
  140. balance:
  141. type: int64
  142. '400':
  143. description: BadRequest
  144. parameters:
  145. null: null
  146. '404':
  147. description: NotFound
  148. parameters:
  149. null: null
  150.  
  151.  
  152. Итог:
  153. 1) Везде добавь description и опиши, что он делает
  154. 2) Укажи везде какие поля required, а какие опциональны
  155. 3) Нет аутентификации и авторизации
  156. 4) Неправильная ручка получения баланса
  157. 5) !!!!!!!научись писать response!!!!!!!!!!
  158.  
  159.  
  160.  
  161.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement