nsj-rest-lib2 0.0.16__tar.gz → 0.0.17__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/PKG-INFO +4 -1
  2. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/README.md +4 -1
  3. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/compiler.py +5 -0
  4. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/compiler_structures.py +2 -0
  5. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/edl_model/entity_model_base.py +5 -0
  6. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/edl_model/trait_property_meta_model.py +3 -0
  7. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/property_compiler.py +19 -2
  8. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2.egg-info/PKG-INFO +4 -1
  9. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/setup.cfg +1 -1
  10. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/__init__.py +0 -0
  11. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/__init__.py +0 -0
  12. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/ai_compiler.py +0 -0
  13. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/dto_compiler.py +0 -0
  14. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/edl_model/__init__.py +0 -0
  15. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/edl_model/ai_entity_edl.py +0 -0
  16. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/edl_model/api_model.py +0 -0
  17. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/edl_model/column_meta_model.py +0 -0
  18. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/edl_model/entity_model.py +0 -0
  19. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/edl_model/entity_model_root.py +0 -0
  20. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/edl_model/index_model.py +0 -0
  21. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/edl_model/primitives.py +0 -0
  22. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/edl_model/property_meta_model.py +0 -0
  23. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/edl_model/repository_model.py +0 -0
  24. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/entity_compiler.py +0 -0
  25. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/model.py +0 -0
  26. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/util/__init__.py +0 -0
  27. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/util/str_util.py +0 -0
  28. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/util/type_naming_util.py +0 -0
  29. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/compiler/util/type_util.py +0 -0
  30. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/controller/__init__.py +0 -0
  31. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/controller/dynamic_controller.py +0 -0
  32. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/exception.py +0 -0
  33. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/redis_config.py +0 -0
  34. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/service/__init__.py +0 -0
  35. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/service/entity_loader.py +0 -0
  36. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2/settings.py +0 -0
  37. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2.egg-info/SOURCES.txt +0 -0
  38. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2.egg-info/dependency_links.txt +0 -0
  39. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2.egg-info/requires.txt +0 -0
  40. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/nsj_rest_lib2.egg-info/top_level.txt +0 -0
  41. {nsj_rest_lib2-0.0.16 → nsj_rest_lib2-0.0.17}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nsj_rest_lib2
3
- Version: 0.0.16
3
+ Version: 0.0.17
4
4
  Summary: Biblioteca para permitir a distribuição de rotas dinâmicas numa API, configuradas por meio de EDLs declarativos (em formato JSON).
5
5
  Home-page: https://github.com/Nasajon/nsj_rest_lib2
6
6
  Author: Nasajon Sistemas
@@ -31,3 +31,6 @@ Biblioteca para permitir a distribuição de rotas dinâmicas numa API, configur
31
31
  * Rever modo de usar o InjectFactory (talvez dando ciência, ao RestLib, do padrão multibanco)
32
32
  * Implementar e documentar campos join
33
33
  * Implementar e documentar conjuntos
34
+ * Dar erro ao haver conflito de nomes das propriedades (por qualquer tipo de herança)
35
+ * Rotas para o inline
36
+ * inline será para composição (arquivo externo é agregação)
@@ -9,4 +9,7 @@ Biblioteca para permitir a distribuição de rotas dinâmicas numa API, configur
9
9
  * Usar pydantic, ou similar, para transformar a configuração das entidades, no redis, num objeto
10
10
  * Rever modo de usar o InjectFactory (talvez dando ciência, ao RestLib, do padrão multibanco)
11
11
  * Implementar e documentar campos join
12
- * Implementar e documentar conjuntos
12
+ * Implementar e documentar conjuntos
13
+ * Dar erro ao haver conflito de nomes das propriedades (por qualquer tipo de herança)
14
+ * Rotas para o inline
15
+ * inline será para composição (arquivo externo é agregação)
@@ -305,6 +305,11 @@ class EDLCompiler:
305
305
  if entity_model.trait_properties:
306
306
  properties_structure.trait_properties.update(entity_model.trait_properties)
307
307
 
308
+ if entity_model.extends_properties:
309
+ properties_structure.extends_properties.update(
310
+ entity_model.extends_properties
311
+ )
312
+
308
313
  if entity_model.repository.properties:
309
314
  properties_structure.entity_properties.update(
310
315
  entity_model.repository.properties
@@ -3,6 +3,7 @@ from nsj_rest_lib2.compiler.edl_model.entity_model_base import EntityModelBase
3
3
  from nsj_rest_lib2.compiler.edl_model.index_model import IndexModel
4
4
  from nsj_rest_lib2.compiler.edl_model.property_meta_model import PropertyMetaModel
5
5
  from nsj_rest_lib2.compiler.edl_model.trait_property_meta_model import (
6
+ ExtendsPropertyMetaModel,
6
7
  TraitPropertyMetaModel,
7
8
  )
8
9
 
@@ -23,6 +24,7 @@ class PropertiesCompilerStructure:
23
24
  self.metric_label: list[str] = []
24
25
  self.entity_properties: dict[str, ColumnMetaModel] = {}
25
26
  self.trait_properties: dict[str, TraitPropertyMetaModel] = {}
27
+ self.extends_properties: dict[str, ExtendsPropertyMetaModel] = {}
26
28
 
27
29
 
28
30
  class ComponentsCompilerStructure:
@@ -8,6 +8,7 @@ from typing import Dict, List, Optional
8
8
  from nsj_rest_lib2.compiler.edl_model.property_meta_model import PropertyMetaModel
9
9
  from nsj_rest_lib2.compiler.edl_model.repository_model import RepositoryModel
10
10
  from nsj_rest_lib2.compiler.edl_model.trait_property_meta_model import (
11
+ ExtendsPropertyMetaModel,
11
12
  TraitPropertyMetaModel,
12
13
  )
13
14
 
@@ -55,6 +56,10 @@ class EntityModelBase(BaseModel):
55
56
  None,
56
57
  description="Dicionário de propriedades condicionais da trait (isso é, especifica propriedades, e seus valores fixos, que serão usados como um tipo de filtro fixo usado como condição para que a propridade principal assum o papel daquele tipo de trait).",
57
58
  )
59
+ extends_properties: Optional[Dict[str, ExtendsPropertyMetaModel]] = Field(
60
+ None,
61
+ description="Dicionário de propriedades condicionais associadas ao uso de extends (especifica propriedades e seus valores fixos, usados como filtros quando a entidade é uma especialização via extends).",
62
+ )
58
63
  properties: Dict[str, PropertyMetaModel] = Field(
59
64
  ..., description="Dicionário de propriedades do modelo."
60
65
  )
@@ -14,3 +14,6 @@ class TraitPropertyMetaModel(BaseModel):
14
14
  None,
15
15
  description="Lista de valores permitidos.",
16
16
  )
17
+
18
+
19
+ ExtendsPropertyMetaModel = TraitPropertyMetaModel
@@ -153,7 +153,24 @@ class EDLPropertyCompiler:
153
153
  for pkey in properties_structure.trait_properties:
154
154
  prop = properties_structure.trait_properties[pkey]
155
155
 
156
- self._compile_trait_property(
156
+ self._compile_trait_extends_property(
157
+ properties_structure,
158
+ map_unique_by_property,
159
+ pkey,
160
+ prop,
161
+ ast_dto_attributes,
162
+ ast_entity_attributes,
163
+ fixed_filters,
164
+ escopo,
165
+ entity_model,
166
+ enum_classes,
167
+ prefx_class_name,
168
+ )
169
+
170
+ for pkey in properties_structure.extends_properties:
171
+ prop = properties_structure.extends_properties[pkey]
172
+
173
+ self._compile_trait_extends_property(
157
174
  properties_structure,
158
175
  map_unique_by_property,
159
176
  pkey,
@@ -177,7 +194,7 @@ class EDLPropertyCompiler:
177
194
  fixed_filters,
178
195
  )
179
196
 
180
- def _compile_trait_property(
197
+ def _compile_trait_extends_property(
181
198
  self,
182
199
  properties_structure: PropertiesCompilerStructure,
183
200
  map_unique_by_property: dict[str, IndexCompilerStructure],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nsj_rest_lib2
3
- Version: 0.0.16
3
+ Version: 0.0.17
4
4
  Summary: Biblioteca para permitir a distribuição de rotas dinâmicas numa API, configuradas por meio de EDLs declarativos (em formato JSON).
5
5
  Home-page: https://github.com/Nasajon/nsj_rest_lib2
6
6
  Author: Nasajon Sistemas
@@ -31,3 +31,6 @@ Biblioteca para permitir a distribuição de rotas dinâmicas numa API, configur
31
31
  * Rever modo de usar o InjectFactory (talvez dando ciência, ao RestLib, do padrão multibanco)
32
32
  * Implementar e documentar campos join
33
33
  * Implementar e documentar conjuntos
34
+ * Dar erro ao haver conflito de nomes das propriedades (por qualquer tipo de herança)
35
+ * Rotas para o inline
36
+ * inline será para composição (arquivo externo é agregação)
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = nsj_rest_lib2
3
- version = 0.0.16
3
+ version = 0.0.17
4
4
  author = Nasajon Sistemas
5
5
  author_email = contact.dev@nasajon.com.br
6
6
  description = Biblioteca para permitir a distribuição de rotas dinâmicas numa API, configuradas por meio de EDLs declarativos (em formato JSON).