--- /** * Campaign Masters Management * Full CRUD for campaign_masters collection */ import AdminLayout from '@/layouts/AdminLayout.astro'; import { getDirectusClient } from '@/lib/directus/client'; import { readItems } from '@directus/sdk'; const client = getDirectusClient(); let campaigns = []; let error = null; let stats = { total: 0, active: 0, draft: 0, completed: 0, }; try { campaigns = await client.request(readItems('campaign_masters', { fields: ['*'], sort: ['-date_created'], })); stats.total = campaigns.length; stats.active = campaigns.filter((c: any) => c.status === 'active').length; stats.draft = campaigns.filter((c: any) => c.status === 'draft').length; stats.completed = campaigns.filter((c: any) => c.status === 'completed').length; } catch (e) { console.error('Error fetching campaigns:', e); error = e instanceof Error ? e.message : 'Unknown error'; } ---

📢 Campaign Masters

Manage marketing campaigns and content strategies

✨ New Campaign
{error && (
Error: {error}
)}
Total Campaigns
{stats.total}
Active
{stats.active}
Draft
{stats.draft}
Completed
{stats.completed}
{campaigns.map((campaign: any) => (

{campaign.campaign_name || 'Unnamed Campaign'}

{campaign.description?.substring(0, 100) || 'No description'}

{campaign.status || 'draft'}
{campaign.target_count && (
Targets: {campaign.target_count} items
)} {campaign.articles_generated && (
Generated: {campaign.articles_generated} articles
)}
))} {campaigns.length === 0 && !error && (

No campaigns found. Create your first campaign!

)}