Passed
Push — master ( 03e013...bd5966 )
by Anatoly
01:18 queued 14s
created

UpdateController::handle()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 6
nc 2
nop 1
dl 0
loc 13
c 1
b 0
f 0
cc 2
ccs 7
cts 7
cp 1
crap 2
rs 10
1
<?php declare(strict_types=1);
2
3
namespace App\Controller\Entry;
4
5
/**
6
 * Import classes
7
 */
8
use App\ContainerAwareTrait;
9
use App\Http\ResponseFactory;
10
use Psr\Http\Message\ResponseInterface;
11
use Psr\Http\Message\ServerRequestInterface;
12
use Psr\Http\Server\RequestHandlerInterface;
13
14
/**
15
 * @Route(
16
 *   name="api.entry.update",
17
 *   path="/api/v1/entry/{id<\d+>}",
18
 *   methods={"PATCH"},
19
 *   middlewares={
20
 *     "App\Middleware\RequestBodyValidationMiddleware",
21
 *   },
22
 * )
23
 *
24
 * @OpenApi\Operation(
25
 *   tags={"Entry"},
26
 *   summary="Update an entry",
27
 *   requestBody=@OpenApi\RequestBody(
28
 *     content={
29
 *       "application/json": @OpenApi\MediaType(
30
 *         schema=@OpenApi\Schema(
31
 *           type="object",
32
 *           properties={
33
 *             "name"=@OpenApi\SchemaReference(
34
 *               class="App\Entity\Entry",
35
 *               property="name",
36
 *             ),
37
 *           },
38
 *         ),
39
 *       ),
40
 *     },
41
 *   ),
42
 *   responses={
43
 *     200: @OpenApi\ResponseReference(
44
 *       class="App\Http\ResponseFactory",
45
 *       method="emptyOk",
46
 *     ),
47
 *     "default": @OpenApi\ResponseReference(
48
 *       class="App\Http\ResponseFactory",
49
 *       method="error",
50
 *     ),
51
 *   },
52
 * )
53
 */
54
final class UpdateController implements RequestHandlerInterface
55
{
56
    use ContainerAwareTrait;
57
58
    /**
59
     * {@inheritDoc}
60
     *
61
     * @param ServerRequestInterface $request
62
     *
63
     * @return ResponseInterface
64
     */
65 2
    public function handle(ServerRequestInterface $request) : ResponseInterface
66
    {
67 2
        $id = (int) $request->getAttribute('id');
68
69 2
        $service = $this->container->get('service.entry');
70
71 2
        if (!$service->existsById($id)) {
72 1
            return (new ResponseFactory)->error('The requested entry was not found.', [], 404);
73
        }
74
75 1
        $service->updateById($id, $request->getParsedBody());
76
77 1
        return (new ResponseFactory)->emptyOk(200);
78
    }
79
}
80