Blueprint controller 84/76084/1
authorArundathi Patil <arundpil@in.ibm.com>
Mon, 21 Jan 2019 16:13:47 +0000 (21:43 +0530)
committerIBM602-PC0F1E3C\Arundathi <arundpil@in.ibm.com>
Mon, 21 Jan 2019 16:13:55 +0000 (21:43 +0530)
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>
cds-ui/server/src/controllers/blueprint-rest.controller.ts [new file with mode: 0644]
cds-ui/server/src/datasources/db.datasource.json [new file with mode: 0644]
cds-ui/server/src/datasources/db.datasource.ts [new file with mode: 0644]
cds-ui/server/src/datasources/index.ts [new file with mode: 0644]
cds-ui/server/src/models/blueprint.model.ts [new file with mode: 0644]
cds-ui/server/src/models/index.ts [new file with mode: 0644]
cds-ui/server/src/repositories/blueprint.repository.ts [new file with mode: 0644]
cds-ui/server/src/repositories/index.ts [new file with mode: 0644]

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 (file)
index 0000000..960f09f
--- /dev/null
@@ -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);
+  }
+}
diff --git a/cds-ui/server/src/datasources/db.datasource.json b/cds-ui/server/src/datasources/db.datasource.json
new file mode 100644 (file)
index 0000000..a68f220
--- /dev/null
@@ -0,0 +1,6 @@
+{
+  "name": "db",
+  "connector": "memory",
+  "localStorage": "",
+  "file": "./data/db.json"
+}
diff --git a/cds-ui/server/src/datasources/db.datasource.ts b/cds-ui/server/src/datasources/db.datasource.ts
new file mode 100644 (file)
index 0000000..f1b19a1
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+============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 {inject} from '@loopback/core';
+import {juggler} from '@loopback/repository';
+import * as config from './db.datasource.json';
+
+export class DbDataSource extends juggler.DataSource {
+  static dataSourceName = 'db';
+
+  constructor(
+    @inject('datasources.config.db', {optional: true})
+    dsConfig: object = config,
+  ) {
+    super(dsConfig);
+  }
+}
diff --git a/cds-ui/server/src/datasources/index.ts b/cds-ui/server/src/datasources/index.ts
new file mode 100644 (file)
index 0000000..1726b45
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+============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============================================
+*/
+
+
+export * from './db.datasource';
diff --git a/cds-ui/server/src/models/blueprint.model.ts b/cds-ui/server/src/models/blueprint.model.ts
new file mode 100644 (file)
index 0000000..d9fe1a8
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+============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 {Entity, model, property} from '@loopback/repository';
+
+@model()
+export class Blueprint extends Entity {
+  @property({
+    type: 'number',
+    id: true,
+  })
+  id?: number;
+
+  @property({
+    type: 'object',
+  })
+  metadata?: object;
+
+  @property({
+    type: 'array',
+    itemType: 'object',
+  })
+  fileImports?: object[];
+
+  @property({
+    type: 'object',
+  })
+  topologyTemplates?: object;
+
+  constructor(data?: Partial<Blueprint>) {
+    super(data);
+  }
+}
diff --git a/cds-ui/server/src/models/index.ts b/cds-ui/server/src/models/index.ts
new file mode 100644 (file)
index 0000000..b4de6a5
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+============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============================================
+*/
+
+
+export * from './blueprint.model';
diff --git a/cds-ui/server/src/repositories/blueprint.repository.ts b/cds-ui/server/src/repositories/blueprint.repository.ts
new file mode 100644 (file)
index 0000000..3af5c11
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+============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 {DefaultCrudRepository, juggler} from '@loopback/repository';
+import {Blueprint} from '../models';
+import {DbDataSource} from '../datasources';
+import {inject} from '@loopback/core';
+
+export class BlueprintRepository extends DefaultCrudRepository<
+  Blueprint,
+  typeof Blueprint.prototype.id
+> {
+  constructor(
+    @inject('datasources.db') dataSource: DbDataSource,
+  ) {
+    super(Blueprint, dataSource);
+  }
+}
diff --git a/cds-ui/server/src/repositories/index.ts b/cds-ui/server/src/repositories/index.ts
new file mode 100644 (file)
index 0000000..ac56b3c
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+============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============================================
+*/
+
+
+export * from './blueprint.repository';