From fda4bced926ebbfe9e9d2369a479cc2900391c83 Mon Sep 17 00:00:00 2001 From: lexx Date: Wed, 9 Oct 2024 16:57:19 +0300 Subject: [PATCH] WIP delete orphan files --- src/Commands/RemoveOrphanFiles.php | 47 ++++++++++++++++++++++++++++++ src/File/FileService.php | 2 +- src/LucentServiceProvider.php | 2 ++ src/Record/QueryRecord.php | 17 +++++++++-- src/Record/RecordService.php | 9 ++---- 5 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 src/Commands/RemoveOrphanFiles.php diff --git a/src/Commands/RemoveOrphanFiles.php b/src/Commands/RemoveOrphanFiles.php new file mode 100644 index 0000000..6b535e4 --- /dev/null +++ b/src/Commands/RemoveOrphanFiles.php @@ -0,0 +1,47 @@ +channel->schemas->filter(fn(Schema $schema) => get_class($schema) === FilesSchema::class)->values(); + + foreach ($schemas as $schema){ + $disk = $fileService->loadDisk($schema); + + } + + + dd($schemas); + $count = Database::make()->table("revisions")->whereNotIn("schema",$schemas)->count(); + if (!($this->option('force') || $this->confirm("$count records found. Delete?"))) { + return; + } + + $numOfRowsDeleted = Database::make()->table("records")->whereNotIn("schema",$schemas)->delete(); + Database::make()->table("revisions")->whereNotIn("schema",$schemas)->delete(); + $this->info("$numOfRowsDeleted records were deleted"); + } + +} diff --git a/src/File/FileService.php b/src/File/FileService.php index b06e1c8..19cec15 100644 --- a/src/File/FileService.php +++ b/src/File/FileService.php @@ -148,7 +148,7 @@ class FileService return; } - foreach (new DirectoryIterator(config("lucent.image_filters_path")) as $file) { + foreach (new DirectoryIterator(base_path(config("lucent.image_filters_path"))) as $file) { if($file->isDot()) continue; $namespace = app()->getNamespace(); diff --git a/src/LucentServiceProvider.php b/src/LucentServiceProvider.php index bedca59..8775d49 100644 --- a/src/LucentServiceProvider.php +++ b/src/LucentServiceProvider.php @@ -17,6 +17,7 @@ use Lucent\Commands\GenerateCollectionSchema; use Lucent\Commands\GenerateFileSchema; use Lucent\Commands\RebuildThumbnails; use Lucent\Commands\RemoveOrphanEdges; +use Lucent\Commands\RemoveOrphanFiles; use Lucent\Commands\RemoveOrphanRecords; use Lucent\Commands\Setup; use Lucent\Commands\SetupDatabase; @@ -95,6 +96,7 @@ class LucentServiceProvider extends ServiceProvider CompileSchemas::class, RebuildThumbnails::class, RemoveOrphanEdges::class, + RemoveOrphanFiles::class, RemoveOrphanRecords::class, SetupDatabase::class, GenerateCollectionSchema::class, diff --git a/src/Record/QueryRecord.php b/src/Record/QueryRecord.php index 07a9923..f72b9c2 100644 --- a/src/Record/QueryRecord.php +++ b/src/Record/QueryRecord.php @@ -2,8 +2,6 @@ namespace Lucent\Record; -use Lucent\LucentException; - class QueryRecord { @@ -21,6 +19,21 @@ class QueryRecord { } + public function getChildren(string $field): array + { + return $this->_children[$field]; + } + + public function getFirstChild(string $field): ?QueryRecord + { + return $this->_children[$field][0] ?? null; + } + + public function hasChildren(string $field): bool + { + return isset($this->_children[$field]) && count($this->_children[$field]) > 0; + } + public static function fromRecord(Record $record): QueryRecord { return new QueryRecord( diff --git a/src/Record/RecordService.php b/src/Record/RecordService.php index 183e6b0..228d909 100644 --- a/src/Record/RecordService.php +++ b/src/Record/RecordService.php @@ -53,7 +53,7 @@ readonly class RecordService public function createFromUrl( string $url, RecordInputData $data, - array $edges + array $edges = [] ): string { $schema = $this->channelService->getSchema($data->schemaName)->get(); @@ -70,7 +70,7 @@ readonly class RecordService public function createFromUploadedFile( UploadedFile $uploadedFile, RecordInputData $data, - array $edges + array $edges = [] ): string { $schema = $this->channelService->getSchema($data->schemaName)->get(); @@ -87,7 +87,7 @@ readonly class RecordService public function createFromFileData( FileData $fileData, RecordInputData $data, - array $edges + array $edges = [] ): string { $schema = $this->channelService->getSchema($data->schemaName)->get(); @@ -281,12 +281,9 @@ readonly class RecordService string $schemaName, ): void { - - $schema = $this->channelService->getSchema($schemaName)->get(); $this->recordRepo->deleteTrashedBySchema($schemaName); } - /** * @throws LucentException * @throws ValidatorException