Skip to content

Commit 3c7c034

Browse files
authored
Merge pull request #40 from datocms/feat/site-search-source
Update schema
2 parents 4c56e24 + 0203cfd commit 3c7c034

15 files changed

Lines changed: 1737 additions & 125 deletions

File tree

generate/extractInfoFromSchema.ts

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ const relToMethodName: Record<string, string> = {
8484
me: 'findMe',
8585
};
8686

87+
const pluralExceptions: Record<string, string> = {
88+
search_index: 'search_indexes',
89+
};
90+
8791
function hasLinks(
8892
schema: JsonRefParser.JSONSchema,
8993
): schema is JSONSchemaWithLinks {
@@ -431,21 +435,22 @@ function generateResourceInfo(
431435
return endpointInfo;
432436
});
433437

438+
const shouldPluralize = endpoints.some(
439+
(e) =>
440+
e.name === 'query' ||
441+
e.name === 'list' ||
442+
e.name.endsWith('List') ||
443+
(e.name === 'find' && e.urlPlaceholders.length === 1),
444+
);
445+
446+
const namespace = shouldPluralize
447+
? pluralExceptions[jsonApiType] || `${jsonApiType}s`
448+
: jsonApiType;
449+
434450
return {
435451
jsonApiType,
436452
endpoints,
437-
namespace: toSafeName(
438-
endpoints.some(
439-
(e) =>
440-
e.name === 'query' ||
441-
e.name === 'list' ||
442-
e.name.endsWith('List') ||
443-
(e.name === 'find' && e.urlPlaceholders.length === 1),
444-
)
445-
? `${jsonApiType}s`
446-
: jsonApiType,
447-
false,
448-
),
453+
namespace: toSafeName(namespace, false),
449454
resourceClassName: toSafeName(jsonApiType, true),
450455
};
451456
}

packages/cma-client-browser/src/generated/resources.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export const JobResult = Resources.JobResult;
1717
export const SubscriptionLimit = Resources.SubscriptionLimit;
1818
export const SubscriptionFeature = Resources.SubscriptionFeature;
1919
export const BuildEvent = Resources.BuildEvent;
20+
export const SearchIndexEvent = Resources.SearchIndexEvent;
2021
export const Item = Resources.Item;
2122
export const ItemVersion = Resources.ItemVersion;
2223
export { default as Upload } from '../resources/Upload';
@@ -30,6 +31,7 @@ export const MaintenanceMode = Resources.MaintenanceMode;
3031
export const Webhook = Resources.Webhook;
3132
export const WebhookCall = Resources.WebhookCall;
3233
export const BuildTrigger = Resources.BuildTrigger;
34+
export const SearchIndex = Resources.SearchIndex;
3335
export const ItemTypeFilter = Resources.ItemTypeFilter;
3436
export const UploadFilter = Resources.UploadFilter;
3537
export const SiteInvitation = Resources.SiteInvitation;

packages/cma-client-node/__tests__/searchResults.test.ts

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,33 @@ describe('Search Results', () => {
1717
indexing_enabled: true,
1818
});
1919

20-
const results = await client.searchResults.list({
21-
filter: {
22-
query: 'project',
23-
build_trigger_id: trigger.id,
24-
},
20+
// Create a site search source linked to the build trigger
21+
const searchIndex = await client.searchIndexes.create({
22+
name: 'Test Search Index',
23+
enabled: true,
24+
frontend_url: 'http://www.google.com/',
25+
build_triggers: [trigger],
2526
});
2627

27-
expect(results).toHaveLength(0);
28+
const resultsWhenSearchingViaBuildTrigger = await client.searchResults.list(
29+
{
30+
filter: {
31+
query: 'project',
32+
build_trigger_id: trigger.id,
33+
},
34+
},
35+
);
36+
37+
expect(resultsWhenSearchingViaBuildTrigger).toHaveLength(0);
38+
39+
const resultsWhenSearchingViaSiteSearchIndex =
40+
await client.searchResults.list({
41+
filter: {
42+
query: 'project',
43+
site_search_source_id: searchIndex.id,
44+
},
45+
});
46+
47+
expect(resultsWhenSearchingViaSiteSearchIndex).toHaveLength(0);
2848
});
2949
});

packages/cma-client-node/src/generated/resources.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export const JobResult = Resources.JobResult;
1717
export const SubscriptionLimit = Resources.SubscriptionLimit;
1818
export const SubscriptionFeature = Resources.SubscriptionFeature;
1919
export const BuildEvent = Resources.BuildEvent;
20+
export const SearchIndexEvent = Resources.SearchIndexEvent;
2021
export const Item = Resources.Item;
2122
export const ItemVersion = Resources.ItemVersion;
2223
export { default as Upload } from '../resources/Upload';
@@ -30,6 +31,7 @@ export const MaintenanceMode = Resources.MaintenanceMode;
3031
export const Webhook = Resources.Webhook;
3132
export const WebhookCall = Resources.WebhookCall;
3233
export const BuildTrigger = Resources.BuildTrigger;
34+
export const SearchIndex = Resources.SearchIndex;
3335
export const ItemTypeFilter = Resources.ItemTypeFilter;
3436
export const UploadFilter = Resources.UploadFilter;
3537
export const SiteInvitation = Resources.SiteInvitation;

0 commit comments

Comments
 (0)