Skip to content

Commit bf2851b

Browse files
committed
Fix company SDKs
1 parent 7072c73 commit bf2851b

File tree

6 files changed

+80
-69
lines changed

6 files changed

+80
-69
lines changed

backend/api_app/controllers/companies.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
CompanyAppsOverview,
2323
CompanyCategoryOverview,
2424
CompanyDetail,
25-
CompanyPatterns,
2625
CompanyPatternsDict,
2726
CompanyPlatformOverview,
2827
CompanyPubIDOverview,
@@ -759,14 +758,22 @@ async def company_sdks(
759758

760759
df = get_company_sdks(company_domain=company_domain)
761760

761+
company_sdks = (
762+
df[["company_name", "sdk_name", "package_pattern", "path_pattern"]]
763+
.set_index(["company_name", "sdk_name"])
764+
.groupby(level=[0, 1])
765+
.apply(
766+
lambda x: {
767+
"package_patterns": x["package_pattern"].unique().tolist(),
768+
"paths": x["path_pattern"].unique().tolist(),
769+
}
770+
)
771+
.unstack(level=0)
772+
.to_dict()
773+
)
774+
762775
mydict = CompanyPatternsDict(
763-
companies={
764-
company_name[0]: CompanyPatterns(
765-
package_patterns=mylist["package_pattern"].unique().tolist(),
766-
paths=mylist["path_pattern"].unique().tolist(),
767-
)
768-
for company_name, mylist in df.groupby(["company_name"])
769-
},
776+
companies=company_sdks,
770777
)
771778

772779
duration = round((time.perf_counter() * 1000 - start), 2)

backend/api_app/models.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,30 @@ class CompanyTypes:
145145

146146

147147
@dataclass
148-
class CompanyPatterns:
148+
class SDKPatterns:
149149
"""Holds a list of package patterns and paths for a company."""
150150

151+
sdk_name: str
151152
package_patterns: list[str]
152153
paths: list[str]
153154

154155

156+
@dataclass
157+
class CompanySDKs:
158+
"""Holds a list of package patterns and paths for a company."""
159+
160+
company_name: str
161+
sdks: list[SDKPatterns]
162+
163+
164+
@dataclass
165+
class CompanyPatterns:
166+
"""Holds a list of package patterns and paths for a company."""
167+
168+
company_name: str
169+
sdks: list[CompanySDKs]
170+
171+
155172
@dataclass
156173
class CompanyPatternsDict:
157174
"""Holds a list of package patterns and paths for a company."""
Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,11 @@
11
SELECT
2-
c.name AS company_name,
3-
sp.package_pattern,
4-
sp2.path_pattern,
5-
COALESCE(
6-
cc.name,
7-
c.name
8-
) AS parent_company_name
2+
cso.company_name,
3+
cso.sdk_name,
4+
cso.package_pattern,
5+
cso.path_pattern,
6+
cso.parent_company_name
97
FROM
10-
adtech.companies AS c
11-
LEFT JOIN adtech.companies AS cc
12-
ON
13-
c.parent_company_id = cc.id
14-
LEFT JOIN adtech.company_domain_mapping AS cdm
15-
ON
16-
c.id = cdm.company_id
17-
LEFT JOIN adtech.company_domain_mapping AS pcdm
18-
ON
19-
cc.id = pcdm.company_id
20-
LEFT JOIN ad_domains AS ad
21-
ON
22-
cdm.domain_id = ad.id
23-
LEFT JOIN ad_domains AS parad
24-
ON
25-
pcdm.domain_id = parad.id
26-
LEFT JOIN adtech.sdk_packages AS sp
27-
ON
28-
c.id = sp.company_id
29-
-- OR cc.id = sp.company_id
30-
LEFT JOIN adtech.sdk_paths AS sp2
31-
ON
32-
c.id = sp2.company_id
33-
OR cc.id = sp2.company_id
8+
frontend.companies_sdks_overview AS cso
349
WHERE
35-
ad.domain = :company_domain
36-
OR parad.domain = :company_domain
10+
cso.company_domain = :company_domain
11+
OR cso.parent_company_domain = :company_domain;

frontend/src/lib/CompanySDKs.svelte

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
<script lang="ts">
2-
import type { CompanyPatternsDict } from '../types';
2+
import type { CompanySDKsDict } from '../types';
33
import WhiteCard from './WhiteCard.svelte';
44
55
interface Props {
6-
mySdks: CompanyPatternsDict;
6+
mySdks: CompanySDKsDict;
77
}
88
99
let { mySdks }: Props = $props();
1010
1111
const uniquePaths = [
1212
...new Set(
1313
Object.values(mySdks.companies || {})
14-
.flatMap((c) => c.paths || [])
14+
.flatMap((c) => c.sdks || [])
15+
.flatMap((c) => c.package_patterns || [])
1516
.filter((path) => path != null)
1617
)
1718
];
@@ -22,24 +23,26 @@
2223
</script>
2324

2425
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 p-2 md:p-4">
25-
{#each Object.entries(mySdks.companies) as [companyName, patterns]}
26-
<div class="col-span-1">
27-
<WhiteCard>
28-
{#snippet title()}
29-
<span class="text-sm font-semibold">{companyName}</span>
30-
{/snippet}
31-
<div class="p-4 text-xs">
32-
<h4 class="font-medium text-primary-900-100 uppercase tracking-wider mb-1">
33-
Package Patterns
34-
</h4>
35-
<ul class="list-disc list-inside space-y-0.5">
36-
{#each truncateList(patterns.package_patterns) as pattern}
37-
<li class=""><a href={`/sdks/${pattern}`}>{pattern}</a></li>
38-
{/each}
39-
</ul>
40-
</div>
41-
</WhiteCard>
42-
</div>
26+
{#each Object.entries(mySdks.companies) as [companyName, sdks]}
27+
{#each Object.entries(sdks) as [sdkName, patterns]}
28+
<div class="col-span-1">
29+
<WhiteCard>
30+
{#snippet title()}
31+
<span class="text-sm font-semibold">{companyName} - {sdkName}</span>
32+
{/snippet}
33+
<div class="p-4 text-xs">
34+
<h4 class="font-medium text-primary-900-100 uppercase tracking-wider mb-1">
35+
Package Patterns
36+
</h4>
37+
<ul class="list-disc list-inside space-y-0.5">
38+
{#each truncateList(patterns.package_patterns) as pattern}
39+
<li class=""><a href={`/sdks/${pattern}`}>{pattern}</a></li>
40+
{/each}
41+
</ul>
42+
</div>
43+
</WhiteCard>
44+
</div>
45+
{/each}
4346
{/each}
4447

4548
<!-- Separate card for unique paths -->

frontend/src/lib/ManifestItemList.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<script lang="ts">
2-
import type { CompanySDKs } from '../types';
2+
import type { CompanySDKParts } from '../types';
33
import WhiteCard from './WhiteCard.svelte';
44
import CompanyButton from './CompanyButton.svelte';
55
import { Accordion } from '@skeletonlabs/skeleton-svelte';
66
77
interface Props {
8-
items: CompanySDKs;
8+
items: CompanySDKParts;
99
}
1010
1111
let { items = {} }: Props = $props();

frontend/src/types.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ export interface UnknownSDKs {
145145
[key: string]: { [key: string]: string[] };
146146
}
147147

148-
export interface CompanySDKs {
148+
export interface CompanySDKParts {
149149
[key: string]: { [key: string]: { [key: string]: string[] } };
150150
}
151151

@@ -294,9 +294,18 @@ export interface CompanyPatterns {
294294
paths: string[];
295295
}
296296

297-
export interface CompanyPatternsDict {
297+
export interface SDKPatterns {
298+
package_patterns: string[];
299+
paths: string[];
300+
}
301+
302+
export interface CompanySDKs {
303+
[sdk_name: string]: SDKPatterns;
304+
}
305+
306+
export interface CompanySDKsDict {
298307
companies: {
299-
[company_name: string]: CompanyPatterns;
308+
[company_name: string]: CompanySDKs;
300309
};
301310
}
302311

@@ -348,7 +357,7 @@ export interface CompanyFullDetails {
348357
companyDetails: CompanyCategoryOverview;
349358
companyTopApps: CompanyOverviewSections;
350359
companyTree: ParentCompanyTree;
351-
companySdks: CompanyPatternsDict;
360+
companySdks: CompanySDKsDict;
352361
companyParentCategories: ChartTabularData;
353362
}
354363
export interface CompanyCategoryDetails {

0 commit comments

Comments
 (0)