mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-19 08:02:55 +00:00
committed by
Rainer Killinger
parent
8b457c9911
commit
f4a699e0e5
@@ -27,9 +27,9 @@ const bulkRouteModel = new SCBulkAddRoute();
|
||||
/**
|
||||
* Implementation of the bulk add route (SCBulkAddRoute)
|
||||
*/
|
||||
export const bulkAddRouter = createRoute<SCBulkAddResponse>(
|
||||
export const bulkAddRouter = createRoute<SCBulkAddRequest, SCBulkAddResponse>(
|
||||
bulkRouteModel,
|
||||
async (request: SCBulkAddRequest, app, params) => {
|
||||
async (request, app, params) => {
|
||||
|
||||
if (typeof params === 'undefined' || typeof params.UID !== 'string') {
|
||||
throw new Error('UID of Bulk was not given, but route with obligatory parameter was called');
|
||||
|
||||
@@ -27,9 +27,9 @@ const bulkDoneRouteModel = new SCBulkDoneRoute();
|
||||
/**
|
||||
* Implementation of the bulk done request route (SCBulkDoneRoute)
|
||||
*/
|
||||
export const bulkDoneRouter = createRoute<SCBulkDoneResponse>(
|
||||
export const bulkDoneRouter = createRoute<SCBulkDoneRequest, SCBulkDoneResponse>(
|
||||
bulkDoneRouteModel,
|
||||
async (_request: SCBulkDoneRequest, app, params) => {
|
||||
async (_request, app, params) => {
|
||||
|
||||
if (typeof params === 'undefined' || typeof params.UID !== 'string') {
|
||||
throw new Error('UID of Bulk was not given, but route with obligatory parameter was called');
|
||||
|
||||
@@ -25,9 +25,9 @@ const bulkRouteModel = new SCBulkRoute();
|
||||
/**
|
||||
* Implementation of the bulk request route (SCBulkRoute)
|
||||
*/
|
||||
export const bulkRouter = createRoute<SCBulkResponse>(
|
||||
export const bulkRouter = createRoute<SCBulkRequest, SCBulkResponse>(
|
||||
bulkRouteModel,
|
||||
async (request: SCBulkRequest, app) => {
|
||||
async (request, app) => {
|
||||
const bulkMemory: BulkStorage = app.get('bulk');
|
||||
|
||||
return bulkMemory.create(request);
|
||||
|
||||
@@ -25,7 +25,7 @@ const indexRouteModel = new SCIndexRoute();
|
||||
/**
|
||||
* Implementation of the index route (SCIndexRoute)
|
||||
*/
|
||||
export const indexRouter = createRoute<SCIndexResponse>(
|
||||
export const indexRouter = createRoute<unknown, SCIndexResponse>(
|
||||
indexRouteModel,
|
||||
async (): Promise<SCIndexResponse> => {
|
||||
return {
|
||||
|
||||
@@ -31,29 +31,30 @@ const multiSearchRouteModel = new SCMultiSearchRoute();
|
||||
/**
|
||||
* Implementation of the multi search route (SCMultiSearchRoute)
|
||||
*/
|
||||
export const multiSearchRouter = createRoute<SCMultiSearchResponse | SCTooManyRequestsErrorResponse>(
|
||||
multiSearchRouteModel,
|
||||
async (request: SCMultiSearchRequest, app) => {
|
||||
export const multiSearchRouter = createRoute
|
||||
<SCMultiSearchRequest, SCMultiSearchResponse | SCTooManyRequestsErrorResponse>(
|
||||
multiSearchRouteModel,
|
||||
async (request, app) => {
|
||||
|
||||
const bulkMemory: BulkStorage = app.get('bulk');
|
||||
const queryNames = Object.keys(request);
|
||||
const bulkMemory: BulkStorage = app.get('bulk');
|
||||
const queryNames = Object.keys(request);
|
||||
|
||||
if (queryNames.length > configFile.backend.maxMultiSearchRouteQueries) {
|
||||
throw new SCTooManyRequestsErrorResponse(isTestEnvironment);
|
||||
}
|
||||
if (queryNames.length > configFile.backend.maxMultiSearchRouteQueries) {
|
||||
throw new SCTooManyRequestsErrorResponse(isTestEnvironment);
|
||||
}
|
||||
|
||||
// get a map of promises for each query
|
||||
const searchRequests = queryNames.map(async (queryName) => {
|
||||
return bulkMemory.database.search(request[queryName]);
|
||||
});
|
||||
// get a map of promises for each query
|
||||
const searchRequests = queryNames.map(async (queryName) => {
|
||||
return bulkMemory.database.search(request[queryName]);
|
||||
});
|
||||
|
||||
const listOfSearchResponses = await Promise.all(searchRequests);
|
||||
const listOfSearchResponses = await Promise.all(searchRequests);
|
||||
|
||||
const response: { [queryName: string]: SCSearchResponse; } = {};
|
||||
queryNames.forEach((queryName, index) => {
|
||||
response[queryName] = listOfSearchResponses[index];
|
||||
});
|
||||
const response: { [queryName: string]: SCSearchResponse; } = {};
|
||||
queryNames.forEach((queryName, index) => {
|
||||
response[queryName] = listOfSearchResponses[index];
|
||||
});
|
||||
|
||||
return response;
|
||||
},
|
||||
return response;
|
||||
},
|
||||
);
|
||||
|
||||
@@ -35,10 +35,12 @@ import {isHttpMethod} from './http-types';
|
||||
* @param routeClass Model of a route
|
||||
* @param handler Implements the logic of the route
|
||||
*/
|
||||
export function createRoute<RETURNTYPE>(
|
||||
export function createRoute<REQUESTTYPE, RETURNTYPE>(
|
||||
routeClass: SCRoute,
|
||||
// tslint:disable-next-line: no-any
|
||||
handler: (validatedBody: any, app: Application, params?: { [parameterName: string]: string; }) => Promise<RETURNTYPE>,
|
||||
handler: (
|
||||
validatedBody: REQUESTTYPE,
|
||||
app: Application, params?: { [parameterName: string]: string; },
|
||||
) => Promise<RETURNTYPE>,
|
||||
): Router {
|
||||
// create router
|
||||
const router = PromiseRouter({mergeParams: true});
|
||||
|
||||
@@ -25,8 +25,11 @@ const searchRouteModel = new SCSearchRoute();
|
||||
/**
|
||||
* Implementation of the search route (SCSearchRoute)
|
||||
*/
|
||||
export const searchRouter = createRoute<SCSearchResponse>(searchRouteModel, async ( request: SCSearchRequest, app) => {
|
||||
const bulkMemory: BulkStorage = app.get('bulk');
|
||||
export const searchRouter = createRoute<SCSearchRequest, SCSearchResponse>(
|
||||
searchRouteModel,
|
||||
async (request, app) => {
|
||||
const bulkMemory: BulkStorage = app.get('bulk');
|
||||
|
||||
return bulkMemory.database.search(request);
|
||||
});
|
||||
return bulkMemory.database.search(request);
|
||||
},
|
||||
);
|
||||
|
||||
@@ -25,9 +25,9 @@ const thingUpdateRouteModel = new SCThingUpdateRoute();
|
||||
/**
|
||||
* Implementation of the thing update route (SCThingUpdateRoute)
|
||||
*/
|
||||
export const thingUpdateRouter = createRoute<SCThingUpdateResponse>(
|
||||
export const thingUpdateRouter = createRoute<SCThingUpdateRequest, SCThingUpdateResponse>(
|
||||
thingUpdateRouteModel,
|
||||
async (request: SCThingUpdateRequest, app) => {
|
||||
async (request, app) => {
|
||||
const bulkMemory: BulkStorage = app.get('bulk');
|
||||
await bulkMemory.database.put(request);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user