feat: implement soft deletes, mailbox reclaims, cooldowns, and auto-cleanup

This commit is contained in:
idevakk
2026-03-06 02:39:47 +05:30
parent e79c3f79a2
commit e6fd4e6f4c
8 changed files with 176 additions and 11 deletions

View File

@@ -4,11 +4,12 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Mailbox extends Model
{
/** @use HasFactory<\Database\Factories\MailboxFactory> */
use HasFactory;
use HasFactory, SoftDeletes;
protected $fillable = [
'mailbox_hash',
@@ -54,6 +55,21 @@ class Mailbox extends Model
userAgent: request()->userAgent()
);
});
static::deleted(function (Mailbox $mailbox) {
// Find all associated emails
$hashes = \App\Models\Email::where('recipient_email', $mailbox->address)->pluck('unique_id_hash');
if ($hashes->isNotEmpty()) {
// Clean MongoDB documents
\App\Models\EmailBody::whereIn('unique_id_hash', $hashes)->delete();
// Clean MariaDB records
\App\Models\Email::whereIn('unique_id_hash', $hashes)->delete();
// Future Placeholder: Delete physical attachments from S3/Storage here
}
});
}
public function user()