aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cds-ui/client/angular.json2
-rw-r--r--cds-ui/server/src/controllers/blueprint-rest.controller.ts160
-rw-r--r--cds-ui/server/src/datasources/db.datasource.json6
-rw-r--r--cds-ui/server/src/datasources/db.datasource.ts36
-rw-r--r--cds-ui/server/src/datasources/index.ts23
-rw-r--r--cds-ui/server/src/models/blueprint.model.ts52
-rw-r--r--cds-ui/server/src/models/index.ts23
-rw-r--r--cds-ui/server/src/repositories/blueprint.repository.ts37
-rw-r--r--cds-ui/server/src/repositories/index.ts23
9 files changed, 361 insertions, 1 deletions
diff --git a/cds-ui/client/angular.json b/cds-ui/client/angular.json
index 5eba741ed..0a433560b 100644
--- a/cds-ui/client/angular.json
+++ b/cds-ui/client/angular.json
@@ -17,7 +17,7 @@
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
- "outputPath": "dist/cds-ui",
+ "outputPath": "../server/public",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
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 000000000..960f09fbe
--- /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);
+ }
+}
diff --git a/cds-ui/server/src/datasources/db.datasource.json b/cds-ui/server/src/datasources/db.datasource.json
new file mode 100644
index 000000000..a68f220be
--- /dev/null
+++ b/cds-ui/server/src/datasources/db.datasource.json
@@ -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
index 000000000..f1b19a1af
--- /dev/null
+++ b/cds-ui/server/src/datasources/db.datasource.ts
@@ -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
index 000000000..1726b4515
--- /dev/null
+++ b/cds-ui/server/src/datasources/index.ts
@@ -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
index 000000000..d9fe1a84a
--- /dev/null
+++ b/cds-ui/server/src/models/blueprint.model.ts
@@ -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
index 000000000..b4de6a58c
--- /dev/null
+++ b/cds-ui/server/src/models/index.ts
@@ -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
index 000000000..3af5c1163
--- /dev/null
+++ b/cds-ui/server/src/repositories/blueprint.repository.ts
@@ -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
index 000000000..ac56b3c14
--- /dev/null
+++ b/cds-ui/server/src/repositories/index.ts
@@ -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';