csrd-utils 0.3.78__tar.gz → 0.3.80__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 (144) hide show
  1. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/PKG-INFO +1 -1
  2. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/pyproject.toml +1 -1
  3. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/__main__.py +0 -2
  4. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/cluster.py +3 -3
  5. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/cookiecutter.json +0 -1
  6. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/item_repository.py +8 -2
  7. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/repositories/item_repository.py +1 -1
  8. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/requirements.txt +1 -1
  9. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/settings.py +7 -1
  10. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/cookiecutter.json +0 -1
  11. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +9 -2
  12. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/token_repository.py +3 -2
  13. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/requirements.txt +1 -1
  14. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/settings.py +6 -1
  15. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_view.py +1 -5
  16. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/cookiecutter.json +0 -1
  17. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +8 -2
  18. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/user_repository.py +8 -7
  19. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/requirements.txt +1 -1
  20. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/settings.py +6 -1
  21. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/.gitignore +0 -0
  22. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/README.md +0 -0
  23. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/__init__.py +0 -0
  24. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/audit.py +0 -0
  25. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/augmentor.py +0 -0
  26. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/doctor.py +0 -0
  27. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/caching/conftest.fragment.py +0 -0
  28. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/caching/docker-compose.fragment.yaml +0 -0
  29. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/caching/manifest.yaml +0 -0
  30. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/caching/requirements.fragment +0 -0
  31. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/caching/settings.fragment.py +0 -0
  32. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/caching/src/app/cache.py +0 -0
  33. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/caching/tests/test_cache.py +0 -0
  34. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/logging/conftest.fragment.py +0 -0
  35. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/logging/manifest.yaml +0 -0
  36. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/logging/requirements.fragment +0 -0
  37. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/logging/settings.fragment.py +0 -0
  38. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/logging/src/app/middleware/logging.py +0 -0
  39. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/logging/tests/test_logging_middleware.py +0 -0
  40. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/metrics/conftest.fragment.py +0 -0
  41. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml +0 -0
  42. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/metrics/manifest.yaml +0 -0
  43. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/metrics/requirements.fragment +0 -0
  44. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/metrics/settings.fragment.py +0 -0
  45. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/metrics/src/app/middleware/metrics.py +0 -0
  46. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/metrics/tests/test_metrics_middleware.py +0 -0
  47. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/tracing/conftest.fragment.py +0 -0
  48. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/tracing/manifest.yaml +0 -0
  49. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/tracing/requirements.fragment +0 -0
  50. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/tracing/settings.fragment.py +0 -0
  51. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/tracing/src/app/middleware/tracing.py +0 -0
  52. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/tracing/tests/test_tracing_middleware.py +0 -0
  53. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/workers/conftest.fragment.py +0 -0
  54. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/workers/docker-compose.fragment.yaml +0 -0
  55. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/workers/manifest.yaml +0 -0
  56. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/workers/requirements.fragment +0 -0
  57. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/workers/settings.fragment.py +0 -0
  58. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/workers/src/app/workers/__init__.py +0 -0
  59. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/workers/src/app/workers/celery_app.py +0 -0
  60. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/workers/src/app/workers/tasks.py +0 -0
  61. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/features/workers/tests/test_workers.py +0 -0
  62. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/fragments.py +0 -0
  63. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/generator.py +0 -0
  64. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/resources.py +0 -0
  65. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/README.md +0 -0
  66. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/cookiecutter.json +0 -0
  67. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/hooks/post_gen_project.py +0 -0
  68. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.cookiecutterignore +0 -0
  69. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  70. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  71. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  72. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  73. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/cache.py +0 -0
  74. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +0 -0
  75. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/upstreams.py +0 -0
  76. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
  77. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +0 -0
  78. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/delegates.py +0 -0
  79. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/item_repository.py +0 -0
  80. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/worker_broker.py +0 -0
  81. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/docker-compose.yml +0 -0
  82. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/__init__.py +0 -0
  83. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/logging.py +0 -0
  84. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  85. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/item_repository.py +0 -0
  86. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
  87. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
  88. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/__init__.py +0 -0
  89. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/__init__.py +0 -0
  90. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/test_logging_middleware.py +0 -0
  91. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/conftest.py +0 -0
  92. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/test_items.py +0 -0
  93. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/__init__.py +0 -0
  94. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_cache.py +0 -0
  95. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_database_settings.py +0 -0
  96. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_delegates.py +0 -0
  97. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_settings_contracts.py +0 -0
  98. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_worker_broker.py +0 -0
  99. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  100. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  101. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  102. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +0 -0
  103. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/__init__.py +0 -0
  104. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/tasks.py +0 -0
  105. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  106. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  107. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  108. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  109. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +0 -0
  110. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/auth_delegate.py +0 -0
  111. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/identity_delegate.py +0 -0
  112. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
  113. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_passthrough.py +0 -0
  114. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +0 -0
  115. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/models/__init__.py +0 -0
  116. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/models/auth_service.py +0 -0
  117. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/models/items.py +0 -0
  118. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  119. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  120. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  121. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_service_view.py +0 -0
  122. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  123. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +0 -0
  124. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  125. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  126. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  127. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  128. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/models/__init__.py +0 -0
  129. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/models/auth.py +0 -0
  130. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  131. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  132. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  133. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  134. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  135. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  136. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  137. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  138. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/models/__init__.py +0 -0
  139. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/models/users.py +0 -0
  140. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  141. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  142. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  143. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  144. {csrd_utils-0.3.78 → csrd_utils-0.3.80}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/users_view.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: csrd-utils
3
- Version: 0.3.78
3
+ Version: 0.3.80
4
4
  Summary: CLI utilities for csrd service generation and feature augmentation
5
5
  Project-URL: Repository, https://github.com/csrd-api/fastapi-common
6
6
  Project-URL: Documentation, https://github.com/csrd-api/fastapi-common/tree/main/packages/utils
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "csrd-utils"
3
- version = "0.3.78"
3
+ version = "0.3.80"
4
4
  description = "CLI utilities for csrd service generation and feature augmentation"
5
5
  license = { text = "MIT" }
6
6
  requires-python = ">=3.12"
@@ -485,8 +485,6 @@ def _generate_services_from_cluster_spec(
485
485
  role = str(service.get("role", "custom")).strip()
486
486
  # Build extra_context for platform templates that have additional variables
487
487
  extra: dict[str, str] = {}
488
- if role in {"app", "auth", "identity"}:
489
- extra["db_path"] = "./platform.db"
490
488
  if role == "auth":
491
489
  # Resolve the identity-service URL from the port map if present
492
490
  identity_port = next(
@@ -313,7 +313,7 @@ def render_compose(spec: ClusterSpec) -> dict[str, Any]:
313
313
  services = spec["services"]
314
314
  infra = _infer_infra(services)
315
315
  compose: dict[str, Any] = {"services": {}}
316
- compose_volumes: dict[str, dict[str, str]] = {}
316
+ compose_volumes: dict[str, None] = {}
317
317
 
318
318
  for service in services:
319
319
  name = str(service["name"])
@@ -366,14 +366,14 @@ def render_compose(spec: ClusterSpec) -> dict[str, Any]:
366
366
 
367
367
  if volume_name is not None:
368
368
  app_service["volumes"] = [f"{volume_name}:/data"]
369
- compose_volumes[volume_name] = {}
369
+ compose_volumes[volume_name] = None
370
370
 
371
371
  if depends_on:
372
372
  app_service["depends_on"] = depends_on
373
373
  compose["services"][name] = app_service
374
374
 
375
375
  if "postgres" in infra:
376
- compose_volumes["postgres-data"] = {}
376
+ compose_volumes["postgres-data"] = None
377
377
  compose["services"]["postgres"] = {
378
378
  "image": "postgres:16",
379
379
  "environment": {
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "service_name": "app-service",
3
3
  "port": "8080",
4
- "db_path": "./platform.db",
5
4
  "auth_service_url": "http://auth-service:8081",
6
5
  "identity_service_url": "http://identity-service:8082",
7
6
  "__service_name_snake": "{{ cookiecutter.service_name | replace('-', '_') }}"
@@ -3,14 +3,20 @@ from typing import Annotated
3
3
 
4
4
  from fastapi import Depends
5
5
 
6
- from csrd.repository import SQLiteAdapter
6
+ from csrd.repository import PGAdapter
7
7
 
8
8
  from ..repositories import ItemRepository
9
9
  from ..settings import settings
10
10
 
11
11
 
12
12
  async def item_repository_factory() -> AsyncIterator[ItemRepository]:
13
- adapter = SQLiteAdapter(settings.db_path)
13
+ adapter = PGAdapter(
14
+ host=settings.db_host,
15
+ port=settings.db_port,
16
+ user=settings.db_user,
17
+ password=settings.db_password,
18
+ database=settings.db_name,
19
+ )
14
20
  await adapter.connect()
15
21
  repo = ItemRepository(adapter)
16
22
  await repo._init_schema()
@@ -42,7 +42,7 @@ class ItemRepository(BaseRepository):
42
42
  async def get_item(self, item_id: str) -> dict[str, str] | None:
43
43
  await self._init_schema()
44
44
  row = await self.fetch_one(
45
- "SELECT id, name, created_at FROM items WHERE id = :id",
45
+ "SELECT id, name, created_at FROM items WHERE id = %(id)s",
46
46
  {"id": item_id},
47
47
  )
48
48
  if row is None:
@@ -2,7 +2,7 @@ fastapi>=0.115,<1
2
2
  uvicorn[standard]>=0.30,<1
3
3
  pydantic-settings>=2.6,<3
4
4
  httpx>=0.27,<1
5
- aiosqlite>=0.21,<1
5
+ psycopg[binary]>=3.1,<4
6
6
  csrd-auth>=0.1.0,<1
7
7
  csrd-delegate>=0.1.0,<1
8
8
  csrd-repository>=0.1.0,<1
@@ -6,7 +6,13 @@ class Settings(BaseSettings):
6
6
 
7
7
  app_name: str = "{{ cookiecutter.service_name }}"
8
8
  port: int = {{ cookiecutter.port }}
9
- db_path: str = "{{ cookiecutter.db_path }}"
9
+
10
+ db_host: str = "localhost"
11
+ db_port: int = 5432
12
+ db_user: str = "service_user"
13
+ db_password: str = "change_me"
14
+ db_name: str = "service_db"
15
+
10
16
  auth_service_url: str = "{{ cookiecutter.auth_service_url }}"
11
17
  identity_service_url: str = "{{ cookiecutter.identity_service_url }}"
12
18
 
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "service_name": "auth-service",
3
3
  "port": "8081",
4
- "db_path": "./platform.db",
5
4
  "identity_service_url": "http://identity-service:8082",
6
5
  "__service_name_snake": "{{ cookiecutter.service_name | replace('-', '_') }}"
7
6
  }
@@ -1,16 +1,23 @@
1
+ # Auth service dependencies
1
2
  from collections.abc import AsyncIterator
2
3
  from typing import Annotated
3
4
 
4
5
  from fastapi import Depends
5
6
 
6
- from csrd.repository import SQLiteAdapter
7
+ from csrd.repository import PGAdapter
7
8
 
8
9
  from ..repositories.token_repository import TokenRepository
9
10
  from ..settings import settings
10
11
 
11
12
 
12
13
  async def token_repository_factory() -> AsyncIterator[TokenRepository]:
13
- adapter = SQLiteAdapter(settings.db_path)
14
+ adapter = PGAdapter(
15
+ host=settings.db_host,
16
+ port=settings.db_port,
17
+ user=settings.db_user,
18
+ password=settings.db_password,
19
+ database=settings.db_name,
20
+ )
14
21
  await adapter.connect()
15
22
  repo = TokenRepository(adapter)
16
23
  await repo._init_schema()
@@ -26,7 +26,8 @@ class TokenRepository(BaseRepository):
26
26
  issued_at = datetime.now(UTC).isoformat()
27
27
  await self._init_schema()
28
28
  await self.execute(
29
- "INSERT OR REPLACE INTO issued_tokens (token, subject, issued_at) "
30
- "VALUES (:token, :subject, :issued_at)",
29
+ "INSERT INTO issued_tokens (token, subject, issued_at) "
30
+ "VALUES (%(token)s, %(subject)s, %(issued_at)s) "
31
+ "ON CONFLICT (token) DO UPDATE SET subject = EXCLUDED.subject, issued_at = EXCLUDED.issued_at",
31
32
  {"token": token, "subject": subject, "issued_at": issued_at},
32
33
  )
@@ -3,7 +3,7 @@ uvicorn[standard]>=0.30,<1
3
3
  pyjwt>=2.8,<3
4
4
  pydantic-settings>=2.6,<3
5
5
  httpx>=0.27,<1
6
- aiosqlite>=0.21,<1
6
+ psycopg[binary]>=3.1,<4
7
7
  csrd-versioning>=0.1.0,<1
8
8
  csrd-repository>=0.1.0,<1
9
9
  csrd-auth>=0.1.0,<1
@@ -13,8 +13,13 @@ class Settings(BaseSettings):
13
13
  jwt_audience: str = "cluster"
14
14
  jwt_ttl_seconds: int = 3600
15
15
 
16
- db_path: str = "{{ cookiecutter.db_path }}"
17
16
  identity_service_url: str = "{{ cookiecutter.identity_service_url }}"
18
17
 
18
+ db_host: str = "localhost"
19
+ db_port: int = 5432
20
+ db_user: str = "service_user"
21
+ db_password: str = "change_me"
22
+ db_name: str = "service_db"
23
+
19
24
 
20
25
  settings = Settings()
@@ -6,7 +6,6 @@ from fastapi import APIRouter, HTTPException, Request
6
6
 
7
7
  from csrd.auth import JWTAuthenticator, StaticKeyProvider
8
8
 
9
- from ...dependencies import TokenRepositoryDep
10
9
  from ...models import TokenRequest, TokenResponse, TokenVerifyResponse, VerifyClaims, VerifyRequest
11
10
  from ...settings import settings
12
11
 
@@ -48,9 +47,7 @@ async def _validate_credentials(username: str, password: str) -> list[str]:
48
47
 
49
48
 
50
49
  @router.post("/token", response_model=TokenResponse)
51
- async def issue_token(
52
- payload: TokenRequest, token_repo: TokenRepositoryDep
53
- ) -> TokenResponse:
50
+ async def issue_token(payload: TokenRequest) -> TokenResponse:
54
51
  roles = await _validate_credentials(payload.username, payload.password)
55
52
 
56
53
  now = datetime.now(UTC)
@@ -64,7 +61,6 @@ async def issue_token(
64
61
  "roles": roles,
65
62
  }
66
63
  token = jwt.encode(claims, settings.jwt_secret, algorithm=settings.jwt_algorithm)
67
- await token_repo.record_issued_token(token=token, subject=payload.username)
68
64
  return TokenResponse(
69
65
  access_token=token, token_type="bearer", expires_in=settings.jwt_ttl_seconds
70
66
  )
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "service_name": "identity-service",
3
3
  "port": "8082",
4
- "db_path": "./platform.db",
5
4
  "__service_name_snake": "{{ cookiecutter.service_name | replace('-', '_') }}"
6
5
  }
@@ -3,14 +3,20 @@ from typing import Annotated
3
3
 
4
4
  from fastapi import Depends
5
5
 
6
- from csrd.repository import SQLiteAdapter
6
+ from csrd.repository import PGAdapter
7
7
 
8
8
  from ..repositories.user_repository import UserRepository
9
9
  from ..settings import settings
10
10
 
11
11
 
12
12
  async def user_repository_factory() -> AsyncIterator[UserRepository]:
13
- adapter = SQLiteAdapter(settings.db_path)
13
+ adapter = PGAdapter(
14
+ host=settings.db_host,
15
+ port=settings.db_port,
16
+ user=settings.db_user,
17
+ password=settings.db_password,
18
+ database=settings.db_name,
19
+ )
14
20
  await adapter.connect()
15
21
  repo = UserRepository(adapter)
16
22
  await repo._init_schema()
@@ -49,7 +49,7 @@ class UserRepository(BaseRepository):
49
49
  created_at = datetime.now(UTC).isoformat()
50
50
  await self._init_schema()
51
51
  await self.execute(
52
- "INSERT INTO users (id, username, created_at) VALUES (:id, :username, :created_at)",
52
+ "INSERT INTO users (id, username, created_at) VALUES (%(id)s, %(username)s, %(created_at)s)",
53
53
  {"id": user_id, "username": username, "created_at": created_at},
54
54
  )
55
55
  return {"id": user_id, "username": username, "created_at": created_at}
@@ -57,7 +57,7 @@ class UserRepository(BaseRepository):
57
57
  async def get_user(self, user_id: str) -> dict[str, str] | None:
58
58
  await self._init_schema()
59
59
  row = await self.fetch_one(
60
- "SELECT id, username, created_at FROM users WHERE id = :id",
60
+ "SELECT id, username, created_at FROM users WHERE id = %(id)s",
61
61
  {"id": user_id},
62
62
  )
63
63
  if row is None:
@@ -71,7 +71,7 @@ class UserRepository(BaseRepository):
71
71
  async def get_roles(self, user_id: str) -> list[str]:
72
72
  await self._init_schema()
73
73
  rows = await self.fetch_all(
74
- "SELECT role FROM user_roles WHERE user_id = :user_id",
74
+ "SELECT role FROM user_roles WHERE user_id = %(user_id)s",
75
75
  {"user_id": user_id},
76
76
  )
77
77
  return [str(row["role"]) for row in rows]
@@ -79,7 +79,8 @@ class UserRepository(BaseRepository):
79
79
  async def assign_role(self, user_id: str, role: str) -> None:
80
80
  await self._init_schema()
81
81
  await self.execute(
82
- "INSERT OR IGNORE INTO user_roles (user_id, role) VALUES (:user_id, :role)",
82
+ "INSERT INTO user_roles (user_id, role) VALUES (%(user_id)s, %(role)s) "
83
+ "ON CONFLICT (user_id, role) DO NOTHING",
83
84
  {"user_id": user_id, "role": role},
84
85
  )
85
86
 
@@ -88,7 +89,7 @@ class UserRepository(BaseRepository):
88
89
  row = await self.fetch_one(
89
90
  "SELECT u.id, u.username, u.created_at FROM users u "
90
91
  "JOIN user_credentials c ON c.user_id = u.id "
91
- "WHERE u.username = :username AND c.password_hash = :password_hash",
92
+ "WHERE u.username = %(username)s AND c.password_hash = %(password_hash)s",
92
93
  {"username": username, "password_hash": self._hash_password(username, password)},
93
94
  )
94
95
  if row is None:
@@ -105,7 +106,7 @@ class UserRepository(BaseRepository):
105
106
  async def signup(self, username: str, password: str) -> dict[str, str]:
106
107
  await self._init_schema()
107
108
  existing = await self.fetch_one(
108
- "SELECT id FROM users WHERE username = :username",
109
+ "SELECT id FROM users WHERE username = %(username)s",
109
110
  {"username": username},
110
111
  )
111
112
  if existing is not None:
@@ -114,7 +115,7 @@ class UserRepository(BaseRepository):
114
115
  user = await self.create_user(username)
115
116
  await self.execute(
116
117
  "INSERT INTO user_credentials (user_id, password_hash) "
117
- "VALUES (:user_id, :password_hash)",
118
+ "VALUES (%(user_id)s, %(password_hash)s)",
118
119
  {
119
120
  "user_id": user["id"],
120
121
  "password_hash": self._hash_password(username, password),
@@ -1,6 +1,6 @@
1
1
  fastapi>=0.115,<1
2
2
  uvicorn[standard]>=0.30,<1
3
3
  pydantic-settings>=2.6,<3
4
- aiosqlite>=0.21,<1
4
+ psycopg[binary]>=3.1,<4
5
5
  csrd-versioning>=0.1.0,<1
6
6
  csrd-repository>=0.1.0,<1
@@ -6,7 +6,12 @@ class Settings(BaseSettings):
6
6
 
7
7
  app_name: str = "{{ cookiecutter.service_name }}"
8
8
  port: int = {{ cookiecutter.port }}
9
- db_path: str = "{{ cookiecutter.db_path }}"
9
+
10
+ db_host: str = "localhost"
11
+ db_port: int = 5432
12
+ db_user: str = "service_user"
13
+ db_password: str = "change_me"
14
+ db_name: str = "service_db"
10
15
 
11
16
 
12
17
  settings = Settings()
File without changes
File without changes