Skip to content

Commit fc228a8

Browse files
committed
fix /autocomplete/taxa translation
1 parent 648c07d commit fc228a8

File tree

6 files changed

+39
-40
lines changed

6 files changed

+39
-40
lines changed

src/autocomplete/autocomplete.controller.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -49,79 +49,79 @@ export class AutocompleteController {
4949

5050
constructor(private autocompleteService: AutocompleteService) {}
5151

52-
@Get("/persons")
53-
@UseInterceptors(SelectedFields, Paginator)
5452
@Version("1")
53+
@Get("/persons")
5554
@ApiOkResponse(paginateSchema(GetPersonsResponseDto))
55+
@UseInterceptors(SelectedFields, Paginator)
5656
getPersons(@Query() { query }: GetPersonsDto) {
5757
return this.autocompleteService.getPersons(query);
5858
}
5959

60-
@Get("/friends")
61-
@UseInterceptors(SelectedFields, Paginator)
6260
@Version("1")
61+
@Get("/friends")
6362
@ApiOkResponse(paginateSchema(GetPersonsResponseDto))
6463
@ApiExtraModels(GetPersonsResponseDto)
64+
@UseInterceptors(SelectedFields, Paginator)
6565
getFriends(@PersonToken() person: Person, @Query() { query }: GetFriendsDto) {
6666
return this.autocompleteService.getFriends(person, query);
6767
}
6868

69-
@Get("/unit/list")
70-
@UseInterceptors(SelectedFields)
7169
@Version("1")
70+
@Get("/unit/list")
7271
@ApiOkResponse(paginateSchema(GetPersonsResponseDto))
72+
@UseInterceptors(SelectedFields)
7373
getTripReportUnitListAutocomplete(@Query() { query }: CommonAutocompleteDto) {
7474
return this.autocompleteService.getTripReportUnitList(query);
7575
}
7676

77+
@Version("1")
7778
@Get("/unit/shorthand/trip-report")
7879
@UseInterceptors(SelectedFields)
79-
@Version("1")
8080
@ApiOkResponse(paginateSchema(GetPersonsResponseDto))
8181
// The json-ld typing is actually more than just taxon response, but this is sufficient to get the taxon search
8282
// results translated.
8383
@SwaggerRemoteRef({
8484
source: "laji-backend",
8585
ref: "TaxonSearchResponse",
8686
customizeResponseSchema: swaggerResponseAsResultsArray,
87-
jsonLdContext: "taxon-search"
87+
localJsonLdContext: "taxon-search"
8888
})
8989
@UseInterceptors(Translator, ResultsArray)
9090
getTripReportUnitShorthandAutocomplete(@Query() query: GetTripReportUnitShorthandDto) {
9191
return this.autocompleteService.getTripReportUnitShorthand(query);
9292
}
9393

94-
@Get("/unit/shorthand/line-transect")
95-
@UseInterceptors(SelectedFields)
9694
@Version("1")
95+
@Get("/unit/shorthand/line-transect")
9796
@ApiExtraModels(LineTransectUnitShorthandResponseDto)
9897
@ApiOkResponse({ schema: { $ref: getSchemaPath(LineTransectUnitShorthandResponseDto) } })
98+
@UseInterceptors(SelectedFields)
9999
getLineTransectUnitShorthandAutocomplete(@Query() { query }: CommonAutocompleteDto) {
100100
return this.autocompleteService.getLineTransectUnitShorthand(query);
101101
}
102102

103-
@Get("/unit/shorthand/water-bird-pair-count")
104-
@UseInterceptors(SelectedFields)
105103
@Version("1")
104+
@Get("/unit/shorthand/water-bird-pair-count")
106105
@ApiExtraModels(LineTransectUnitShorthandResponseDto)
107106
@ApiOkResponse({ schema: { $ref: getSchemaPath(LineTransectUnitShorthandResponseDto) } })
107+
@UseInterceptors(SelectedFields)
108108
getWaterbirdPairCountUnitShorthandAutocomplete(@Query() query: GetWaterBirdPairCountUnitShorthandDto) {
109109
return this.autocompleteService.getWaterBirdPairCountUnitShorthand(query);
110110
}
111111

112+
@Version("1")
112113
@Get("/taxa")
113-
@UseInterceptors(SelectedFields, ResultsArray)
114114
@SwaggerRemoteRef({
115115
source: "laji-backend",
116116
ref: "TaxonSearchResponse",
117117
customizeResponseSchema: (schema, document) => pipe(
118118
swaggerResponseWithKeyAndValue,
119119
swaggerResponseAsResultsArray
120120
)(asTuple(schema, document)),
121-
jsonLdContext: "taxon-search",
121+
localJsonLdContext: "taxon-search",
122122
schemaDefinitionName: "TaxonAutocompleteResponse"
123123
})
124-
@Version("1")
124+
@UseInterceptors(Translator, ResultsArray, SelectedFields)
125125
getTaxa(@Query() query: TaxaSearchDto) {
126126
return this.autocompleteService.getTaxa(query);
127127
}

src/interceptors/translator.interceptor.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ export class Translator implements NestInterceptor {
2929
return result;
3030
}
3131

32-
3332
if (!jsonLdContext) {
3433
throw new Error("Translator failed to get the @context for item");
3534
}

src/json-ld/json-ld.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ import { JSONObjectSerializable } from "src/typing.utils";
77
import { LANGS, Lang } from "src/common.dto";
88
import { ConfigService } from "@nestjs/config";
99

10-
export const jsonLdContextToRemoteSwaggerRefEntry: Record<string, SwaggerRemoteRefEntry> = {};
10+
export const localJsonLdContextToRemoteSwaggerRefEntry: Record<string, SwaggerRemoteRefEntry> = {};
1111

1212
@Injectable()
1313
export class JsonLdService {
1414
constructor(private swaggerService: SwaggerService, private config: ConfigService) {}
1515

1616
private async getEmbeddedContextForLocalName(name: string, lang?: Lang) {
17-
const entry = jsonLdContextToRemoteSwaggerRefEntry[name];
17+
const entry = localJsonLdContextToRemoteSwaggerRefEntry[name];
1818
if (!entry) {
1919
throw new HttpException(`JSON-LD context not found for name '${name}'`, 404);
2020
}

src/pagination.utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export const addLastPrevAndNextPage = <
6363
};
6464

6565
export const addContextToPageLikeResult = <T extends Partial<HasJsonLdContext>, R extends { results: T[] }>
66-
(hasResults: R) : Omit<R, "results"> & { results: Omit<T, "@context">[] } & HasJsonLdContext => {
66+
(hasResults: R): Omit<R, "results"> & { results: Omit<T, "@context">[] } & HasJsonLdContext => {
6767
const jsonLdContext = hasResults.results[0]?.["@context"];
6868
const results = jsonLdContext
6969
? hasResults.results.map(omitForKeys("@context"))

src/swagger/swagger-remote.decorator.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { CallHandler, ExecutionContext, HttpException, Injectable, NestIntercept
44
mixin } from "@nestjs/common";
55
import { Observable, switchMap } from "rxjs";
66
import { applyToResult } from "src/pagination.utils";
7-
import { jsonLdContextToRemoteSwaggerRefEntry } from "src/json-ld/json-ld.service";
7+
import { localJsonLdContextToRemoteSwaggerRefEntry } from "src/json-ld/json-ld.service";
88

99
export type SwaggerRemoteRefEntry = SwaggerCustomizationCommon & {
1010
/** The remote source */
@@ -17,7 +17,7 @@ export type SwaggerRemoteRefEntry = SwaggerCustomizationCommon & {
1717
*/
1818
replacePointer?: string;
1919
/** The local json-ld context name that is given to the result */
20-
jsonLdContext?: string;
20+
localJsonLdContext?: string;
2121
};
2222

2323
export const isSwaggerRemoteRefEntry = (entry: unknown): entry is SwaggerRemoteRefEntry =>
@@ -43,8 +43,8 @@ export function SwaggerRemoteRef(entry: SwaggerRemoteRefEntry) {
4343
function bindSwaggerRemoteRefMetadata(entry: SwaggerRemoteRefEntry) {
4444
return function (target: any, propertyKey: any) {
4545
Reflect.defineMetadata(SWAGGER_REMOTE_METADATA + propertyKey, entry, target);
46-
if (entry.jsonLdContext) {
47-
jsonLdContextToRemoteSwaggerRefEntry[entry.jsonLdContext] = entry;
46+
if (entry.localJsonLdContext) {
47+
localJsonLdContextToRemoteSwaggerRefEntry[entry.localJsonLdContext] = entry;
4848
}
4949
};
5050
}
@@ -76,16 +76,16 @@ class AddLocalJsonLdContext implements NestInterceptor {
7676

7777
addLocalJsonLdContext(result: any) {
7878
const entry: SwaggerRemoteRefEntry | undefined = Reflect.getMetadata(SWAGGER_REMOTE_METADATA_ITEM, result);
79-
if (!entry || !entry.jsonLdContext) {
79+
if (!entry || !entry.localJsonLdContext) {
8080
return result;
8181
}
8282

83-
const { jsonLdContext } = entry;
83+
const { localJsonLdContext } = entry;
8484
const { SELF_HOST } = process.env;
8585
if (typeof SELF_HOST !== "string") {
8686
throw new HttpException("`SELF_HOST` env variable not found", 500);
8787
}
88-
result["@context"] = `${SELF_HOST}/context/${jsonLdContext}`;
88+
result["@context"] = `${SELF_HOST}/context/${localJsonLdContext}`;
8989
return result;
9090
}
9191
}

src/taxa/taxa.controller.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ export class TaxaController {
8181
source: "laji-backend",
8282
ref: "TaxonSearchResponse",
8383
customizeResponseSchema: swaggerResponseAsResultsArray,
84-
jsonLdContext: "taxon-search"
84+
localJsonLdContext: "taxon-search"
8585
})
8686
@UseInterceptors(Translator, ResultsArray)
8787
search(@Query() query: TaxaSearchDto) {
@@ -94,7 +94,7 @@ export class TaxaController {
9494
@SwaggerRemoteRef({
9595
source: "laji-backend",
9696
ref: "Taxon",
97-
jsonLdContext: "taxon-elastic"
97+
localJsonLdContext: "taxon-elastic"
9898
})
9999
@UseInterceptors(Translator, Serializer(TaxonElastic))
100100
getPage(@Query() query: GetTaxaPageDto, @Body() filters?: TaxaFilters) {
@@ -109,7 +109,7 @@ export class TaxaController {
109109
@SwaggerRemoteRef({
110110
source: "laji-backend",
111111
ref: "Taxon",
112-
jsonLdContext: "taxon-elastic",
112+
localJsonLdContext: "taxon-elastic",
113113
customizeRequestBodySchema: addFiltersSchema
114114
})
115115
@UseInterceptors(Translator, Serializer(TaxonElastic))
@@ -138,7 +138,7 @@ export class TaxaController {
138138
/** Get a page of species */
139139
@Version("1")
140140
@Get("species")
141-
@SwaggerRemoteRef({ source: "laji-backend", ref: "Taxon", jsonLdContext: "taxon-elastic" })
141+
@SwaggerRemoteRef({ source: "laji-backend", ref: "Taxon", localJsonLdContext: "taxon-elastic" })
142142
@UseInterceptors(Translator, Serializer(TaxonElastic))
143143
getSpeciesPage(@Query() query: GetTaxaPageDto) {
144144
return this.taxaService.getSpeciesPage(query);
@@ -152,7 +152,7 @@ export class TaxaController {
152152
@SwaggerRemoteRef({
153153
source: "laji-backend",
154154
ref: "Taxon",
155-
jsonLdContext: "taxon-elastic",
155+
localJsonLdContext: "taxon-elastic",
156156
customizeRequestBodySchema: addFiltersSchema
157157
})
158158
@UseInterceptors(Translator, Serializer(TaxonElastic))
@@ -172,7 +172,7 @@ export class TaxaController {
172172
@SwaggerRemoteRef({
173173
source: "laji-backend",
174174
ref: "Taxon",
175-
jsonLdContext: "taxon-elastic",
175+
localJsonLdContext: "taxon-elastic",
176176
customizeRequestBodySchema: addFiltersSchema
177177
})
178178
@HttpCode(200)
@@ -187,7 +187,7 @@ export class TaxaController {
187187
source: "laji-backend",
188188
ref: "Taxon",
189189
customizeResponseSchema: addVernacularNameTranslations, // It's done mutably, so we need to do it just once here.
190-
jsonLdContext: "taxon-elastic"
190+
localJsonLdContext: "taxon-elastic"
191191
})
192192
@UseInterceptors(Translator, Serializer(TaxonElastic))
193193
get(@Param("id") id: string, @Query() query: GetTaxonDto) {
@@ -201,7 +201,7 @@ export class TaxaController {
201201
source: "laji-backend",
202202
ref: "Taxon",
203203
customizeResponseSchema: swaggerResponseAsResultsArray,
204-
jsonLdContext: "taxon-elastic"
204+
localJsonLdContext: "taxon-elastic"
205205
})
206206
@UseInterceptors(Translator, Serializer(TaxonElastic), ResultsArray)
207207
getTaxonChildren(@Param("id") id: string, @Query() query: GetTaxaResultsDto) {
@@ -215,7 +215,7 @@ export class TaxaController {
215215
source: "laji-backend",
216216
ref: "Taxon",
217217
customizeResponseSchema: swaggerResponseAsResultsArray,
218-
jsonLdContext: "taxon-elastic"
218+
localJsonLdContext: "taxon-elastic"
219219
})
220220
@UseInterceptors(ResultsArray, Translator, Serializer(TaxonElastic))
221221
getTaxonParents(@Param("id") id: string, @Query() query: GetTaxaResultsDto) {
@@ -225,7 +225,7 @@ export class TaxaController {
225225
/** Get species and subspecies of a taxon */
226226
@Version("1")
227227
@Get(":id/species")
228-
@SwaggerRemoteRef({ source: "laji-backend", ref: "Taxon", jsonLdContext: "taxon-elastic" })
228+
@SwaggerRemoteRef({ source: "laji-backend", ref: "Taxon", localJsonLdContext: "taxon-elastic" })
229229
@UseInterceptors(Translator, Serializer(TaxonElastic))
230230
getTaxonSpeciesPage(@Param("id") id: string, @Query() query: GetTaxaPageDto) {
231231
return this.taxaService.getTaxonSpeciesPage(id, query);
@@ -239,7 +239,7 @@ export class TaxaController {
239239
@SwaggerRemoteRef({
240240
source: "laji-backend",
241241
ref: "Taxon",
242-
jsonLdContext: "taxon-elastic",
242+
localJsonLdContext: "taxon-elastic",
243243
customizeRequestBodySchema: addFiltersSchema
244244
})
245245
@UseInterceptors(Translator, Serializer(TaxonElastic))
@@ -262,7 +262,7 @@ export class TaxaController {
262262
@SwaggerRemoteRef({
263263
source: "laji-backend",
264264
ref: "Taxon",
265-
jsonLdContext: "taxon-elastic",
265+
localJsonLdContext: "taxon-elastic",
266266
customizeRequestBodySchema: addFiltersSchema
267267
})
268268
@HttpCode(200)
@@ -281,7 +281,7 @@ export class TaxaController {
281281
source: "laji-backend",
282282
ref: "Content",
283283
customizeResponseSchema: swaggerResponseAsResultsArray,
284-
jsonLdContext: "taxon-description"
284+
localJsonLdContext: "taxon-description"
285285
})
286286
@UseInterceptors(Translator, ResultsArray)
287287
getTaxonDescriptions(@Param("id") id: string, @Query() query: TaxaBaseQuery) {
@@ -295,7 +295,7 @@ export class TaxaController {
295295
source: "laji-backend",
296296
ref: "Image",
297297
customizeResponseSchema: swaggerResponseAsResultsArray,
298-
jsonLdContext: "taxon-media"
298+
localJsonLdContext: "taxon-media"
299299
})
300300
@UseInterceptors(Translator, ResultsArray)
301301
getTaxonMedia(@Param("id") id: string, @Query() query: TaxaBaseQuery) {

0 commit comments

Comments
 (0)