class BQCraft:
    def audiences_audience_log_json_builder(user_id:str, activity:str, json:str, timestamp:int):
        data = {
            "user_id":user_id,
            "activity":activity,
            "json":json,
            "timestamp":timestamp,
        }
        return data
    def audiences_audience_log_json(user_id:str, activity:str, audience_syntax:str, timestamp:int):
        data = {
            "user_id":user_id,
            "activity":activity,
            "audience_syntax":audience_syntax,
            "timestamp":timestamp,
        }
        return data
    
    def audiences_json(createdate:str, lastupdate:str, audience_id:str, audience_name:str, description:str, audience_syntax:str, user_pseudo_id:list, audience_size:int, audience_log:list):
        data = {
            "createdate": createdate,
            "lastupdate": lastupdate,
            "audience_id": audience_id,
            "audience_name": audience_name,
            "description": description,
            "audience_syntax": audience_syntax,
            "user_pseudo_id": user_pseudo_id,
            "audience_size": audience_size,
            "audience_log": audience_log
        }
        return data

class Query:
    def get_audience_by_id(property_id:str,audience_id:str):
        if audience_id != "all":
            query = f"""
                SELECT *
                FROM `customer-360-profile.client_{property_id}.audience` 
                WHERE audience_id = "{audience_id}"
                """
            return query
        
        return f""" SELECT *
                FROM `customer-360-profile.client_{property_id}.audience`
                """

class LookerDimension:
    def getSuggestion(source):
        if source == 'event':
            data = [
                {
                    "view":"event",
                    "name":"event.event_name",
                    "field_name":"Event Name",
                    "type":"string",
                    "description":"Name of Event"
                },
                {
                    "view":"event",
                    "name":"event.id",
                    "field_name":"Social ID",
                    "type":"string",
                    "description":"Social ID from social media platform"
                },
                {
                    "view":"event",
                    "name":"event.page_id",
                    "field_name":"Social Page ID",
                    "type":"string",
                    "description":"ID of social media page or channel"
                },
                {
                    "view":"event",
                    "name":"event.source",
                    "field_name":"Source",
                    "type":"string",
                    "description":"Data source of event"
                }
            ]
            return data
        elif source == 'ads':
            data = [
                {
                    "view":"event",
                    "name":"event.referral__ad_id",
                    "field_name":"Ads ID",
                    "type":"string",
                    "description":"Facebook Ads ID"
                },
                {
                    "view":"event",
                    "name":"event.referral__ads_context_data__ad_title",
                    "field_name":"Ads Title",
                    "type":"string",
                    "description":"Facebook Ads title"
                },
                {
                    "view":"event",
                    "name":"event.referral__ads_context_data__post_id",
                    "field_name":"Ads post ID",
                    "type":"string",
                    "description":"Facebook Ads post ID"
                },
            ]
            return data
        
        elif source == 'user':
            return []
        
        elif source == 'offline':
            return []
        elif source == 'message':
            return []

