Skip to content

Commit 591602a

Browse files
committed
feat(causer): polymorphic relation
1 parent 35bf2f8 commit 591602a

File tree

4 files changed

+20
-16
lines changed

4 files changed

+20
-16
lines changed

database/migrations/create_api_logs_table.php.stub

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class CreateApiLogsTable extends Migration
2222
$table->json('request_data');
2323
$table->json('request_headers');
2424
$table->json('response_data');
25-
$table->foreignId('user_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate();
25+
$table->morphs('causer', 'causer');
2626
$table->timestamps();
2727
});
2828
}

src/Http/Middleware/LogApiRequest.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace CodeTech\ApiLogs\Http\Middleware;
44

55
use Closure;
6-
use CodeTech\ApiLogs\Models\ApiLog;
76
use Illuminate\Http\Request;
87

98
class LogApiRequest
@@ -33,17 +32,14 @@ public function terminate(Request $request, $response): void
3332
{
3433
$request->end = microtime(true);
3534

36-
$data = [
35+
auth()->user()->apiLogs()->create([
3736
'duration' => $request->end - $request->start,
3837
'url' => $request->fullUrl(),
3938
'method' => $request->getMethod(),
4039
'ip' => $request->getClientIp(),
4140
'request_data' => $request->all(),
4241
'request_headers' => $request->headers->all(),
4342
'response_data' => json_decode($response->getContent()),
44-
'user_id' => auth()->id(),
45-
];
46-
47-
ApiLog::create($data);
43+
]);
4844
}
4945
}

src/Models/ApiLog.php

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace CodeTech\ApiLogs\Models;
44

5-
use App\Models\User;
65
use Illuminate\Database\Eloquent\Model;
76

87
class ApiLog extends Model
@@ -18,7 +17,6 @@ class ApiLog extends Model
1817
'request_data',
1918
'request_headers',
2019
'response_data',
21-
'user_id',
2220
];
2321

2422
/**
@@ -32,13 +30,9 @@ class ApiLog extends Model
3230
'updated_at' => 'datetime:d/m/Y H:i',
3331
];
3432

35-
/**
36-
* Get the user that owns this session log.
37-
*
38-
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
39-
*/
40-
public function user()
33+
34+
public function causer()
4135
{
42-
return $this->belongsTo(User::class);
36+
return $this->morphTo();
4337
}
4438
}

src/Traits/HasApiLogs.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace CodeTech\ApiLogs\Traits;
4+
5+
use CodeTech\ApiLogs\Models\ApiLog;
6+
use Illuminate\Database\Eloquent\Relations\MorphMany;
7+
8+
trait HasApiLogs
9+
{
10+
public function apiLogs(): MorphMany
11+
{
12+
return $this->morphMany(ApiLog::class, 'causer');
13+
}
14+
}

0 commit comments

Comments
 (0)