--- /** * 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 📥 Import 📤 Export ✨ 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 )} Edit View Articles ))} {campaigns.length === 0 && !error && ( No campaigns found. Create your first campaign! )}
Manage marketing campaigns and content strategies
{campaign.description?.substring(0, 100) || 'No description'}
No campaigns found. Create your first campaign!