From 3bf6b29bb7d1cf3f5beecea8cdeb1cc7dc7ee9b3 Mon Sep 17 00:00:00 2001
From: fspreck <f.spreckelsen@indiscale.com>
Date: Fri, 18 Feb 2022 09:54:36 +0100
Subject: [PATCH] ENH: Add treatment of other atomic properties

---
 src/caosadvancedtools/models/parser.py     | 12 +++++++++++-
 unittests/test_json_schema_model_parser.py |  2 +-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/caosadvancedtools/models/parser.py b/src/caosadvancedtools/models/parser.py
index da4cffa6..11ff991c 100644
--- a/src/caosadvancedtools/models/parser.py
+++ b/src/caosadvancedtools/models/parser.py
@@ -521,7 +521,17 @@ class JsonSchemaParser(Parser):
         if name in self.model:
             return ent
         if elt["type"] == "string":
-            ent = db.Property(name=name, datatype=db.TEXT)
+            if "format" in elt and elt["format"] == "date-time":
+                # Treat datetime strings separately
+                ent = db.Property(name=name, datatype=db.DATETIME)
+            else:
+                ent = db.Property(name=name, datatype=db.TEXT)
+        elif elt["type"] == "integer":
+            ent = db.Property(name=name, datatype=db.INTEGER)
+        elif elt["type"] == "number":
+            ent = db.Property(name=name, datatype=db.DOUBLE)
+        elif elt["type"] == "boolean":
+            ent = db.Property(name=name, datatype=db.BOOLEAN)
         elif elt["type"] == "object":
             ent = self._treat_record_type(elt, name)
         else:
diff --git a/unittests/test_json_schema_model_parser.py b/unittests/test_json_schema_model_parser.py
index 4cf4c234..5b7a2f28 100644
--- a/unittests/test_json_schema_model_parser.py
+++ b/unittests/test_json_schema_model_parser.py
@@ -70,7 +70,7 @@ def test_datamodel_with_atomic_properties():
 
     rt1 = model["Dataset1"]
     assert isinstance(rt1, db.RecordType)
-    assert rt.name == "Dataset1"
+    assert rt1.name == "Dataset1"
     assert rt1.description == "Some description"
     assert len(rt1.get_properties()) == 3
 
-- 
GitLab