UpdateDiscussionRequest.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace App\Http\Requests\V3;
  3. use App\Models\Discussion;
  4. use Illuminate\Foundation\Http\FormRequest;
  5. use Illuminate\Validation\Rule;
  6. /**
  7. * `PATCH /v3/discussions/{discussion}` 的入参:局部更新,只改传了的字段。
  8. *
  9. * title / status / type / severity 只对话题有效,回复传了 422——这一条与
  10. * severity 是否匹配最终 type,都要看库里那条记录,在 Service 里判。
  11. * 批注相关的规则(锚点只有批注收、commentary 正文格式、不能与评论线程互转、没有 status)
  12. * 同样取决于那条记录的类型,也在 Service 里判。
  13. */
  14. class UpdateDiscussionRequest extends FormRequest
  15. {
  16. public function authorize(): bool
  17. {
  18. return true;
  19. }
  20. /**
  21. * @return array<string, array<int, mixed>>
  22. */
  23. public function rules(): array
  24. {
  25. return [
  26. 'title' => ['sometimes', 'string', 'max:256'],
  27. 'content' => ['sometimes', 'nullable', 'string', 'max:20000'],
  28. 'status' => ['sometimes', 'string', Rule::in(Discussion::STATUSES)],
  29. 'type' => ['sometimes', 'string', Rule::in(Discussion::COMMENT_TYPES)],
  30. 'severity' => ['sometimes', 'nullable', 'string'],
  31. 'pos_start' => ['sometimes', 'nullable', 'integer', 'min:0'],
  32. 'pos_end' => ['sometimes', 'nullable', 'integer', 'min:0'],
  33. 'quote_exact' => ['sometimes', 'nullable', 'string', 'max:1024'],
  34. 'quote_prefix' => ['sometimes', 'nullable', 'string', 'max:1024'],
  35. 'quote_suffix' => ['sometimes', 'nullable', 'string', 'max:1024'],
  36. ];
  37. }
  38. }