Optimize the SQL queries that finds unsent echomail,netmail and files

This commit is contained in:
2025-04-16 23:36:55 +10:00
parent 128e333deb
commit 3f0e17e20b
8 changed files with 257 additions and 284 deletions

View File

@@ -3,6 +3,7 @@
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Collection;
@@ -279,6 +280,33 @@ final class Echomail extends Model implements Packet
});
}
/* SCOPES */
/**
* Base query to find uncollected echomails
*
* @param Builder $query
* @return Builder
*/
public function scopeUncollected(Builder $query): Builder
{
return $this
->join('echomail_seenby',['echomail_seenby.echomail_id'=>'echomails.id'])
->whereNull('echomails.deleted_at')
->whereNotNull('export_at')
->whereNull('sent_at')
->with([
'tagline:id,value',
'tearline:id,value',
'origin:id,value',
'echoarea:id,name,domain_id',
'echoarea.domain:id,name',
'fftn:id,zone_id,region_id,host_id,node_id,point_id',
'fftn.zone:id,domain_id,zone_id',
'fftn.zone.domain:id,name',
]);
}
/* RELATIONS */
public function echoarea()