From 1141a463d704666abd573021de7a711f1c1873a6 Mon Sep 17 00:00:00 2001
From: stevereis <stevereis93@gmail.com>
Date: Tue, 14 Sep 2021 13:25:31 +0200
Subject: [PATCH] Added schema definition for variable, group and domain

---
 api/src/engine/engine.resolver.ts       | 14 ++++++++--
 api/src/engine/models/category.model.ts | 10 ++++++++
 api/src/engine/models/domain.model.ts   |  9 +++++++
 api/src/engine/models/group.model.ts    | 20 +++++++++++++++
 api/src/engine/models/variable.model.ts | 27 ++++++++++++++++++++
 api/src/schema.gql                      | 34 ++++++++++++++++++++++++-
 6 files changed, 111 insertions(+), 3 deletions(-)
 create mode 100644 api/src/engine/models/category.model.ts
 create mode 100644 api/src/engine/models/domain.model.ts
 create mode 100644 api/src/engine/models/group.model.ts
 create mode 100644 api/src/engine/models/variable.model.ts

diff --git a/api/src/engine/engine.resolver.ts b/api/src/engine/engine.resolver.ts
index e2bcfa5..7156789 100644
--- a/api/src/engine/engine.resolver.ts
+++ b/api/src/engine/engine.resolver.ts
@@ -2,13 +2,23 @@ import { Inject } from '@nestjs/common';
 import { Query, Resolver } from '@nestjs/graphql';
 import { ENGINE_SERVICE } from './engine.constants';
 import { IEngineService } from './engine.interfaces';
+import { Domain } from './models/domain.model';
 
 @Resolver()
 export class EngineResolver {
     constructor(@Inject(ENGINE_SERVICE) private readonly engineService: IEngineService) { }
 
-    @Query(() => String)
+    @Query(() => Domain)
     async hello() {
-        return this.engineService.demo();
+        let dummy : Domain = {  
+            id: "test",
+            label: "test",
+            description: "test",
+            groups:[],
+            variables: [],
+            datasets: []
+        }
+
+        return dummy;
     }
 }
\ No newline at end of file
diff --git a/api/src/engine/models/category.model.ts b/api/src/engine/models/category.model.ts
new file mode 100644
index 0000000..29ab318
--- /dev/null
+++ b/api/src/engine/models/category.model.ts
@@ -0,0 +1,10 @@
+import { Field, ObjectType } from "@nestjs/graphql";
+
+@ObjectType()
+export class Category {
+    @Field()
+    id: string
+
+    @Field()
+    label: string;
+}
\ No newline at end of file
diff --git a/api/src/engine/models/domain.model.ts b/api/src/engine/models/domain.model.ts
new file mode 100644
index 0000000..bffe59e
--- /dev/null
+++ b/api/src/engine/models/domain.model.ts
@@ -0,0 +1,9 @@
+import { Field, ObjectType } from "@nestjs/graphql";
+import { Category } from "./category.model";
+import { Group } from "./group.model";
+
+@ObjectType()
+export class Domain extends Group{
+    @Field(type => [Category])
+    datasets: Category[];
+}
\ No newline at end of file
diff --git a/api/src/engine/models/group.model.ts b/api/src/engine/models/group.model.ts
new file mode 100644
index 0000000..94c3306
--- /dev/null
+++ b/api/src/engine/models/group.model.ts
@@ -0,0 +1,20 @@
+import { Field, ObjectType } from "@nestjs/graphql";
+import { Variable } from "./variable.model";
+
+@ObjectType()
+export class Group {
+    @Field()
+    id: string;
+
+    @Field()
+    label: string;
+
+    @Field({ nullable: true})
+    description?: string;
+
+    @Field(type => [Group])
+    groups: Group[];
+
+    @Field(type => [Variable])
+    variables: Variable[];
+}
\ No newline at end of file
diff --git a/api/src/engine/models/variable.model.ts b/api/src/engine/models/variable.model.ts
new file mode 100644
index 0000000..7e1e61d
--- /dev/null
+++ b/api/src/engine/models/variable.model.ts
@@ -0,0 +1,27 @@
+import { Field, ObjectType } from "@nestjs/graphql";
+import { Category } from "./category.model";
+import { Group } from "./group.model";
+
+@ObjectType()
+export class Variable {
+    @Field()
+    id: string;
+
+    @Field({ nullable: true })
+    label?: string;
+
+    @Field()
+    type: string;
+
+    @Field({ nullable: true})
+    description?: string;
+
+    @Field(type => [Category])
+    categories: Category[];
+
+    @Field(type => Boolean)
+    isCategorical: boolean;
+
+    @Field(type => [Group])
+    groups: Group[];
+}
\ No newline at end of file
diff --git a/api/src/schema.gql b/api/src/schema.gql
index 12b643d..fca958d 100644
--- a/api/src/schema.gql
+++ b/api/src/schema.gql
@@ -2,6 +2,38 @@
 # THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY)
 # ------------------------------------------------------
 
+type Category {
+  id: String!
+  label: String!
+}
+
+type Variable {
+  id: String!
+  label: String
+  type: String!
+  description: String
+  categories: [Category!]!
+  isCategorical: Boolean!
+  groups: [Group!]!
+}
+
+type Group {
+  id: String!
+  label: String!
+  description: String
+  groups: [Group!]!
+  variables: [Variable!]!
+}
+
+type Domain {
+  id: String!
+  label: String!
+  description: String
+  groups: [Group!]!
+  variables: [Variable!]!
+  datasets: [Category!]!
+}
+
 type Query {
-  hello: String!
+  hello: Domain!
 }
-- 
GitLab