fix:improve import performance
This commit is contained in:
@@ -52,8 +52,8 @@ class BackupImport implements WithMultipleSheets, WithEvents
|
|||||||
fn() => Artisan::call(SyncHoldingData::class, ['--user' => $this->backupImportModel->user_id]),
|
fn() => Artisan::call(SyncHoldingData::class, ['--user' => $this->backupImportModel->user_id]),
|
||||||
fn() => User::find($this->backupImportModel->user_id)->portfolios->each(function($portfolio) {
|
fn() => User::find($this->backupImportModel->user_id)->portfolios->each(function($portfolio) {
|
||||||
|
|
||||||
Artisan::queue(SyncDailyChange::class, ['portfolio_id' => $portfolio->id]);
|
Artisan::queue(SyncDailyChange::class, ['portfolio_id' => $portfolio->id]);
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
},
|
},
|
||||||
ImportFailed::class => fn(ImportFailed $event) => $this->backupImportModel->update([
|
ImportFailed::class => fn(ImportFailed $event) => $this->backupImportModel->update([
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ class DailyChangesSheet implements ToCollection, WithHeadingRow, WithValidation,
|
|||||||
|
|
||||||
public function batchSize(): int
|
public function batchSize(): int
|
||||||
{
|
{
|
||||||
return 750;
|
return 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ namespace App\Imports\Sheets;
|
|||||||
|
|
||||||
use App\Imports\ValidatesPortfolioAccess;
|
use App\Imports\ValidatesPortfolioAccess;
|
||||||
use App\Models\Holding;
|
use App\Models\Holding;
|
||||||
use App\Models\Portfolio;
|
|
||||||
use App\Models\Transaction;
|
use App\Models\Transaction;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use App\Models\BackupImport;
|
use App\Models\BackupImport;
|
||||||
@@ -85,16 +84,17 @@ class TransactionsSheet implements ToCollection, WithHeadingRow, WithValidation,
|
|||||||
);
|
);
|
||||||
|
|
||||||
// stub out related holdings
|
// stub out related holdings
|
||||||
$chunk->unique('symbol')->each(function($holding) {
|
$chunk->unique(fn($item) => $item['symbol'] . $item['portfolio_id'])
|
||||||
|
->each(function($holding) {
|
||||||
Holding::firstOrCreate([
|
|
||||||
'symbol' => $holding['symbol'],
|
Holding::firstOrCreate([
|
||||||
'portfolio_id' => $holding['portfolio_id']
|
'symbol' => $holding['symbol'],
|
||||||
], [
|
'portfolio_id' => $holding['portfolio_id']
|
||||||
'quantity' => 0,
|
], [
|
||||||
'average_cost_basis' => 0,
|
'quantity' => 0,
|
||||||
]);
|
'average_cost_basis' => 0,
|
||||||
});
|
]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user