-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTraceController.php
More file actions
72 lines (57 loc) · 1.69 KB
/
TraceController.php
File metadata and controls
72 lines (57 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
namespace SyncEngine\Controller\Admin;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Attribute\Route;
use SyncEngine\Controller\Admin\Abstract\EntityController;
use SyncEngine\Model\Enum\TraceStatus;
use SyncEngine\Model\TraceModel;
class TraceController extends EntityController
{
#[Route( '/json/trace', 'json_trace' )]
public function handleJson( Request $request ): JsonResponse
{
$id = $request->request->get( 'id' );
$id = ( $id && is_numeric( $id ) ) ? $id : 0;
$model = ( $id ) ? TraceModel::get( $id ) : TraceModel::create();
return $this->_handleJsonRequest( $model, $request );
}
protected function view( TraceModel $trace, Request $request ): array
{
$file = $request->request->get( 'file' );
if ( $file ) {
$info = $request->request->get( 'info' );
$info = ( $info ) ? json_decode( $info, true ) : [];
$iteration = (int) $request->request->get( 'iteration' );
$log = $trace->getStoredLog( $file, $iteration ?: null );
$info['iteration'] = $iteration;
$info['trace'] = $trace->normalize();
return [
'success' => ! empty( $log ),
'data' => [
'Log' => $log,
'Info' => $info,
]
];
}
$fullTrace = $trace->getFullTrace();
return [
'success' => ! empty( $fullTrace ),
'data' => [
'Trace' => $fullTrace,
'Info' => $trace->normalize(),
]
];
}
protected function kill( TraceModel $trace ): array
{
$trace->kill();
// Just for UI, does not story anything.
$trace->setStatus( TraceStatus::STOPPED );
return [
'success' => true,
'close' => true,
'entity' => $trace->normalize( true, true ),
];
}
}