Skip to content

Commit d1085d8

Browse files
authored
Merge pull request #9 from binafy/add-support-ulid-uuid
[0.x] Add support `UUID` & `ULID`
2 parents 8f3c3c3 + 70bbf71 commit d1085d8

File tree

5 files changed

+77
-16
lines changed

5 files changed

+77
-16
lines changed

config/user-monitoring.php

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,32 @@
77
* You can customize the user guard, table, foreign key, and ... .
88
*/
99
'user' => [
10+
/*
11+
* User model.
12+
*/
1013
'model' => 'App\Models\User',
14+
15+
/*
16+
* Foreign Key column name.
17+
*/
1118
'foreign_key' => 'user_id',
12-
'tables' => 'users',
19+
20+
/*
21+
* Users table name.
22+
*/
23+
'table' => 'users',
24+
25+
/*
26+
* The correct guard.
27+
*/
1328
'guard' => 'web',
29+
30+
/*
31+
* If you are using uuid or ulid you can change it for type of foreign_key.
32+
*
33+
* When you are using ulid or uuid, you need to add related trait into the models.
34+
*/
35+
'foreign_key_type' => 'id', // uuid, ulid, id
1436
],
1537

1638
/*

database/migrations/2023_07_22_230401_create_visits_monitoring_table.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?php
22

3+
use Binafy\LaravelUserMonitoring\Utills\UserUtils;
34
use Illuminate\Database\Migrations\Migration;
45
use Illuminate\Database\Schema\Blueprint;
56
use Illuminate\Support\Facades\Schema;
@@ -13,10 +14,8 @@ public function up(): void
1314
{
1415
Schema::create(config('user-monitoring.visit_monitoring.table'), function (Blueprint $table) {
1516
$table->id();
16-
$table->foreignId(config('user-monitoring.user.foreign_key'))
17-
->nullable()
18-
->constrained(config('user-monitoring.user.tables'))
19-
->nullOnDelete();
17+
18+
UserUtils::userForeignKey($table);
2019

2120
$table->string('browser_name');
2221
$table->string('platform');

database/migrations/2023_07_23_145723_create_actions_monitoring_table.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?php
22

3+
use Binafy\LaravelUserMonitoring\Utills\UserUtils;
34
use Illuminate\Database\Migrations\Migration;
45
use Illuminate\Database\Schema\Blueprint;
56
use Illuminate\Support\Facades\Schema;
@@ -13,10 +14,8 @@ public function up(): void
1314
{
1415
Schema::create(config('user-monitoring.action_monitoring.table'), function (Blueprint $table) {
1516
$table->id();
16-
$table->foreignId(config('user-monitoring.user.foreign_key'))
17-
->nullable()
18-
->constrained(config('user-monitoring.user.tables'))
19-
->nullOnDelete();
17+
18+
UserUtils::userForeignKey($table);
2019

2120
$table->string('action_type');
2221
$table->string('table_name');

database/migrations/2023_07_25_132642_create_authentications_monitoring_table.php

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?php
22

3+
use Binafy\LaravelUserMonitoring\Utills\UserUtils;
34
use Illuminate\Database\Migrations\Migration;
45
use Illuminate\Database\Schema\Blueprint;
56
use Illuminate\Support\Facades\Schema;
@@ -15,17 +16,27 @@ public function up(): void
1516
$table->id();
1617

1718
if (config('user-monitoring.authentication_monitoring.delete_user_record_when_user_delete', true)) {
18-
$table->foreignId(config('user-monitoring.user.foreign_key'))
19-
->constrained(config('user-monitoring.user.tables'))
20-
->cascadeOnDelete();
19+
if (config('user-monitoring.user.foreign_key_type') === 'ulid') {
20+
$table->foreignUlid(config('user-monitoring.user.foreign_key'))
21+
->nullable()
22+
->constrained(config('user-monitoring.user.table'))
23+
->cascadeOnDelete();
24+
} else if (config('user-monitoring.user.foreign_key_type') === 'uuid') {
25+
$table->foreignUuid(config('user-monitoring.user.foreign_key'))
26+
->nullable()
27+
->constrained(config('user-monitoring.user.table'))
28+
->cascadeOnDelete();
29+
} else {
30+
$table->foreignId(config('user-monitoring.user.foreign_key'))
31+
->nullable()
32+
->constrained(config('user-monitoring.user.table'))
33+
->cascadeOnDelete();
34+
}
2135
} else {
22-
$table->foreignId(config('user-monitoring.user.foreign_key'))
23-
->constrained(config('user-monitoring.user.tables'))
24-
->nullOnDelete();
36+
UserUtils::userForeignKey($table);
2537
}
2638

2739
$table->string('action_type');
28-
2940
$table->string('browser_name');
3041
$table->string('platform');
3142
$table->string('device');

src/Utills/UserUtils.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace Binafy\LaravelUserMonitoring\Utills;
4+
5+
use Illuminate\Database\Schema\Blueprint;
6+
7+
class UserUtils
8+
{
9+
public static function userForeignKey(Blueprint $table)
10+
{
11+
$type = config('user-monitoring.user.foreign_key_type', 'id');
12+
13+
if ($type === 'ulid') {
14+
$table->foreignUlid(config('user-monitoring.user.foreign_key'))
15+
->nullable()
16+
->constrained(config('user-monitoring.user.table'))
17+
->nullOnDelete();
18+
} else if ($type === 'uuid') {
19+
$table->foreignUuid(config('user-monitoring.user.foreign_key'))
20+
->nullable()
21+
->constrained(config('user-monitoring.user.table'))
22+
->nullOnDelete();
23+
} else {
24+
$table->foreignId(config('user-monitoring.user.foreign_key'))
25+
->nullable()
26+
->constrained(config('user-monitoring.user.table'))
27+
->nullOnDelete();
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)