Initial commit from saas-meta
This commit is contained in:
45
src/meta-ads/controllers/meta-ads.controller.ts
Normal file
45
src/meta-ads/controllers/meta-ads.controller.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { Controller, Post, Body, Headers } from '@nestjs/common';
|
||||
import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger';
|
||||
import { MetaAdsService } from '../services/meta-ads.service';
|
||||
import { FetchMetaInsightsDto } from '../dto/fetch-insights.dto';
|
||||
import { ConnectAccountDto } from '../dto/connect-account.dto';
|
||||
import { ConnectedAccount } from '../entities/connected-account.entity';
|
||||
import { NormalizedCampaignInsight } from '../interfaces/campaign-insight.interface';
|
||||
|
||||
/**
|
||||
* Meta Ads Controller
|
||||
* متحكم إعلانات ميتا
|
||||
*
|
||||
* Exposes endpoints for Meta Ads data retrieval.
|
||||
* يوفر نقاط نهاية لاسترجاع بيانات إعلانات ميتا.
|
||||
*/
|
||||
@ApiTags('meta-ads')
|
||||
@Controller('meta')
|
||||
export class MetaAdsController {
|
||||
constructor(private readonly metaAdsService: MetaAdsService) {}
|
||||
|
||||
@Post('connect')
|
||||
@ApiOperation({ summary: 'Connect an Ad Account | ربط حساب إعلاني' })
|
||||
@ApiResponse({ status: 201, type: ConnectedAccount })
|
||||
async connectAccount(@Body() dto: ConnectAccountDto): Promise<ConnectedAccount> {
|
||||
return this.metaAdsService.connectAccount(dto);
|
||||
}
|
||||
|
||||
@Post('insights')
|
||||
@ApiOperation({ summary: 'Get normalized insights directly from Meta API | الحصول على رؤى موحدة مباشرة من ميتا' })
|
||||
@ApiResponse({ status: 200, description: 'Return list of normalized campaign insights' })
|
||||
async getInsights(
|
||||
@Body() dto: FetchMetaInsightsDto,
|
||||
@Headers('x-user-id') userId?: string,
|
||||
): Promise<NormalizedCampaignInsight[]> {
|
||||
if (userId) dto.userId = userId;
|
||||
return this.metaAdsService.fetchInsights(dto);
|
||||
}
|
||||
|
||||
@Post('accounts')
|
||||
@ApiOperation({ summary: 'Get connected accounts for a user | جلب الحسابات المرتبطة للمستخدم' })
|
||||
@ApiResponse({ status: 200, type: [ConnectedAccount] })
|
||||
async getConnectedAccounts(@Body('userId') userId: string): Promise<ConnectedAccount[]> {
|
||||
return this.metaAdsService.getConnectedAccounts(userId);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user