feat: implement meta and content cache

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-09-29 19:45:00 -04:00
parent e5e76351a5
commit d28800a04e
8 changed files with 715 additions and 22 deletions
+23
View File
@@ -25,6 +25,8 @@ use KTXM\ProviderImap\Console\DisconnectCommand;
use KTXM\ProviderImap\Console\TestCommand;
use KTXM\ProviderImap\Listeners\UserEventListener;
use KTXM\ProviderImap\Providers\Provider as MailProvider;
use KTXM\ProviderImap\Stores\MailboxStore;
use KTXM\ProviderImap\Stores\MessageStore;
/**
* IMAP Mail Provider Module
@@ -36,6 +38,8 @@ class Module extends ModuleInstanceAbstract
public function __construct(
private readonly ProviderManager $providerManager,
private readonly EventListenerRegistrarInterface $events,
private readonly MailboxStore $mailboxStore,
private readonly MessageStore $messageStore,
) {}
public function handle(): string
@@ -74,6 +78,16 @@ class Module extends ModuleInstanceAbstract
];
}
public function install(): void
{
$this->ensureIndexes();
}
public function upgrade(): void
{
$this->ensureIndexes();
}
public function boot(): void
{
// Register listeners
@@ -100,4 +114,13 @@ class Module extends ModuleInstanceAbstract
}
}
}
/**
* Create the cache collection indexes (idempotent).
*/
private function ensureIndexes(): void
{
$this->mailboxStore->ensureIndexes();
$this->messageStore->ensureIndexes();
}
}