diff --git a/backend/api_app/controllers/companies.py b/backend/api_app/controllers/companies.py index ff0cb03..8fd9b99 100644 --- a/backend/api_app/controllers/companies.py +++ b/backend/api_app/controllers/companies.py @@ -609,7 +609,7 @@ async def company_tree( """ logger.info(f"GET /api/companies/{company_name}/tree start") - df = get_company_tree(company_name=company_name) + df = get_company_tree(company_domain=company_name) parent_company = df["parent_company_name"].tolist()[0] @@ -620,7 +620,7 @@ async def company_tree( df[ ~(parent_company == df["company_name"]) & (company_name == df["company_name"]) - ]["domain"] + ]["company_domain"] .unique() .tolist() ) @@ -630,7 +630,7 @@ async def company_tree( ~(parent_company == df["company_name"]) & (company_name != df["company_name"]) ] - .rename(columns={"domain": "domains"}) + .rename(columns={"company_domain": "domains"}) .groupby(["company_name"])["domains"] .apply(lambda x: list(x)) .reset_index() @@ -669,7 +669,7 @@ async def company_sdks( """ logger.info(f"GET /api/companies/{company_name}/sdks start") - df = get_company_sdks(company_name=company_name) + df = get_company_sdks(company_domain=company_name) mydict = CompanyPatternsDict( companies={ diff --git a/backend/dbcon/queries.py b/backend/dbcon/queries.py index 6339639..22c4724 100644 --- a/backend/dbcon/queries.py +++ b/backend/dbcon/queries.py @@ -254,7 +254,7 @@ def get_company_overview(company_domain: str) -> pd.DataFrame: df = pd.read_sql( QUERY_COMPANY_PARENT_OVERVIEW, DBCON.engine, - params={"company": company_domain}, + params={"company_domain": company_domain}, ) if df.empty: df = pd.read_sql( @@ -267,24 +267,24 @@ def get_company_overview(company_domain: str) -> pd.DataFrame: return df -def get_company_tree(company_name: str) -> pd.DataFrame: +def get_company_tree(company_domain: str) -> pd.DataFrame: """Get a company tree with parent companies and domains.""" - logger.info(f"query company tree: {company_name=}") + logger.info(f"query company tree: {company_domain=}") df = pd.read_sql( QUERY_COMPANY_TREE, DBCON.engine, - params={"company": company_name}, + params={"company_domain": company_domain}, ) return df -def get_company_sdks(company_name: str) -> pd.DataFrame: +def get_company_sdks(company_domain: str) -> pd.DataFrame: """Get a company tree with parent companies and domains.""" - logger.info(f"query company sdks: {company_name=}") + logger.info(f"query company sdks: {company_domain=}") df = pd.read_sql( QUERY_COMPANY_SDKS, DBCON.engine, - params={"company": company_name}, + params={"company_domain": company_domain}, ) return df diff --git a/backend/dbcon/sql/query_company_parent_overview.sql b/backend/dbcon/sql/query_company_parent_overview.sql index 3582fc8..b9d2f32 100644 --- a/backend/dbcon/sql/query_company_parent_overview.sql +++ b/backend/dbcon/sql/query_company_parent_overview.sql @@ -8,5 +8,5 @@ SELECT FROM adtech.companies_parent_app_counts WHERE company_domain = :company_domain -GROUP BY company_domain, store, tag_source, app_category +GROUP BY company_domain, company_name, store, tag_source, app_category ORDER BY app_count DESC; diff --git a/backend/dbcon/sql/query_company_sdks.sql b/backend/dbcon/sql/query_company_sdks.sql index df2b886..6e33368 100644 --- a/backend/dbcon/sql/query_company_sdks.sql +++ b/backend/dbcon/sql/query_company_sdks.sql @@ -11,6 +11,18 @@ FROM LEFT JOIN adtech.companies AS cc ON c.parent_company_id = cc.id +LEFT JOIN adtech.company_domain_mapping AS cdm + ON + c.id = cdm.company_id +LEFT JOIN adtech.company_domain_mapping AS pcdm + ON + cc.id = pcdm.company_id +LEFT JOIN ad_domains AS ad + ON + cdm.domain_id = ad.id +LEFT JOIN ad_domains AS parad + ON + pcdm.domain_id = parad.id LEFT JOIN adtech.sdk_packages AS sp ON c.id = sp.company_id @@ -20,5 +32,5 @@ LEFT JOIN adtech.sdk_paths AS sp2 c.id = sp2.company_id OR cc.id = sp2.company_id WHERE - c.name = :company - OR cc.name = :company; + ad.domain = :company_domain + OR parad.domain = :company_domain diff --git a/backend/dbcon/sql/query_company_tree.sql b/backend/dbcon/sql/query_company_tree.sql index e6f2131..ee2ccde 100644 --- a/backend/dbcon/sql/query_company_tree.sql +++ b/backend/dbcon/sql/query_company_tree.sql @@ -1,23 +1,38 @@ -SELECT - c.name AS company_name, - ad.domain, - COALESCE( - cc.name, - c.name, - ad.domain - ) AS parent_company_name +WITH mytree AS ( + SELECT + c.name AS company_name, + ad.domain AS company_domain, + COALESCE( + parad.domain, + ad.domain + ) AS parent_company_domain, + COALESCE( + cc.name, + c.name, + ad.domain + ) AS parent_company_name + FROM + adtech.companies AS c + LEFT JOIN adtech.companies AS cc + ON + c.parent_company_id = cc.id + LEFT JOIN adtech.company_domain_mapping AS cdm + ON + c.id = cdm.company_id + LEFT JOIN adtech.company_domain_mapping AS pcdm + ON + cc.id = pcdm.company_id + FULL OUTER JOIN ad_domains AS ad + ON + cdm.domain_id = ad.id + LEFT JOIN ad_domains AS parad + ON + pcdm.domain_id = parad.id +) + +SELECT * FROM - adtech.companies AS c -LEFT JOIN adtech.companies AS cc - ON - c.parent_company_id = cc.id -LEFT JOIN adtech.company_domain_mapping AS cdm - ON - c.id = cdm.company_id -FULL OUTER JOIN ad_domains AS ad - ON - cdm.domain_id = ad.id + mytree WHERE - c.name = :company - OR cc.name = :company - OR ad.domain ILIKE :company || '%'; + company_domain = :company_domain + OR parent_company_domain = :company_domain;