Skip to content

Commit 5254b0c

Browse files
faltjoryanmitchell
andauthored
Prevent freezing of ImportAssets for asset meta data when importing a large number of files (#360)
* prevent freezing of ImportAssets for asset meta data when importing a large number of files * Use lazy and map for better performance / memory usage --------- Co-authored-by: Ryan Mitchell <[email protected]>
1 parent 995c09d commit 5254b0c

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

src/Assets/AssetContainer.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public function metaFiles($folder = '/', $recursive = false)
136136

137137
return $this->queryAssets()
138138
->when($recursive, fn ($query) => $query->where('folder', $folder), fn ($query) => $query->where('folder', 'like', Str::replaceEnd('/', '', $folder).'/%'))
139-
->get()
140-
->pluck('path');
139+
->lazy()
140+
->map(fn ($value) => $value->path());
141141
}
142142
}

tests/Commands/ImportAssetsTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Illuminate\Http\UploadedFile;
66
use Illuminate\Support\Facades\Facade;
7+
use Illuminate\Support\Facades\Storage;
78
use PHPUnit\Framework\Attributes\Test;
89
use Statamic\Contracts\Assets\Asset as AssetContract;
910
use Statamic\Contracts\Assets\AssetContainer as AssetContainerContract;
@@ -46,6 +47,21 @@ public function tearDown(): void
4647
parent::tearDown();
4748
}
4849

50+
#[Test]
51+
public function it_gets_all_meta_files_by_default()
52+
{
53+
$container = tap(AssetContainer::make('test')->disk('test'))->save();
54+
Storage::disk('test')->put('.meta/a.txt.yaml',
55+
"data:
56+
title: 'File A'
57+
size: 123
58+
last_modified: 0000000000"
59+
);
60+
$this->assertEquals([
61+
'.meta/a.txt.yaml',
62+
], $container->metaFiles()->all());
63+
}
64+
4965
#[Test]
5066
public function it_imports_asset_containers_and_assets()
5167
{

0 commit comments

Comments
 (0)