tai-sql 0.7.12__tar.gz → 0.7.13__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 (227) hide show
  1. {tai_sql-0.7.12 → tai_sql-0.7.13}/PKG-INFO +1 -1
  2. {tai_sql-0.7.12 → tai_sql-0.7.13}/pyproject.toml +1 -1
  3. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/context.py +6 -0
  4. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/domain/dtos.py.jinja2 +12 -2
  5. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/domain/model.py.jinja2 +8 -1
  6. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/rules/static/modelo.md +3 -0
  7. {tai_sql-0.7.12 → tai_sql-0.7.13}/LICENSE +0 -0
  8. {tai_sql-0.7.12 → tai_sql-0.7.13}/README.md +0 -0
  9. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/__init__.py +0 -0
  10. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/__init__.py +0 -0
  11. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_backup/__init__.py +0 -0
  12. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_backup/main.py +0 -0
  13. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_deploy/__init__.py +0 -0
  14. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_deploy/config.py +0 -0
  15. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_deploy/local.py +0 -0
  16. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_deploy/main.py +0 -0
  17. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_deploy/workflow.py +0 -0
  18. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_feed/__init__.py +0 -0
  19. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_feed/main.py +0 -0
  20. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_generate/__init__.py +0 -0
  21. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_generate/funcs.py +0 -0
  22. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_generate/main.py +0 -0
  23. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_hash_migrate/__init__.py +0 -0
  24. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_hash_migrate/main.py +0 -0
  25. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_info/__init__.py +0 -0
  26. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_info/main.py +0 -0
  27. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_info/status.py +0 -0
  28. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_init/__init__.py +0 -0
  29. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_init/main.py +0 -0
  30. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_init/model.py +0 -0
  31. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_install/__init__.py +0 -0
  32. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_install/main.py +0 -0
  33. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_ping/__init__.py +0 -0
  34. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_ping/main.py +0 -0
  35. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_pull/__init__.py +0 -0
  36. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_pull/funcs.py +0 -0
  37. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_pull/main.py +0 -0
  38. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_restore/__init__.py +0 -0
  39. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_restore/main.py +0 -0
  40. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_rules/__init__.py +0 -0
  41. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_rules/main.py +0 -0
  42. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_schema/__init__.py +0 -0
  43. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_schema/model.py +0 -0
  44. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_schema/new.py +0 -0
  45. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_schema/schemas/__init__.py +0 -0
  46. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_schema/schemas/auth.py +0 -0
  47. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_schema/schemas/base.py +0 -0
  48. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_schema/schemas/chatbot.py +0 -0
  49. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_schema/schemas/default.py +0 -0
  50. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/cmd_schema/set_default.py +0 -0
  51. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/prompts.py +0 -0
  52. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/utils/__init__.py +0 -0
  53. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/utils/connectivity.py +0 -0
  54. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/utils/create.py +0 -0
  55. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/utils/github/__init__.py +0 -0
  56. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/utils/github/auth.py +0 -0
  57. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/utils/github/client.py +0 -0
  58. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/commands/utils/github/models.py +0 -0
  59. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/errors.py +0 -0
  60. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/main.py +0 -0
  61. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/preamble.py +0 -0
  62. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/services/__init__.py +0 -0
  63. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/cli/services/backup.py +0 -0
  64. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/connection/README.md +0 -0
  65. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/connection/__init__.py +0 -0
  66. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/connection/provider.py +0 -0
  67. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/connection/recipe.py +0 -0
  68. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/connection/session.py +0 -0
  69. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/connection/sources.py +0 -0
  70. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/crypto.py +0 -0
  71. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/drivers/__init__.py +0 -0
  72. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/drivers/base.py +0 -0
  73. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/drivers/bigquery.py +0 -0
  74. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/drivers/capabilities.py +0 -0
  75. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/drivers/mysql.py +0 -0
  76. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/drivers/postgresql.py +0 -0
  77. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/drivers/sqlserver.py +0 -0
  78. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/errors/README.md +0 -0
  79. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/errors/__init__.py +0 -0
  80. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/errors/collector.py +0 -0
  81. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/errors/render.py +0 -0
  82. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/errors/types.py +0 -0
  83. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/feed/README.md +0 -0
  84. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/feed/__init__.py +0 -0
  85. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/feed/collect.py +0 -0
  86. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/feed/executor.py +0 -0
  87. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/feed/feeder.py +0 -0
  88. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/feed/plan.py +0 -0
  89. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/feed/presenter.py +0 -0
  90. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/feed/records.py +0 -0
  91. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/feed/transform.py +0 -0
  92. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/__init__.py +0 -0
  93. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/base.py +0 -0
  94. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/diagram/README.md +0 -0
  95. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/diagram/__init__.py +0 -0
  96. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/diagram/assets/README.md +0 -0
  97. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/diagram/assets/cytoscape.min.js +0 -0
  98. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/diagram/builder.py +0 -0
  99. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/diagram/generator.py +0 -0
  100. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/diagram/graphviz_render.py +0 -0
  101. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/diagram/html_render.py +0 -0
  102. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/diagram/layout.py +0 -0
  103. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/diagram/model.py +0 -0
  104. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/diagram/templates/er.html.jinja2 +0 -0
  105. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/diagram/themes.py +0 -0
  106. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/__init__.py +0 -0
  107. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/calculated.py +0 -0
  108. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/base.py.jinja2 +0 -0
  109. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/domain/__init__.py.jinja2 +0 -0
  110. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/domain/dao.py.jinja2 +0 -0
  111. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/facade.py.jinja2 +0 -0
  112. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/macros/aggregation.jinja2 +0 -0
  113. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/macros/dataframe.jinja2 +0 -0
  114. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/macros/filters.jinja2 +0 -0
  115. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/macros/hierarchy.jinja2 +0 -0
  116. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/macros/read.jinja2 +0 -0
  117. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/macros/triggers.jinja2 +0 -0
  118. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/macros/upsert.jinja2 +0 -0
  119. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/macros/vector.jinja2 +0 -0
  120. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/macros/write.jinja2 +0 -0
  121. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/session.py.jinja2 +0 -0
  122. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/shared/__init__.py.jinja2 +0 -0
  123. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/shared/aggregation.py.jinja2 +0 -0
  124. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/shared/context.py.jinja2 +0 -0
  125. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/shared/utils/__init__.py.jinja2 +0 -0
  126. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/shared/utils/encoders.py.jinja2 +0 -0
  127. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/shared/utils/funcs.py.jinja2 +0 -0
  128. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/shared/utils/hierarchy.py.jinja2 +0 -0
  129. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/shared/utils/rls.py.jinja2 +0 -0
  130. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/templates/shared/vector.py.jinja2 +0 -0
  131. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/triggers/__init__.py +0 -0
  132. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/triggers/analyzer.py +0 -0
  133. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/triggers/renderer.py +0 -0
  134. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/triggers/steps.py +0 -0
  135. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/python_client/triggers/transformer.py +0 -0
  136. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/rules/__init__.py +0 -0
  137. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/generators/rules/templates/schema.md.jinja2 +0 -0
  138. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/introspect/README.md +0 -0
  139. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/introspect/__init__.py +0 -0
  140. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/introspect/blueprint.py +0 -0
  141. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/introspect/build.py +0 -0
  142. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/introspect/defaults.py +0 -0
  143. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/introspect/naming.py +0 -0
  144. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/introspect/reader.py +0 -0
  145. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/introspect/templates/schema.py.jinja2 +0 -0
  146. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/introspect/types.py +0 -0
  147. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/introspect/writer.py +0 -0
  148. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/README.md +0 -0
  149. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/__init__.py +0 -0
  150. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/analysis/README.md +0 -0
  151. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/analysis/__init__.py +0 -0
  152. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/analysis/calculated.py +0 -0
  153. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/analysis/collector.py +0 -0
  154. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/analysis/column_analyzer.py +0 -0
  155. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/analysis/constraints.py +0 -0
  156. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/analysis/hints.py +0 -0
  157. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/analysis/relation_analyzer.py +0 -0
  158. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/analysis/schema_analyzer.py +0 -0
  159. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/README.md +0 -0
  160. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/__init__.py +0 -0
  161. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/annotations.py +0 -0
  162. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/base.py +0 -0
  163. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/calculated.py +0 -0
  164. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/columns.py +0 -0
  165. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/constraints.py +0 -0
  166. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/datasource.py +0 -0
  167. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/descriptors.py +0 -0
  168. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/encoders.py +0 -0
  169. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/enumerations.py +0 -0
  170. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/relations.py +0 -0
  171. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/table.py +0 -0
  172. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/trigger_api.py +0 -0
  173. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/triggers.py +0 -0
  174. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/declarative/view.py +0 -0
  175. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/mapping/README.md +0 -0
  176. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/mapping/__init__.py +0 -0
  177. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/mapping/sqlalchemy_mapper.py +0 -0
  178. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/model/README.md +0 -0
  179. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/model/__init__.py +0 -0
  180. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/model/column.py +0 -0
  181. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/model/constraints.py +0 -0
  182. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/model/entity.py +0 -0
  183. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/model/enumeration.py +0 -0
  184. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/model/relation.py +0 -0
  185. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/model/schema.py +0 -0
  186. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/model/trigger.py +0 -0
  187. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/naming.py +0 -0
  188. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/ordering.py +0 -0
  189. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/registry.py +0 -0
  190. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/orm/types.py +0 -0
  191. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/project/README.md +0 -0
  192. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/project/__init__.py +0 -0
  193. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/project/config.py +0 -0
  194. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/project/context.py +0 -0
  195. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/project/manager.py +0 -0
  196. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/project/paths.py +0 -0
  197. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/rules/README.md +0 -0
  198. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/rules/__init__.py +0 -0
  199. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/rules/catalog.py +0 -0
  200. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/rules/installer.py +0 -0
  201. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/rules/meta.py +0 -0
  202. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/rules/service.py +0 -0
  203. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/rules/staleness.py +0 -0
  204. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/rules/static/comandos.md +0 -0
  205. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/rules/static/errores.md +0 -0
  206. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/schema.py +0 -0
  207. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/README.md +0 -0
  208. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/__init__.py +0 -0
  209. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/diff/__init__.py +0 -0
  210. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/diff/constraints.py +0 -0
  211. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/diff/indexes.py +0 -0
  212. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/diff/tables.py +0 -0
  213. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/diff/views.py +0 -0
  214. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/executor.py +0 -0
  215. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/ownership.py +0 -0
  216. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/plan/__init__.py +0 -0
  217. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/plan/planner.py +0 -0
  218. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/plan/statements.py +0 -0
  219. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/presenter.py +0 -0
  220. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/report.py +0 -0
  221. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/safety.py +0 -0
  222. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/state/__init__.py +0 -0
  223. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/state/local.py +0 -0
  224. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/state/model.py +0 -0
  225. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/state/normalize.py +0 -0
  226. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/state/remote.py +0 -0
  227. {tai_sql-0.7.12 → tai_sql-0.7.13}/tai_sql/sync/synchronizer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tai-sql
3
- Version: 0.7.12
3
+ Version: 0.7.13
4
4
  Summary: SQL database management and code generation tool
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tai-sql"
3
- version = "0.7.12"
3
+ version = "0.7.13"
4
4
  description = "SQL database management and code generation tool"
5
5
  license = "MIT"
6
6
  license-files = ["LICENSE"]
@@ -225,6 +225,12 @@ class TemplateContextBuilder:
225
225
  'is_operative': column.is_operative,
226
226
  'is_calculated': column.is_calculated,
227
227
  'self_reference': column.self_reference,
228
+ # La rellena la base de datos (NOW()): no es obligatoria al crear. Faltaba, y las
229
+ # plantillas que la miraban la leían siempre como falsa.
230
+ 'server_now': column.server_now,
231
+ # El tamaño máximo de un texto (`column(length=n)`), para quien valide antes de
232
+ # escribir —los esquemas de formulario de tai-api—. `None` si no se declaró.
233
+ 'max_length': column.length if column.type == 'str' else None,
228
234
  }
229
235
 
230
236
  if column.is_vector:
@@ -247,7 +247,7 @@ class {{ model.name }}Read(PrettyModel):
247
247
  class {{ model.name }}Create(PrettyModel):
248
248
  """DTO de escritura para {{ model.name }}."""
249
249
  {% for column in model.columns -%}
250
- {% if not column.constraints.get('autoincrement', False) and column.default is none and not column.nullable and not column.is_foreign_key and not column.is_operative and not column.has_encoder|default(false) and not column.is_calculated %}
250
+ {% if not column.constraints.get('autoincrement', False) and column.default is none and not column.nullable and not column.is_foreign_key and not column.is_operative and not column.has_encoder|default(false) and not column.is_calculated and not column.server_now %}
251
251
  {{ column.name }}: {{ column.pydantic_type }}
252
252
  {% endif %}
253
253
  {% endfor %}
@@ -257,6 +257,9 @@ class {{ model.name }}Create(PrettyModel):
257
257
  {{ column.name }}: Optional[{{ column.pydantic_type }}] = None
258
258
  {% elif column.is_foreign_key %}
259
259
  {{ column.name }}: Optional[{{ column.pydantic_type }}] = None
260
+ {% elif column.server_now %}
261
+ {# La rellena la base de datos con NOW() si no llega: no es obligatoria. #}
262
+ {{ column.name }}: Optional[{{ column.pydantic_type }}] = None
260
263
  {% elif column.default is none and column.nullable %}
261
264
  {{ column.name }}: Optional[{{ column.pydantic_type }}] = None
262
265
  {% elif column.default is not none %}
@@ -295,11 +298,18 @@ class {{ model.name }}Create(PrettyModel):
295
298
  def to_instance(self) -> {{ model.name }}:
296
299
  model = {{ model.name }}(
297
300
  {% for column in model.columns %}
298
- {% if not column.constraints.get('autoincrement', False) and not column.is_operative and not column.is_calculated %}
301
+ {% if not column.constraints.get('autoincrement', False) and not column.is_operative and not column.is_calculated and not column.server_now %}
299
302
  {{ column.name }}=self.{{ column.name }},
300
303
  {% endif %}
301
304
  {% endfor %}
302
305
  )
306
+ {% for column in model.columns %}
307
+ {% if column.server_now and not column.is_operative and not column.is_calculated %}
308
+ # Solo si llega: asignarle None mandaría un NULL, y no dejaría a la base de datos poner NOW().
309
+ if self.{{ column.name }} is not None:
310
+ model.{{ column.name }} = self.{{ column.name }}
311
+ {% endif %}
312
+ {% endfor %}
303
313
  {% for col in operative_str_cols %}
304
314
  model.{{ col.name }} = get_username()
305
315
  {% endfor %}
@@ -83,6 +83,9 @@ from pgvector.sqlalchemy import Vector
83
83
  {% if column.sa_type and column.sa_type not in sa_imports %}
84
84
  {% set _ = sa_imports.append(column.sa_type) %}
85
85
  {% endif %}
86
+ {% if column.server_now and 'func' not in sa_imports %}
87
+ {% set _ = sa_imports.append('func') %}
88
+ {% endif %}
86
89
  {% endfor %}
87
90
  {% if sa_imports %}
88
91
  from sqlalchemy import {{ sa_imports | sort | join(', ') }}
@@ -165,7 +168,7 @@ class {{ model.name }}(Base):
165
168
  {% set mapped_type = 'Optional[' + py_type + ']' if column.nullable else py_type %}
166
169
  {# Determine if mapped_column() call is needed #}
167
170
  {% set has_constraints = column.constraints.values() | select | list | length > 0 %}
168
- {% set needs_mapped_column = has_constraints or column.encrypt or column.hash or column.is_calculated or column.sa_type is not none or column.type == 'vector' %}
171
+ {% set needs_mapped_column = has_constraints or column.encrypt or column.hash or column.is_calculated or column.sa_type is not none or column.type == 'vector' or column.server_now %}
169
172
  {% if needs_mapped_column %}
170
173
  {% set mc_args = [] %}
171
174
  {% if column.type == 'vector' %}{% set _ = mc_args.append('Vector(' + column.dimensions|string + ')') %}
@@ -185,6 +188,10 @@ class {{ model.name }}(Base):
185
188
  {% endfor %}
186
189
  {% endif %}
187
190
  {% if column.encrypt or column.hash %}{% set _ = mc_args.append('name="' + column.name + '"') %}{% endif %}
191
+ {# La pone la base de datos. Sin declararlo aquí, SQLAlchemy la enviaba como NULL —rellena
192
+ con None lo que no tiene valor para poder agrupar el INSERT— y la base de datos no llegaba
193
+ a poner NOW(). #}
194
+ {% if column.server_now %}{% set _ = mc_args.append('server_default=func.now()') %}{% endif %}
188
195
  {% if column.is_calculated %}{% set _ = mc_args.append('name="' + column.name + '"') %}{% endif %}
189
196
  {{ col_attr }}: Mapped[{{ mapped_type }}] = mapped_column({{ mc_args | join(', ') }})
190
197
  {% else %}
@@ -138,6 +138,9 @@ column(
138
138
 
139
139
  Una columna sin `column()` es una columna normal: `nombre: col[str]` basta.
140
140
 
141
+ `server_now=True` la rellena la base de datos con `NOW()`: en el `Create` es opcional, y si no se
142
+ envía, el cliente no la manda y el motor pone la fecha.
143
+
141
144
  ### Tipos disponibles
142
145
 
143
146
  `int`, `bigint`, `smallint`, `float`, `numeric`, `str`, `text`, `bool`, `datetime`,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes