Skip to content

Commit 25a4879

Browse files
authored
upcoming: [M3-9225] - Add API queries for MarketplaceV2 (linode#13255)
* upcoming: [M3-9225] - Add API queries for MarketplaceV2 * Added changeset: Add API queries for MarketplaceV2 * PR feedback * fixed api url and factories * added queries for /marketplace/types * PR feedback @pmakode-akamai
1 parent ae5748e commit 25a4879

File tree

10 files changed

+422
-20
lines changed

10 files changed

+422
-20
lines changed

packages/api-v4/src/marketplace/marketplace.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export const getMarketplaceProducts = (params?: Params, filters?: Filter) =>
2929
export const getMarketplaceProduct = (productId: number) =>
3030
Request<MarketplaceProduct>(
3131
setURL(
32-
`${BETA_API_ROOT}/marketplace/products/${encodeURIComponent(productId)}`,
32+
`${BETA_API_ROOT}/marketplace/products/${encodeURIComponent(productId)}/details`,
3333
),
3434
setMethod('GET'),
3535
);

packages/api-v4/src/marketplace/types.ts

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,59 @@
11
export interface MarketplaceProductDetail {
2-
documentation: string;
3-
overview: {
2+
documentation?: string;
3+
overview?: {
44
description: string;
55
};
6-
pricing: string;
7-
support: string;
6+
pricing?: string;
7+
support?: string;
88
}
99

1010
export interface MarketplaceProduct {
1111
category_ids: number[];
12+
created_at: string;
13+
created_by: string;
1214
details?: MarketplaceProductDetail;
1315
id: number;
1416
info_banner?: string;
17+
logo_url: string;
1518
name: string;
1619
partner_id: number;
1720
product_tags?: string[];
1821
short_description: string;
19-
title_tag?: string;
22+
tile_tag?: string;
2023
type_id: number;
24+
updated_at?: string;
25+
updated_by?: string;
2126
}
2227

2328
export interface MarketplaceCategory {
24-
category: string;
29+
created_at: string;
30+
created_by: string;
2531
id: number;
26-
product_count: number;
32+
name: string;
33+
products_count: number;
34+
updated_at?: string;
35+
updated_by?: string;
2736
}
2837

2938
export interface MarketplaceType {
39+
created_at: string;
40+
created_by: string;
3041
id: number;
3142
name: string;
32-
product_count: number;
43+
products_count: number;
44+
updated_at?: string;
45+
updated_by?: string;
3346
}
3447

3548
export interface MarketplacePartner {
49+
created_at: string;
50+
created_by: string;
3651
id: number;
52+
logo_url_dark_mode: string;
3753
logo_url_light_mode: string;
38-
logo_url_night_mode?: string;
3954
name: string;
55+
updated_at?: string;
56+
updated_by?: string;
4057
url: string;
4158
}
4259

packages/manager/src/mocks/serverHandlers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,7 @@ const marketplace = [
651651
const marketplaceProduct = marketplaceProductFactory.buildList(10);
652652
return HttpResponse.json(makeResourcePage([...marketplaceProduct]));
653653
}),
654-
http.get('*/v4beta/marketplace/products/:productId', () => {
654+
http.get('*/v4beta/marketplace/products/:productId/details', () => {
655655
const marketplaceProductDetail = marketplaceProductFactory.build({
656656
details: {
657657
overview: {
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@linode/queries": Upcoming Features
3+
---
4+
5+
Add API queries for MarketplaceV2 ([#13255](https://github.com/linode/manager/pull/13255))

packages/queries/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export * from './iam';
1111
export * from './images';
1212
export * from './linodes';
1313
export * from './locks';
14+
export * from './marketplace';
1415
export * from './netloadbalancers';
1516
export * from './networking';
1617
export * from './networktransfer';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export * from './keys';
2+
export * from './marketplace';
3+
export * from './requests';
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
import {
2+
getMarketplaceCategories,
3+
getMarketplacePartners,
4+
getMarketplaceProduct,
5+
getMarketplaceProducts,
6+
getMarketplaceTypes,
7+
} from '@linode/api-v4';
8+
import { createQueryKeys } from '@lukemorales/query-key-factory';
9+
10+
import {
11+
getAllMarketplaceCategories,
12+
getAllMarketplacePartners,
13+
getAllMarketplaceProducts,
14+
getAllMarketplaceTypes,
15+
} from './requests';
16+
17+
import type { Filter, Params } from '@linode/api-v4';
18+
19+
export const marketplaceQueries = createQueryKeys('marketplace', {
20+
product: (productId: number) => ({
21+
queryFn: () => getMarketplaceProduct(productId),
22+
queryKey: [productId],
23+
}),
24+
products: {
25+
contextQueries: {
26+
all: (params: Params = {}, filter: Filter = {}) => ({
27+
queryFn: () => getAllMarketplaceProducts(params, filter),
28+
queryKey: [params, filter],
29+
}),
30+
infinite: (filter: Filter = {}) => ({
31+
queryFn: ({ pageParam }) =>
32+
getMarketplaceProducts(
33+
{ page: pageParam as number, page_size: 25 },
34+
filter,
35+
),
36+
queryKey: [filter],
37+
}),
38+
paginated: (params: Params = {}, filter: Filter = {}) => ({
39+
queryFn: () => getMarketplaceProducts(params, filter),
40+
queryKey: [params, filter],
41+
}),
42+
},
43+
queryKey: null,
44+
},
45+
categories: {
46+
contextQueries: {
47+
all: (params: Params = {}, filter: Filter = {}) => ({
48+
queryFn: () => getAllMarketplaceCategories(params, filter),
49+
queryKey: [params, filter],
50+
}),
51+
infinite: (filter: Filter = {}) => ({
52+
queryFn: ({ pageParam }) =>
53+
getMarketplaceCategories(
54+
{ page: pageParam as number, page_size: 25 },
55+
filter,
56+
),
57+
queryKey: [filter],
58+
}),
59+
paginated: (params: Params = {}, filter: Filter = {}) => ({
60+
queryFn: () => getMarketplaceCategories(params, filter),
61+
queryKey: [params, filter],
62+
}),
63+
},
64+
queryKey: null,
65+
},
66+
types: {
67+
contextQueries: {
68+
all: (params: Params = {}, filter: Filter = {}) => ({
69+
queryFn: () => getAllMarketplaceTypes(params, filter),
70+
queryKey: [params, filter],
71+
}),
72+
infinite: (filter: Filter = {}) => ({
73+
queryFn: ({ pageParam }) =>
74+
getMarketplaceTypes(
75+
{ page: pageParam as number, page_size: 25 },
76+
filter,
77+
),
78+
queryKey: [filter],
79+
}),
80+
paginated: (params: Params = {}, filter: Filter = {}) => ({
81+
queryFn: () => getMarketplaceTypes(params, filter),
82+
queryKey: [params, filter],
83+
}),
84+
},
85+
queryKey: null,
86+
},
87+
partners: {
88+
contextQueries: {
89+
all: (params: Params = {}, filter: Filter = {}) => ({
90+
queryFn: () => getAllMarketplacePartners(params, filter),
91+
queryKey: [params, filter],
92+
}),
93+
infinite: (filter: Filter = {}) => ({
94+
queryFn: ({ pageParam }) =>
95+
getMarketplacePartners(
96+
{ page: pageParam as number, page_size: 25 },
97+
filter,
98+
),
99+
queryKey: [filter],
100+
}),
101+
paginated: (params: Params = {}, filter: Filter = {}) => ({
102+
queryFn: () => getMarketplacePartners(params, filter),
103+
queryKey: [params, filter],
104+
}),
105+
},
106+
queryKey: null,
107+
},
108+
});

0 commit comments

Comments
 (0)