Loopback search by tag service 18/91818/1
authorEzhilarasi <ezhrajam@in.ibm.com>
Mon, 22 Jul 2019 15:44:08 +0000 (21:14 +0530)
committerEzhilarasi <ezhrajam@in.ibm.com>
Mon, 22 Jul 2019 15:44:16 +0000 (21:14 +0530)
Added search by tag service in Server for CBA
Change-Id: Ib1b3f0e9e3aaf5f5854a0cf011d90f2cd3661bf3
Issue-ID: CCSDK-1279
Signed-off-by: Ezhilarasi <ezhrajam@in.ibm.com>
cds-ui/server/src/controllers/blueprint-rest.controller.ts
cds-ui/server/src/datasources/blueprint.datasource-template.ts
cds-ui/server/src/services/blueprint.service.ts

index 52e77ee..14aba56 100644 (file)
@@ -42,20 +42,20 @@ import {
   Response,
   RestBindings,
 } from '@loopback/rest';
-import {Blueprint} from '../models';
+import { Blueprint } from '../models';
 import { inject } from '@loopback/core';
 import { BlueprintService } from '../services';
 import * as fs from 'fs';
 import * as multiparty from 'multiparty';
 import * as request_lib from 'request';
-import {controllerApiConfig, processorApiConfig, appConfig} from '../config/app-config';
-import {bluePrintManagementServiceGrpcClient} from '../clients/blueprint-management-service-grpc-client';
+import { controllerApiConfig, processorApiConfig, appConfig } from '../config/app-config';
+import { bluePrintManagementServiceGrpcClient } from '../clients/blueprint-management-service-grpc-client';
 
 export class BlueprintRestController {
   constructor(
-    @inject('services.BlueprintService') 
+    @inject('services.BlueprintService')
     public bpservice: BlueprintService,
-  ) {}
+  ) { }
 
   @get('/blueprints', {
     responses: {
@@ -69,6 +69,17 @@ export class BlueprintRestController {
     return await this.bpservice.getAllblueprints();
   }
 
+  @get('/searchByTags/{tags}', {
+    responses: {
+      '200': {
+        content: { 'application/json': {} },
+      },
+    },
+  })
+  async getByTags(@param.path.string('tags') tags: string) {
+    return await this.bpservice.getByTags(tags);
+  }
+
   @post('/create-blueprint')
   async upload(
     @requestBody({
@@ -78,21 +89,21 @@ export class BlueprintRestController {
         'multipart/form-data': {
           // Skip body parsing
           'x-parser': 'stream',
-          schema: {type: 'object'},
+          schema: { type: 'object' },
         },
       },
     })
     request: Request,
     @inject(RestBindings.Http.RESPONSE) response: Response,
   ): Promise<Response> {
-    return new Promise((resolve, reject) => { 
-       this.getFileFromMultiPartForm(request).then(file=>{
-         this.uploadFileToBlueprintController(file, "/blueprint-model/", response).then(resp=>{
+    return new Promise((resolve, reject) => {
+      this.getFileFromMultiPartForm(request).then(file => {
+        this.uploadFileToBlueprintController(file, "/blueprint-model/", response).then(resp => {
           resolve(resp);
-         }, err=>{
-           reject(err);
-         });
-      }, err=>{
+        }, err => {
+          reject(err);
+        });
+      }, err => {
         reject(err);
       });
     });
@@ -107,21 +118,21 @@ export class BlueprintRestController {
         'multipart/form-data': {
           // Skip body parsing
           'x-parser': 'stream',
-          schema: {type: 'object'},
+          schema: { type: 'object' },
         },
       },
     })
     request: Request,
     @inject(RestBindings.Http.RESPONSE) response: Response,
   ): Promise<Response> {
-    return new Promise((resolve, reject) => { 
-       this.getFileFromMultiPartForm(request).then(file=>{
-         this.uploadFileToBlueprintController(file, "/blueprint-model/publish/", response).then(resp=>{
+    return new Promise((resolve, reject) => {
+      this.getFileFromMultiPartForm(request).then(file => {
+        this.uploadFileToBlueprintController(file, "/blueprint-model/publish/", response).then(resp => {
           resolve(resp);
-         }, err=>{
-           reject(err);
-         });
-      }, err=>{
+        }, err => {
+          reject(err);
+        });
+      }, err => {
         reject(err);
       });
     });
@@ -136,21 +147,21 @@ export class BlueprintRestController {
         'multipart/form-data': {
           // Skip body parsing
           'x-parser': 'stream',
-          schema: {type: 'object'},
+          schema: { type: 'object' },
         },
       },
     })
     request: Request,
     @inject(RestBindings.Http.RESPONSE) response: Response,
   ): Promise<Response> {
-    return new Promise((resolve, reject) => { 
-       this.getFileFromMultiPartForm(request).then(file=>{
-         this.uploadFileToBlueprintController(file, "/blueprint-model/enrich/", response).then(resp=>{
-           resolve(resp);
-         }, err=>{
-           reject(err);
-         });
-      }, err=>{
+    return new Promise((resolve, reject) => {
+      this.getFileFromMultiPartForm(request).then(file => {
+        this.uploadFileToBlueprintController(file, "/blueprint-model/enrich/", response).then(resp => {
+          resolve(resp);
+        }, err => {
+          reject(err);
+        });
+      }, err => {
         reject(err);
       });
     });
@@ -159,21 +170,21 @@ export class BlueprintRestController {
   @get('/download-blueprint/{name}/{version}')
   async download(
     @param.path.string('name') name: string,
-    @param.path.string('version') version:string,
+    @param.path.string('version') version: string,
     @inject(RestBindings.Http.RESPONSE) response: Response,
   ): Promise<Response> {
-    return this.downloadFileFromBlueprintController("/blueprint-model/download/by-name/"+name+"/version/"+version, response);
+    return this.downloadFileFromBlueprintController("/blueprint-model/download/by-name/" + name + "/version/" + version, response);
   }
 
-  async getFileFromMultiPartForm(request: Request): Promise<multiparty.File>{
+  async getFileFromMultiPartForm(request: Request): Promise<multiparty.File> {
     return new Promise((resolve, reject) => {
       let form = new multiparty.Form();
       form.parse(request, (err: any, fields: any, files: { [x: string]: any[]; }) => {
         if (err) reject(err);
         let file = files['file'][0]; // get the file from the returned files object
-        if(!file){
+        if (!file) {
           reject('File was not found in form data.');
-        }else{
+        } else {
           resolve(file);
         }
       });
@@ -189,34 +200,34 @@ export class BlueprintRestController {
         'multipart/form-data': {
           // Skip body parsing
           'x-parser': 'stream',
-          schema: {type: 'object'},
+          schema: { type: 'object' },
         },
       },
     })
     request: Request,
     @inject(RestBindings.Http.RESPONSE) response: Response,
   ): Promise<Response> {
-    return new Promise((resolve, reject) => { 
-       this.getFileFromMultiPartForm(request).then(file=>{
-         if(appConfig.action.deployBlueprint.grpcEnabled)
-          return this.uploadFileToBlueprintProcessorGrpc(file, response); 
-         else
+    return new Promise((resolve, reject) => {
+      this.getFileFromMultiPartForm(request).then(file => {
+        if (appConfig.action.deployBlueprint.grpcEnabled)
+          return this.uploadFileToBlueprintProcessorGrpc(file, response);
+        else
           return this.uploadFileToBlueprintProcessor(file, "/execution-service/upload/", response);
-      }, err=>{
+      }, err => {
         reject(err);
       });
     });
   }
 
-  async uploadFileToBlueprintController(file: multiparty.File, uri: string, response: Response): Promise<Response>{
+  async uploadFileToBlueprintController(file: multiparty.File, uri: string, response: Response): Promise<Response> {
     return this.uploadFileToBlueprintService(file, controllerApiConfig.http.url + uri, controllerApiConfig.http.authToken, response);
   }
 
-  async uploadFileToBlueprintProcessor(file: multiparty.File, uri: string, response: Response): Promise<Response>{
+  async uploadFileToBlueprintProcessor(file: multiparty.File, uri: string, response: Response): Promise<Response> {
     return this.uploadFileToBlueprintService(file, processorApiConfig.http.url + uri, processorApiConfig.http.authToken, response);
   }
 
-  async uploadFileToBlueprintService(file: multiparty.File, url: string, authToken: string, response: Response): Promise<Response>{
+  async uploadFileToBlueprintService(file: multiparty.File, url: string, authToken: string, response: Response): Promise<Response> {
     let options = {
       url: url,
       headers: {
@@ -238,7 +249,7 @@ export class BlueprintRestController {
       fs.unlink(file.path, (err: any) => {
         if (err) {
           console.error(err);
-        } 
+        }
       });
     }
 
@@ -280,10 +291,10 @@ export class BlueprintRestController {
 
   async uploadFileToBlueprintProcessorGrpc(file: multiparty.File, response: Response): Promise<Response> {
     return new Promise<Response>((resolve, reject) => {
-      bluePrintManagementServiceGrpcClient.uploadBlueprint(file.path).then(output=>{
+      bluePrintManagementServiceGrpcClient.uploadBlueprint(file.path).then(output => {
         response.send(output.status.message);
         resolve(response);
-      }, err=>{
+      }, err => {
         response.status(500).send(err);
         resolve(response);
       });
index 35edf33..1188d9b 100644 (file)
@@ -21,5 +21,22 @@ export default {
             "getAllblueprints": []
 
         }
-    }]
+    },
+    {
+        "template": {
+            "method": "GET",
+            "url": controllerApiConfig.http.url + "/blueprint-model/search/{tags}",
+            "headers": {
+                "accepts": "application/json",
+                "content-type": "application/json",
+                "authorization": controllerApiConfig.http.authToken
+            },
+            "responsePath": "$.*"
+        },
+        "functions": {
+            "getByTags": ["tags"]
+
+        }
+    },
+]
 };
\ No newline at end of file
index 970b2af..0545fac 100644 (file)
@@ -4,6 +4,7 @@ import {BlueprintDataSource} from '../datasources';
 
 export interface BlueprintService {
    getAllblueprints(): Promise<any>;
+   getByTags(tags: string): Promise<JSON>;
 }
 
 export class BlueprintServiceProvider implements Provider<BlueprintService> {