nsj-rest-lib2 0.0.18__tar.gz → 0.0.19__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.18 → nsj_rest_lib2-0.0.19}/PKG-INFO +1 -1
  2. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/compiler.py +27 -1
  3. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/compiler_structures.py +1 -0
  4. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/property_compiler.py +24 -0
  5. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2.egg-info/PKG-INFO +1 -1
  6. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/setup.cfg +1 -1
  7. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/README.md +0 -0
  8. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/__init__.py +0 -0
  9. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/__init__.py +0 -0
  10. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/ai_compiler.py +0 -0
  11. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/dto_compiler.py +0 -0
  12. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/edl_model/__init__.py +0 -0
  13. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/edl_model/ai_entity_edl.py +0 -0
  14. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/edl_model/api_model.py +0 -0
  15. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/edl_model/column_meta_model.py +0 -0
  16. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/edl_model/entity_model.py +0 -0
  17. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/edl_model/entity_model_base.py +0 -0
  18. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/edl_model/entity_model_root.py +0 -0
  19. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/edl_model/index_model.py +0 -0
  20. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/edl_model/primitives.py +0 -0
  21. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/edl_model/property_meta_model.py +0 -0
  22. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/edl_model/repository_model.py +0 -0
  23. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/edl_model/trait_property_meta_model.py +0 -0
  24. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/entity_compiler.py +0 -0
  25. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/model.py +0 -0
  26. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/util/__init__.py +0 -0
  27. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/util/str_util.py +0 -0
  28. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/util/type_naming_util.py +0 -0
  29. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/compiler/util/type_util.py +0 -0
  30. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/controller/__init__.py +0 -0
  31. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/controller/dynamic_controller.py +0 -0
  32. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/exception.py +0 -0
  33. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/redis_config.py +0 -0
  34. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/service/__init__.py +0 -0
  35. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/service/entity_loader.py +0 -0
  36. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2/settings.py +0 -0
  37. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2.egg-info/SOURCES.txt +0 -0
  38. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2.egg-info/dependency_links.txt +0 -0
  39. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2.egg-info/requires.txt +0 -0
  40. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/nsj_rest_lib2.egg-info/top_level.txt +0 -0
  41. {nsj_rest_lib2-0.0.18 → nsj_rest_lib2-0.0.19}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nsj_rest_lib2
3
- Version: 0.0.18
3
+ Version: 0.0.19
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
@@ -290,7 +290,33 @@ class EDLCompiler:
290
290
  # Populando com as propriedades da entidade atual
291
291
  properties_structure.properties.update(entity_model.properties)
292
292
  if entity_model.main_properties:
293
- properties_structure.main_properties.extend(entity_model.main_properties)
293
+ for main_property in entity_model.main_properties:
294
+ if not isinstance(main_property, str):
295
+ continue
296
+
297
+ if "/" in main_property:
298
+ path_parts = [part.strip() for part in main_property.split("/") if part]
299
+ if len(path_parts) < 2 or not path_parts[0]:
300
+ raise Exception(
301
+ f"Propriedade resumo inválida '{main_property}' na entidade '{entity_model.id}'."
302
+ )
303
+
304
+ relation_name = path_parts[0]
305
+ resume_path_parts = path_parts[1:]
306
+ resume_field = ".".join(resume_path_parts)
307
+
308
+ if relation_name not in properties_structure.main_properties:
309
+ properties_structure.main_properties.append(relation_name)
310
+
311
+ resume_fields = properties_structure.main_resume_fields.setdefault(
312
+ relation_name, []
313
+ )
314
+
315
+ if resume_field and resume_field not in resume_fields:
316
+ resume_fields.append(resume_field)
317
+ else:
318
+ if main_property not in properties_structure.main_properties:
319
+ properties_structure.main_properties.append(main_property)
294
320
  if entity_model.required:
295
321
  properties_structure.required.extend(entity_model.required)
296
322
  if entity_model.partition_data:
@@ -18,6 +18,7 @@ class PropertiesCompilerStructure:
18
18
  def __init__(self) -> None:
19
19
  self.properties: dict[str, PropertyMetaModel] = {}
20
20
  self.main_properties: list[str] = []
21
+ self.main_resume_fields: dict[str, list[str]] = {}
21
22
  self.required: list[str] = []
22
23
  self.partition_data: list[str] = []
23
24
  self.search_properties: list[str] = []
@@ -670,6 +670,18 @@ class EDLPropertyCompiler:
670
670
  )
671
671
  )
672
672
 
673
+ resume_fields = properties_structure.main_resume_fields.get(pkey)
674
+ if resume_fields:
675
+ keywords.append(
676
+ ast.keyword(
677
+ arg="resume_fields",
678
+ value=ast.List(
679
+ elts=[ast.Constant(value=field) for field in resume_fields],
680
+ ctx=ast.Load(),
681
+ ),
682
+ )
683
+ )
684
+
673
685
  # Resolvendo a coluna usada no relacionamento
674
686
  if (
675
687
  not properties_structure.entity_properties
@@ -736,6 +748,18 @@ class EDLPropertyCompiler:
736
748
  ):
737
749
  keywords.append(ast.keyword(arg="resume", value=ast.Constant(True)))
738
750
 
751
+ resume_fields = properties_structure.main_resume_fields.get(pkey)
752
+ if resume_fields:
753
+ keywords.append(
754
+ ast.keyword(
755
+ arg="resume_fields",
756
+ value=ast.List(
757
+ elts=[ast.Constant(value=field) for field in resume_fields],
758
+ ctx=ast.Load(),
759
+ ),
760
+ )
761
+ )
762
+
739
763
  if prop.validator:
740
764
  keywords.append(
741
765
  ast.keyword(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nsj_rest_lib2
3
- Version: 0.0.18
3
+ Version: 0.0.19
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
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = nsj_rest_lib2
3
- version = 0.0.18
3
+ version = 0.0.19
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).
File without changes