From 0a0b7a03b43b19b96fcf165e770f0d2e104cfaff Mon Sep 17 00:00:00 2001 From: Constantin Graf Date: Thu, 12 Sep 2024 14:22:25 +0200 Subject: [PATCH] Deactivate auditing for import and increase max_execution_time --- app/Models/Client.php | 4 ++-- app/Models/Concerns/CustomAuditable.php | 22 +++++++++++++++++++ app/Models/Member.php | 4 ++-- app/Models/Organization.php | 4 ++-- app/Models/OrganizationInvitation.php | 4 ++-- app/Models/Project.php | 5 +++-- app/Models/ProjectMember.php | 4 ++-- app/Models/Tag.php | 4 ++-- app/Models/Task.php | 4 ++-- app/Models/TimeEntry.php | 4 ++-- app/Models/User.php | 4 ++-- app/Service/Import/ImportDatabaseHelper.php | 4 ++++ config/octane.php | 2 +- .../TogglTimeEntriesImporterTest.php | 2 +- 14 files changed, 49 insertions(+), 22 deletions(-) create mode 100644 app/Models/Concerns/CustomAuditable.php diff --git a/app/Models/Client.php b/app/Models/Client.php index 2de42196..6f337f95 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use App\Models\Concerns\CustomAuditable; use App\Models\Concerns\HasUuids; use Database\Factories\ClientFactory; use Illuminate\Database\Eloquent\Casts\Attribute; @@ -12,7 +13,6 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Carbon; -use OwenIt\Auditing\Auditable; use OwenIt\Auditing\Contracts\Auditable as AuditableContract; /** @@ -29,7 +29,7 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; */ class Client extends Model implements AuditableContract { - use Auditable; + use CustomAuditable; /** @use HasFactory */ use HasFactory; diff --git a/app/Models/Concerns/CustomAuditable.php b/app/Models/Concerns/CustomAuditable.php new file mode 100644 index 00000000..af03c25d --- /dev/null +++ b/app/Models/Concerns/CustomAuditable.php @@ -0,0 +1,22 @@ +|null + */ + protected ?array $auditEvents = null; + + public function disableAuditing(): void + { + $this->auditEvents = []; + } +} diff --git a/app/Models/Member.php b/app/Models/Member.php index 070f3864..2c9fba3c 100644 --- a/app/Models/Member.php +++ b/app/Models/Member.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use App\Models\Concerns\CustomAuditable; use App\Models\Concerns\HasUuids; use Database\Factories\MemberFactory; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -11,7 +12,6 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Carbon; use Laravel\Jetstream\Membership as JetstreamMembership; -use OwenIt\Auditing\Auditable; use OwenIt\Auditing\Contracts\Auditable as AuditableContract; /** @@ -29,7 +29,7 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; */ class Member extends JetstreamMembership implements AuditableContract { - use Auditable; + use CustomAuditable; /** @use HasFactory */ use HasFactory; diff --git a/app/Models/Organization.php b/app/Models/Organization.php index 98ccc1c7..581e7370 100644 --- a/app/Models/Organization.php +++ b/app/Models/Organization.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use App\Models\Concerns\CustomAuditable; use App\Models\Concerns\HasUuids; use Database\Factories\OrganizationFactory; use Illuminate\Database\Eloquent\Collection; @@ -19,7 +20,6 @@ use Laravel\Jetstream\Events\TeamDeleted; use Laravel\Jetstream\Events\TeamUpdated; use Laravel\Jetstream\Jetstream; use Laravel\Jetstream\Team as JetstreamTeam; -use OwenIt\Auditing\Auditable; use OwenIt\Auditing\Contracts\Auditable as AuditableContract; /** @@ -42,7 +42,7 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; */ class Organization extends JetstreamTeam implements AuditableContract { - use Auditable; + use CustomAuditable; /** @use HasFactory */ use HasFactory; diff --git a/app/Models/OrganizationInvitation.php b/app/Models/OrganizationInvitation.php index 3362fb15..a27bfd6f 100644 --- a/app/Models/OrganizationInvitation.php +++ b/app/Models/OrganizationInvitation.php @@ -4,13 +4,13 @@ declare(strict_types=1); namespace App\Models; +use App\Models\Concerns\CustomAuditable; use App\Models\Concerns\HasUuids; use Database\Factories\OrganizationInvitationFactory; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Support\Carbon; use Laravel\Jetstream\TeamInvitation as JetstreamTeamInvitation; -use OwenIt\Auditing\Auditable; use OwenIt\Auditing\Contracts\Auditable as AuditableContract; /** @@ -26,7 +26,7 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; */ class OrganizationInvitation extends JetstreamTeamInvitation implements AuditableContract { - use Auditable; + use CustomAuditable; /** @use HasFactory */ use HasFactory; diff --git a/app/Models/Project.php b/app/Models/Project.php index af24f6a1..32317d1c 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use App\Models\Concerns\CustomAuditable; use App\Models\Concerns\HasUuids; use Database\Factories\ProjectFactory; use Illuminate\Database\Eloquent\Builder; @@ -14,7 +15,6 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Carbon; -use OwenIt\Auditing\Auditable; use OwenIt\Auditing\Contracts\Auditable as AuditableContract; /** @@ -40,7 +40,7 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; */ class Project extends Model implements AuditableContract { - use Auditable; + use CustomAuditable; /** @use HasFactory */ use HasFactory; @@ -55,6 +55,7 @@ class Project extends Model implements AuditableContract protected $casts = [ 'name' => 'string', 'color' => 'string', + 'archived_at' => 'datetime', ]; /** diff --git a/app/Models/ProjectMember.php b/app/Models/ProjectMember.php index 42e9cd4f..d5c61be1 100644 --- a/app/Models/ProjectMember.php +++ b/app/Models/ProjectMember.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use App\Models\Concerns\CustomAuditable; use App\Models\Concerns\HasUuids; use Database\Factories\ProjectMemberFactory; use Illuminate\Database\Eloquent\Builder; @@ -11,7 +12,6 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Support\Carbon; -use OwenIt\Auditing\Auditable; use OwenIt\Auditing\Contracts\Auditable as AuditableContract; /** @@ -31,7 +31,7 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; */ class ProjectMember extends Model implements AuditableContract { - use Auditable; + use CustomAuditable; /** @use HasFactory */ use HasFactory; diff --git a/app/Models/Tag.php b/app/Models/Tag.php index d96a528e..8e8baf10 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -4,13 +4,13 @@ declare(strict_types=1); namespace App\Models; +use App\Models\Concerns\CustomAuditable; use App\Models\Concerns\HasUuids; use Database\Factories\TagFactory; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Support\Carbon; -use OwenIt\Auditing\Auditable; use OwenIt\Auditing\Contracts\Auditable as AuditableContract; /** @@ -25,7 +25,7 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; */ class Tag extends Model implements AuditableContract { - use Auditable; + use CustomAuditable; /** @use HasFactory */ use HasFactory; diff --git a/app/Models/Task.php b/app/Models/Task.php index 553aded9..037a33cb 100644 --- a/app/Models/Task.php +++ b/app/Models/Task.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use App\Models\Concerns\CustomAuditable; use App\Models\Concerns\HasUuids; use Database\Factories\TaskFactory; use Illuminate\Database\Eloquent\Builder; @@ -14,7 +15,6 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Carbon; -use OwenIt\Auditing\Auditable; use OwenIt\Auditing\Contracts\Auditable as AuditableContract; /** @@ -34,7 +34,7 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; */ class Task extends Model implements AuditableContract { - use Auditable; + use CustomAuditable; /** @use HasFactory */ use HasFactory; diff --git a/app/Models/TimeEntry.php b/app/Models/TimeEntry.php index 101096f6..c2276e16 100644 --- a/app/Models/TimeEntry.php +++ b/app/Models/TimeEntry.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Models; +use App\Models\Concerns\CustomAuditable; use App\Models\Concerns\HasUuids; use App\Service\BillableRateService; use Carbon\CarbonInterval; @@ -14,7 +15,6 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Support\Carbon; use Korridor\LaravelComputedAttributes\ComputedAttributes; -use OwenIt\Auditing\Auditable; use OwenIt\Auditing\Contracts\Auditable as AuditableContract; /** @@ -47,8 +47,8 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; */ class TimeEntry extends Model implements AuditableContract { - use Auditable; use ComputedAttributes; + use CustomAuditable; /** @use HasFactory */ use HasFactory; diff --git a/app/Models/User.php b/app/Models/User.php index fffd5d74..5b4a1c93 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Models; use App\Enums\Weekday; +use App\Models\Concerns\CustomAuditable; use App\Models\Concerns\HasUuids; use Database\Factories\UserFactory; use Filament\Models\Contracts\FilamentUser; @@ -25,7 +26,6 @@ use Laravel\Fortify\TwoFactorAuthenticatable; use Laravel\Jetstream\HasProfilePhoto; use Laravel\Jetstream\HasTeams; use Laravel\Passport\HasApiTokens; -use OwenIt\Auditing\Auditable; use OwenIt\Auditing\Contracts\Auditable as AuditableContract; /** @@ -57,7 +57,7 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; */ class User extends Authenticatable implements AuditableContract, FilamentUser, MustVerifyEmail { - use Auditable; + use CustomAuditable; use HasApiTokens; /** @use HasFactory */ diff --git a/app/Service/Import/ImportDatabaseHelper.php b/app/Service/Import/ImportDatabaseHelper.php index fc00fc97..e27898b0 100644 --- a/app/Service/Import/ImportDatabaseHelper.php +++ b/app/Service/Import/ImportDatabaseHelper.php @@ -98,6 +98,7 @@ class ImportDatabaseHelper throw new ImportException('Invalid data: '.implode(', ', $validator->errors()->all())); } + /** @var TModel $model */ $model = new $this->model; foreach ($data as $key => $value) { $model->{$key} = $value; @@ -105,6 +106,9 @@ class ImportDatabaseHelper if ($this->beforeSave !== null) { ($this->beforeSave)($model); } + if (method_exists($model, 'disableAuditing')) { + $model->disableAuditing(); + } $model->save(); if ($this->afterCreate !== null) { diff --git a/config/octane.php b/config/octane.php index b0ef4ff8..06cf8206 100644 --- a/config/octane.php +++ b/config/octane.php @@ -221,7 +221,7 @@ return [ | */ - 'max_execution_time' => 30, + 'max_execution_time' => 45, /** * Custom swoole config diff --git a/tests/Unit/Service/Import/Importers/TogglTimeEntriesImporterTest.php b/tests/Unit/Service/Import/Importers/TogglTimeEntriesImporterTest.php index 47ffac9b..fb482a59 100644 --- a/tests/Unit/Service/Import/Importers/TogglTimeEntriesImporterTest.php +++ b/tests/Unit/Service/Import/Importers/TogglTimeEntriesImporterTest.php @@ -36,7 +36,7 @@ class TogglTimeEntriesImporterTest extends ImporterTestAbstract $queryLog = DB::getQueryLog(); // Assert - $this->assertCount(31, $queryLog); + $this->assertCount(23, $queryLog); $testScenario = $this->checkTestScenarioAfterImportExcludingTimeEntries(); $this->checkTimeEntries($testScenario); $this->assertSame(2, $report->timeEntriesCreated);