Skip to content

Commit

Permalink
add support for buyer_id
Browse files Browse the repository at this point in the history
  • Loading branch information
marsan02 committed Jan 30, 2024
1 parent 85ae32e commit db7739f
Show file tree
Hide file tree
Showing 19 changed files with 29 additions and 106 deletions.
Binary file modified __pycache__/main.cpython-311.pyc
Binary file not shown.
32 changes: 17 additions & 15 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def process_campaign_monitoring(*args, **kwargs):
buyer_id = request.args.get('buyer_id')
if buyer_id:
buyer_id=int(buyer_id)
all_campaigns = campaigns.get_mysql(request.args, request.args.get('id'),buyer_id,mysql_conn)
all_campaigns, status = campaigns.get_mysql(request.args, request.args.get('id'),buyer_id,mysql_conn)
payload = {
"dimensions": ["campaign_id"],
"metrics": ["bids", "imps", "clicks", "viewable_imps", "spend", "revenue"],
Expand All @@ -75,20 +75,22 @@ def process_campaign_monitoring(*args, **kwargs):
reporting_lookup = {report['campaign_id']: report for report in reporting_data}

stitched_data = []
for campaign in all_campaigns:
campaign_id = campaign['id']
if campaign_id in reporting_lookup:
# Merge the dictionaries (Python 3.5+)
merged = {**campaign, **reporting_lookup[campaign_id]}
else:
# Create a record with all metrics set to 0 for campaigns without reporting data
metrics_zero = {metric: 0 for metric in payload['metrics']}
metrics_zero['campaign_id'] = campaign_id
merged = {**campaign, **metrics_zero}

stitched_data.append(merged)

return stitched_data
if status == 200:
for campaign in all_campaigns:
campaign_id = campaign['id']
if campaign_id in reporting_lookup:
# Merge the dictionaries (Python 3.5+)
merged = {**campaign, **reporting_lookup[campaign_id]}
else:
# Create a record with all metrics set to 0 for campaigns without reporting data
metrics_zero = {metric: 0 for metric in payload['metrics']}
metrics_zero['campaign_id'] = campaign_id
merged = {**campaign, **metrics_zero}

stitched_data.append(merged)
return stitched_data
else:
return jsonify({"message": "object not found"}), 404

@app.route('/campaigns', methods=['POST','GET', 'PUT', 'DELETE'])
@requires_auth
Expand Down
Binary file modified services/__pycache__/advertisers.cpython-311.pyc
Binary file not shown.
Binary file modified services/__pycache__/buyers.cpython-311.pyc
Binary file not shown.
Binary file modified services/__pycache__/campaigns.cpython-311.pyc
Binary file not shown.
Binary file modified services/__pycache__/creatives.cpython-311.pyc
Binary file not shown.
Binary file modified services/__pycache__/deals.cpython-311.pyc
Binary file not shown.
Binary file modified services/__pycache__/generic_service.cpython-311.pyc
Binary file not shown.
Binary file modified services/__pycache__/reporting.cpython-311.pyc
Binary file not shown.
Binary file modified services/__pycache__/sellers.cpython-311.pyc
Binary file not shown.
80 changes: 0 additions & 80 deletions services/advertiser.py

This file was deleted.

2 changes: 1 addition & 1 deletion services/advertisers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ class AdvertisersService(BaseAPIService):
def __init__(self,client):
super().__init__(
database = "advertisers",
schema = {"name":str,"default_brand_url":str},
schema = {"id":int,"name":str,"default_brand_url":str,"buyer_id":int},
client = client
)
2 changes: 1 addition & 1 deletion services/buyers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ class BuyersService(BaseAPIService):
def __init__(self,client):
super().__init__(
database = "buyers",
schema = {"name":str},
schema = {"id":int,"name":str},
client = client
)
2 changes: 1 addition & 1 deletion services/campaigns.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class CampaignsService(BaseAPIService):
def __init__(self,client):
super().__init__(
database = "campaigns",
schema = {"name":str,
schema = {"id":int,"name":str,
"ad_type": int,
"creatives": str,
"daily_budget": numbers.Number,
Expand Down
5 changes: 3 additions & 2 deletions services/creatives.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@ class CreativesService(BaseAPIService):
def __init__(self,client):
super().__init__(
database = "creatives",
schema = {"name":str,
schema = {"id":int,"name":str,
"width":int,
"height":int,
"ad_type":int,
"asset_url":str,
"advertiser_id": int,
"landing_page_url": str},
"landing_page_url": str,
"buyer_id": int},
client = client
)

2 changes: 1 addition & 1 deletion services/deals.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ class DealsService(BaseAPIService):
def __init__(self,client):
super().__init__(
database = "deals",
schema = {"name":str,
schema = {"id":int,"name":str,
"seller_id":int,
"code":str,
"buyer_id":int,
Expand Down
6 changes: 3 additions & 3 deletions services/generic_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,15 @@ def get_mysql(self, filters,object_id,buyer_id,conn):
if buyer_id and self.database =='buyers':
query_filters = query_filters + f' AND id={buyer_id}'

query = f'SELECT id, {columns} FROM {self.database} WHERE 1=1 AND deleted=0 {query_filters}'
query = f'SELECT {columns} FROM {self.database} WHERE 1=1 AND deleted=0 {query_filters}'
print(query)
result_list = conn.ExecQuery(query)
if result_list:
# Serialize the list of dictionaries to JSON
if object_id:
return result_list[0]
return result_list[0], 200
else:
return result_list
return result_list, 200
else:
return jsonify({"message": "object not found"}), 404

Expand Down
2 changes: 1 addition & 1 deletion services/reporting.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def run_report(buyer_id,dimensions, metrics, filters):
account=account
)
if buyer_id:
query = 'WHERE 1=1 AND buyer_id=' + buyer_id
query = f'WHERE 1=1 AND buyer_id={buyer_id}'
else:
query = 'WHERE 1=1'
# Build the SELECT clause with SUM for metrics
Expand Down
2 changes: 1 addition & 1 deletion services/sellers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ class SellersService(BaseAPIService):
def __init__(self,client):
super().__init__(
database = "sellers",
schema = {"name":str},
schema = {"id":int,"name":str},
client = client
)

0 comments on commit db7739f

Please sign in to comment.