Blueprint controller

Added blueprint controlller. All the rest calls to backend to upload a
blueprint will be called through this controller

Issue-ID: CCSDK-943
Change-Id: Ifd6bed47a4b9fe212e8651d41ebca0f47955eee9
Signed-off-by: Arundathi Patil <arundpil@in.ibm.com>
diff --git a/cds-ui/server/src/controllers/blueprint-rest.controller.ts b/cds-ui/server/src/controllers/blueprint-rest.controller.ts
new file mode 100644
index 0000000..960f09f
--- /dev/null
+++ b/cds-ui/server/src/controllers/blueprint-rest.controller.ts
@@ -0,0 +1,160 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018-19 IBM Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+============LICENSE_END============================================
+*/
+
+
+
+import {
+  Count,
+  CountSchema,
+  Filter,
+  repository,
+  Where,
+} from '@loopback/repository';
+import {
+  post,
+  param,
+  get,
+  getFilterSchemaFor,
+  getWhereSchemaFor,
+  patch,
+  put,
+  del,
+  requestBody,
+} from '@loopback/rest';
+import {Blueprint} from '../models';
+import {BlueprintRepository} from '../repositories';
+
+export class BlueprintRestController {
+  constructor(
+    @repository(BlueprintRepository)
+    public blueprintRepository : BlueprintRepository,
+  ) {}
+
+  @post('/blueprints', {
+    responses: {
+      '200': {
+        description: 'Blueprint model instance',
+        content: {'application/json': {schema: {'x-ts-type': Blueprint}}},
+      },
+    },
+  })
+  async create(@requestBody() blueprint: Blueprint): Promise<Blueprint> {
+    return await this.blueprintRepository.create(blueprint);
+  }
+
+  @get('/blueprints/count', {
+    responses: {
+      '200': {
+        description: 'Blueprint model count',
+        content: {'application/json': {schema: CountSchema}},
+      },
+    },
+  })
+  async count(
+    @param.query.object('where', getWhereSchemaFor(Blueprint)) where?: Where,
+  ): Promise<Count> {
+    return await this.blueprintRepository.count(where);
+  }
+
+  @get('/blueprints', {
+    responses: {
+      '200': {
+        description: 'Array of Blueprint model instances',
+        content: {
+          'application/json': {
+            schema: {type: 'array', items: {'x-ts-type': Blueprint}},
+          },
+        },
+      },
+    },
+  })
+  async find(
+    @param.query.object('filter', getFilterSchemaFor(Blueprint)) filter?: Filter,
+  ): Promise<Blueprint[]> {
+    return await this.blueprintRepository.find(filter);
+  }
+
+  @patch('/blueprints', {
+    responses: {
+      '200': {
+        description: 'Blueprint PATCH success count',
+        content: {'application/json': {schema: CountSchema}},
+      },
+    },
+  })
+  async updateAll(
+    @requestBody() blueprint: Blueprint,
+    @param.query.object('where', getWhereSchemaFor(Blueprint)) where?: Where,
+  ): Promise<Count> {
+    return await this.blueprintRepository.updateAll(blueprint, where);
+  }
+
+  @get('/blueprints/{id}', {
+    responses: {
+      '200': {
+        description: 'Blueprint model instance',
+        content: {'application/json': {schema: {'x-ts-type': Blueprint}}},
+      },
+    },
+  })
+  async findById(@param.path.number('id') id: number): Promise<Blueprint> {
+    return await this.blueprintRepository.findById(id);
+  }
+
+  @patch('/blueprints/{id}', {
+    responses: {
+      '204': {
+        description: 'Blueprint PATCH success',
+      },
+    },
+  })
+  async updateById(
+    @param.path.number('id') id: number,
+    @requestBody() blueprint: Blueprint,
+  ): Promise<void> {
+    await this.blueprintRepository.updateById(id, blueprint);
+  }
+
+  @put('/blueprints/{id}', {
+    responses: {
+      '204': {
+        description: 'Blueprint PUT success',
+      },
+    },
+  })
+  async replaceById(
+    @param.path.number('id') id: number,
+    @requestBody() blueprint: Blueprint,
+  ): Promise<void> {
+    await this.blueprintRepository.replaceById(id, blueprint);
+  }
+
+  @del('/blueprints/{id}', {
+    responses: {
+      '204': {
+        description: 'Blueprint DELETE success',
+      },
+    },
+  })
+  async deleteById(@param.path.number('id') id: number): Promise<void> {
+    await this.blueprintRepository.deleteById(id);
+  }
+}