HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/ai.naniguide.com/app/Services/Ads/AdapterSession.php
<?php

namespace App\Services\Ads;

use App\Model\AdPlatform;

/**
 * Binds an `AdPlatform` record to a decorator-wrapped adapter chain.
 *
 * Services should NOT call `AdPlatformManager::adapter($platform)` directly —
 * that returns a bare adapter without access to the AdPlatform record, which
 * means TokenRefreshDecorator can't update the DB, TelemetryDecorator can't tag
 * logs with customer_id, etc.
 *
 * Instead call `AdPlatformManager::session($platform)` which returns this
 * AdapterSession with both the record AND the chain in scope.
 *
 * Usage:
 *   $session = $manager->session($adPlatform);
 *   $result = $session->chain->publishCampaign(
 *       accessToken: $session->platform->access_token,
 *       ...
 *   );
 */
final class AdapterSession
{
    public function __construct(
        public readonly AdPlatform $platform,
        public readonly AdPlatformAdapter $chain,
    ) {}
}