<?php

namespace App\Services\Platforms;

use App\Contracts\PlatformAdapter;
use App\Exceptions\PlatformNotImplementedException;
use App\Models\AdCopy;
use App\Models\Campaign;
use App\Models\Creative;

/**
 * Base for platforms whose integration hasn't been built yet (docs/TASKS.md Task 14-17).
 * Lets the campaign UI list every platform without blocking on all 5 integrations.
 */
abstract class UnimplementedPlatformAdapter implements PlatformAdapter
{
    abstract protected function platformName(): string;

    public function createCampaign(Campaign $campaign): string
    {
        throw new PlatformNotImplementedException("{$this->platformName()} campaign creation isn't implemented yet.");
    }

    public function attachCreative(Campaign $campaign, Creative $creative, ?AdCopy $adCopy = null): string
    {
        throw new PlatformNotImplementedException("{$this->platformName()} creative attachment isn't implemented yet.");
    }

    public function publish(Campaign $campaign): void
    {
        throw new PlatformNotImplementedException("{$this->platformName()} publishing isn't implemented yet.");
    }
}
