csrd-utils 0.3.89__tar.gz → 0.3.90__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.
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/PKG-INFO +1 -1
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/pyproject.toml +1 -1
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/compose/scaffolder.py +41 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/compose/service_renderers.py +66 -19
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/generate/handlers.py +9 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/augments/db-config/dependencies/db.py +3 -3
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/augments/jwt-auth-provider/dependencies/db.py +4 -4
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/augments/jwt-auth-provider/migrations.py +2 -2
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/.gitignore +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/README.md +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/__main__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/audit.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/augmentor.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/cluster.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/doctor.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/caching/conftest.fragment.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/caching/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/caching/manifest.yaml +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/caching/requirements.fragment +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/caching/settings.fragment.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/caching/src/app/cache.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/caching/tests/test_cache.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/logging/conftest.fragment.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/logging/manifest.yaml +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/logging/requirements.fragment +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/logging/settings.fragment.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/logging/src/app/middleware/logging.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/logging/tests/test_logging_middleware.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/metrics/conftest.fragment.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/metrics/manifest.yaml +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/metrics/requirements.fragment +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/metrics/settings.fragment.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/metrics/src/app/middleware/metrics.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/metrics/tests/test_metrics_middleware.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/tracing/conftest.fragment.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/tracing/manifest.yaml +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/tracing/requirements.fragment +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/tracing/settings.fragment.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/tracing/src/app/middleware/tracing.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/tracing/tests/test_tracing_middleware.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/conftest.fragment.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/manifest.yaml +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/requirements.fragment +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/settings.fragment.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/src/app/workers/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/src/app/workers/celery_app.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/src/app/workers/tasks.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/tests/test_workers.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/fragments.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/generator.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/resources.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/README.md +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/hooks/post_gen_project.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.cookiecutterignore +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/cache.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/upstreams.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/delegates.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/item_repository.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/worker_broker.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/docker-compose.yml +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/logging.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/item_repository.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/test_logging_middleware.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/conftest.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/test_items.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_cache.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_database_settings.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_delegates.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_settings_contracts.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_worker_broker.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/tasks.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/auth_delegate.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/identity_delegate.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_passthrough.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/item_repository.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/models/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/models/auth_service.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/models/items.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/repositories/item_repository.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_service_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/models/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/models/auth.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/token_repository.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/models/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/models/users.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/user_repository.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/users_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/AGENTS.md +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/compose/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/compose/augments.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/compose/git.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/compose/infra.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/compose/loader.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/compose/operations.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/compose/presets.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/compose/renderer.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/compose/yaml_editor.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/generate/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/generate/helpers.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/generate/menu.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/models/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/models/base.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/models/spec.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/models/types.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/augments/db-config/migrations.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/augments/jwt-auth-consumer/dependencies/auth.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/augments/jwt-auth-provider/repositories/user_repository.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/augments/jwt-auth-provider/views/auth_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/augments/jwt-auth-provider/views/jwks_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/augments/jwt-auth-provider/views/users_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/service/cookiecutter.json +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/service/{{cookiecutter.__service_name_snake}}/tests/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/service/{{cookiecutter.__service_name_snake}}/tests/conftest.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/service/{{cookiecutter.__service_name_snake}}/tests/test_health.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/service/{{cookiecutter.__service_name_snake}}/views/health_view.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/tui_wizard/__init__.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/tui_wizard/exceptions.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/tui_wizard/menu.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/tui_wizard/models.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/tui_wizard/prompts.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/tui_wizard/terminal.py +0 -0
- {csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/tui_wizard/wizard.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: csrd-utils
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.90
|
|
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
|
|
@@ -22,6 +22,7 @@ from cookiecutter.main import cookiecutter
|
|
|
22
22
|
|
|
23
23
|
from ..models import ComposeSpec, ServiceAugment, ServiceNode
|
|
24
24
|
from .augments import AUGMENT_REGISTRY
|
|
25
|
+
from .infra import detect_configured_db
|
|
25
26
|
|
|
26
27
|
logger = logging.getLogger(__name__)
|
|
27
28
|
|
|
@@ -139,6 +140,46 @@ def _augment_template_vars(
|
|
|
139
140
|
"port": str(service.port),
|
|
140
141
|
}
|
|
141
142
|
|
|
143
|
+
# Database adapter variables — shared by db-config and jwt-auth-provider
|
|
144
|
+
if augment.name in ("db-config", "jwt-auth-provider"):
|
|
145
|
+
db = detect_configured_db({n.type for n in spec.infra})
|
|
146
|
+
if db == "postgres":
|
|
147
|
+
variables["db_adapter_import"] = "from csrd.repository import PGAdapter"
|
|
148
|
+
variables["db_adapter_class"] = "PGAdapter"
|
|
149
|
+
variables["db_adapter_constructor"] = (
|
|
150
|
+
"PGAdapter(\n"
|
|
151
|
+
" host=settings.db_host,\n"
|
|
152
|
+
" port=int(settings.db_port),\n"
|
|
153
|
+
" user=settings.db_user,\n"
|
|
154
|
+
" password=settings.db_password,\n"
|
|
155
|
+
" database=settings.db_name,\n"
|
|
156
|
+
" )"
|
|
157
|
+
)
|
|
158
|
+
elif db == "mariadb":
|
|
159
|
+
variables["db_adapter_import"] = "from csrd.repository import MariaAdapter"
|
|
160
|
+
variables["db_adapter_class"] = "MariaAdapter"
|
|
161
|
+
variables["db_adapter_constructor"] = (
|
|
162
|
+
"MariaAdapter(\n"
|
|
163
|
+
" host=settings.db_host,\n"
|
|
164
|
+
" port=int(settings.db_port),\n"
|
|
165
|
+
" user=settings.db_user,\n"
|
|
166
|
+
" password=settings.db_password,\n"
|
|
167
|
+
" database=settings.db_name,\n"
|
|
168
|
+
" )"
|
|
169
|
+
)
|
|
170
|
+
else:
|
|
171
|
+
variables["db_adapter_import"] = "from csrd.repository import SQLiteAdapter"
|
|
172
|
+
variables["db_adapter_class"] = "SQLiteAdapter"
|
|
173
|
+
variables["db_adapter_constructor"] = "SQLiteAdapter(db_path=settings.db_path)"
|
|
174
|
+
|
|
175
|
+
# SQL dialect variables for migrations
|
|
176
|
+
if db == "postgres":
|
|
177
|
+
variables["sql_auto_id"] = "SERIAL PRIMARY KEY"
|
|
178
|
+
elif db == "mariadb":
|
|
179
|
+
variables["sql_auto_id"] = "INTEGER PRIMARY KEY AUTO_INCREMENT"
|
|
180
|
+
else:
|
|
181
|
+
variables["sql_auto_id"] = "INTEGER PRIMARY KEY AUTOINCREMENT"
|
|
182
|
+
|
|
142
183
|
# Dynamic: jwt-auth-consumer — resolve auth service
|
|
143
184
|
if augment.name == "jwt-auth-consumer":
|
|
144
185
|
auth_svc = next(
|
|
@@ -5,10 +5,22 @@ They are deterministic outputs of the spec; user customization goes in
|
|
|
5
5
|
separate scaffolded files (views, repositories, services, dependencies).
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
+
import re
|
|
9
|
+
|
|
8
10
|
from ..models import ComposeSpec, ServiceNode
|
|
9
11
|
from .augments import AUGMENT_REGISTRY
|
|
10
12
|
from .infra import INFRA_REGISTRY, detect_configured_db
|
|
11
13
|
|
|
14
|
+
# Pattern to extract default from docker-compose interpolation: ${VAR:-default}
|
|
15
|
+
_COMPOSE_VAR_RE = re.compile(r"^\$\{[A-Z_]+:-(.+)\}$")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _plain_default(value: str) -> str:
|
|
19
|
+
"""Strip docker-compose ``${VAR:-default}`` syntax to just ``default``."""
|
|
20
|
+
m = _COMPOSE_VAR_RE.match(value)
|
|
21
|
+
return m.group(1) if m else value
|
|
22
|
+
|
|
23
|
+
|
|
12
24
|
# ---------------------------------------------------------------------------
|
|
13
25
|
# Base packages always included in every service
|
|
14
26
|
# ---------------------------------------------------------------------------
|
|
@@ -51,6 +63,19 @@ def render_requirements(svc: ServiceNode, spec: ComposeSpec) -> str:
|
|
|
51
63
|
if name not in seen:
|
|
52
64
|
seen[name] = pkg
|
|
53
65
|
|
|
66
|
+
# Add DB driver based on configured infra (needed by adapter at runtime)
|
|
67
|
+
_svc_augment_names = {a.name for a in svc.augments}
|
|
68
|
+
_ws_augment_names = {a.name for a in spec.workspace.augments}
|
|
69
|
+
_has_db_augment = bool(
|
|
70
|
+
{"db-config", "jwt-auth-provider"} & (_svc_augment_names | _ws_augment_names)
|
|
71
|
+
)
|
|
72
|
+
if _has_db_augment:
|
|
73
|
+
db = detect_configured_db({n.type for n in spec.infra})
|
|
74
|
+
if db == "postgres" and "psycopg" not in seen:
|
|
75
|
+
seen["psycopg"] = "psycopg[binary]"
|
|
76
|
+
elif db == "mariadb" and "pymysql" not in seen:
|
|
77
|
+
seen["pymysql"] = "pymysql"
|
|
78
|
+
|
|
54
79
|
return "\n".join(sorted(seen.values())) + "\n"
|
|
55
80
|
|
|
56
81
|
|
|
@@ -89,7 +114,17 @@ def _augment_settings_fields(
|
|
|
89
114
|
ws_fields["jwt_key_size"] = "2048"
|
|
90
115
|
ws_fields["jwt_key_rotation_interval"] = "86400"
|
|
91
116
|
ws_fields["jwt_key_retention_period"] = "90000"
|
|
92
|
-
|
|
117
|
+
|
|
118
|
+
# Database settings depend on configured infra
|
|
119
|
+
db = detect_configured_db({n.type for n in spec.infra})
|
|
120
|
+
if db == "sqlite" or db is None:
|
|
121
|
+
ws_fields["db_path"] = f'"/app/data/{svc.name}.db"'
|
|
122
|
+
elif db is not None:
|
|
123
|
+
db_desc = INFRA_REGISTRY.get(db)
|
|
124
|
+
if db_desc is not None:
|
|
125
|
+
for env_key, env_val in db_desc.service_env.items():
|
|
126
|
+
field_name = env_key.lower()
|
|
127
|
+
ws_fields[field_name] = f'"{_plain_default(env_val)}"'
|
|
93
128
|
|
|
94
129
|
for field_name, default in ws_fields.items():
|
|
95
130
|
fields[field_name] = default
|
|
@@ -144,7 +179,7 @@ def _augment_settings_fields(
|
|
|
144
179
|
# Map infra env vars to settings fields
|
|
145
180
|
for env_key, env_val in db_desc.service_env.items():
|
|
146
181
|
field_name = env_key.lower()
|
|
147
|
-
augment_fields[field_name] = f'"{env_val}"'
|
|
182
|
+
augment_fields[field_name] = f'"{_plain_default(env_val)}"'
|
|
148
183
|
|
|
149
184
|
# Collision detection
|
|
150
185
|
for field_name in augment_fields:
|
|
@@ -184,7 +219,14 @@ def render_settings(svc: ServiceNode, spec: ComposeSpec) -> str:
|
|
|
184
219
|
lines.append("")
|
|
185
220
|
lines.append(" # Augment-contributed fields")
|
|
186
221
|
for field_name, default in sorted(augment_fields.items()):
|
|
187
|
-
|
|
222
|
+
# Infer type from default: quoted → str, bare number → int
|
|
223
|
+
if default.startswith('"') or default.startswith("'"):
|
|
224
|
+
field_type = "str"
|
|
225
|
+
elif default.isdigit():
|
|
226
|
+
field_type = "int"
|
|
227
|
+
else:
|
|
228
|
+
field_type = "str"
|
|
229
|
+
lines.append(f" {field_name}: {field_type} = {default}")
|
|
188
230
|
|
|
189
231
|
lines.extend(
|
|
190
232
|
[
|
|
@@ -248,18 +290,29 @@ def render_init(svc: ServiceNode, spec: ComposeSpec) -> str:
|
|
|
248
290
|
"",
|
|
249
291
|
"",
|
|
250
292
|
"def build_app() -> FastAPI:",
|
|
251
|
-
" app = compose_versioned_apps(",
|
|
252
|
-
" version_mapping={UNVERSIONED: unversioned_app},",
|
|
253
|
-
" config=VersionedAppComposeConfig(",
|
|
254
|
-
f' title="{svc.name}",',
|
|
255
|
-
" api=VersionedApiConfig(",
|
|
256
|
-
' prefix="/",',
|
|
257
|
-
" include_actuator_endpoints=settings.include_actuator_endpoints,",
|
|
258
|
-
" ),",
|
|
259
|
-
" ),",
|
|
260
|
-
" )",
|
|
261
293
|
]
|
|
262
294
|
|
|
295
|
+
if is_auth_provider:
|
|
296
|
+
body.append(" unversioned_app.include_router(auth_router)")
|
|
297
|
+
body.append(" unversioned_app.include_router(users_router)")
|
|
298
|
+
body.append(" unversioned_app.include_router(jwks_router)")
|
|
299
|
+
body.append("")
|
|
300
|
+
|
|
301
|
+
body.extend(
|
|
302
|
+
[
|
|
303
|
+
" app = compose_versioned_apps(",
|
|
304
|
+
" version_mapping={UNVERSIONED: unversioned_app},",
|
|
305
|
+
" config=VersionedAppComposeConfig(",
|
|
306
|
+
f' title="{svc.name}",',
|
|
307
|
+
" api=VersionedApiConfig(",
|
|
308
|
+
' prefix="/",',
|
|
309
|
+
" include_actuator_endpoints=settings.include_actuator_endpoints,",
|
|
310
|
+
" ),",
|
|
311
|
+
" ),",
|
|
312
|
+
" )",
|
|
313
|
+
]
|
|
314
|
+
)
|
|
315
|
+
|
|
263
316
|
if "context-logging" in augment_names:
|
|
264
317
|
body.append("")
|
|
265
318
|
body.append(" app.add_middleware(RequestContextMiddleware)")
|
|
@@ -268,12 +321,6 @@ def render_init(svc: ServiceNode, spec: ComposeSpec) -> str:
|
|
|
268
321
|
body.append("")
|
|
269
322
|
body.append(" app.add_exception_handler(Exception, service_exception_handler)")
|
|
270
323
|
|
|
271
|
-
if is_auth_provider:
|
|
272
|
-
body.append("")
|
|
273
|
-
body.append(" app.include_router(auth_router)")
|
|
274
|
-
body.append(" app.include_router(users_router)")
|
|
275
|
-
body.append(" app.include_router(jwks_router)")
|
|
276
|
-
|
|
277
324
|
body.extend(
|
|
278
325
|
[
|
|
279
326
|
"",
|
|
@@ -17,6 +17,7 @@ from ..compose import (
|
|
|
17
17
|
)
|
|
18
18
|
from ..compose import add_infra as compose_add_infra
|
|
19
19
|
from ..compose import add_service as compose_add_service
|
|
20
|
+
from ..compose import add_workspace_augment as compose_add_workspace_augment
|
|
20
21
|
from ..compose import apply as compose_apply
|
|
21
22
|
from ..compose import remove_infra as compose_remove_infra
|
|
22
23
|
from .helpers import (
|
|
@@ -82,6 +83,7 @@ def _finalize_workspace(
|
|
|
82
83
|
infra_choices: list[str],
|
|
83
84
|
services: list[ServiceNode],
|
|
84
85
|
git_init: bool,
|
|
86
|
+
workspace_augments: list[str] | None = None,
|
|
85
87
|
) -> int:
|
|
86
88
|
"""Create workspace, add infra/services, render, and print result.
|
|
87
89
|
|
|
@@ -104,6 +106,12 @@ def _finalize_workspace(
|
|
|
104
106
|
except ValueError as exc:
|
|
105
107
|
print(f"WARNING: {exc}")
|
|
106
108
|
|
|
109
|
+
for aug_name in workspace_augments or []:
|
|
110
|
+
try:
|
|
111
|
+
compose_add_workspace_augment(output_dir, aug_name)
|
|
112
|
+
except ValueError as exc:
|
|
113
|
+
print(f"WARNING: {exc}")
|
|
114
|
+
|
|
107
115
|
render_workspace(output_dir)
|
|
108
116
|
print(f"Generated workspace at: {output_dir}")
|
|
109
117
|
return 0
|
|
@@ -513,6 +521,7 @@ def create_workspace_from_preset(default_name: str = "my-workspace") -> int:
|
|
|
513
521
|
infra_choices=cast(list[str], state.get("infra_choices", [])),
|
|
514
522
|
services=[*preset.services, *extra],
|
|
515
523
|
git_init=cast(bool, state.get("git_init", False)),
|
|
524
|
+
workspace_augments=preset.workspace_augments,
|
|
516
525
|
)
|
|
517
526
|
|
|
518
527
|
|
|
@@ -4,18 +4,18 @@ This file is scaffolded once and never overwritten. Customize the
|
|
|
4
4
|
adapter type, DSN construction, or add connection pooling here.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
$db_adapter_import
|
|
8
8
|
|
|
9
9
|
from ..settings import settings
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
def create_adapter() ->
|
|
12
|
+
def create_adapter() -> $db_adapter_class:
|
|
13
13
|
"""Create the database adapter for this service.
|
|
14
14
|
|
|
15
15
|
Override this to switch adapter types (PGAdapter, MariaAdapter)
|
|
16
16
|
or customize connection parameters.
|
|
17
17
|
"""
|
|
18
|
-
return
|
|
18
|
+
return $db_adapter_constructor
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
__all__ = ("create_adapter",)
|
|
@@ -3,18 +3,18 @@
|
|
|
3
3
|
This file is scaffolded once and never overwritten.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
$db_adapter_import
|
|
7
7
|
|
|
8
8
|
from ..settings import settings
|
|
9
9
|
|
|
10
|
-
_adapter:
|
|
10
|
+
_adapter: $db_adapter_class | None = None
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
async def get_adapter() ->
|
|
13
|
+
async def get_adapter() -> $db_adapter_class:
|
|
14
14
|
"""Get or create the database adapter (singleton per process)."""
|
|
15
15
|
global _adapter
|
|
16
16
|
if _adapter is None:
|
|
17
|
-
_adapter =
|
|
17
|
+
_adapter = $db_adapter_constructor
|
|
18
18
|
await _adapter.connect()
|
|
19
19
|
|
|
20
20
|
# Apply migrations on first connect
|
|
@@ -15,7 +15,7 @@ migrations: list[Migration] = [
|
|
|
15
15
|
CREATE TABLE IF NOT EXISTS users (
|
|
16
16
|
id TEXT PRIMARY KEY,
|
|
17
17
|
username TEXT UNIQUE NOT NULL,
|
|
18
|
-
created_at TEXT NOT NULL DEFAULT
|
|
18
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
19
19
|
)""",
|
|
20
20
|
down="DROP TABLE IF EXISTS users",
|
|
21
21
|
),
|
|
@@ -34,7 +34,7 @@ CREATE TABLE IF NOT EXISTS user_credentials (
|
|
|
34
34
|
description="User roles table",
|
|
35
35
|
up="""\
|
|
36
36
|
CREATE TABLE IF NOT EXISTS user_roles (
|
|
37
|
-
id
|
|
37
|
+
id $sql_auto_id,
|
|
38
38
|
user_id TEXT NOT NULL REFERENCES users(id),
|
|
39
39
|
role TEXT NOT NULL,
|
|
40
40
|
UNIQUE(user_id, role)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/caching/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/caching/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/caching/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/caching/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/logging/conftest.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/logging/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/logging/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/metrics/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/metrics/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/metrics/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/tracing/conftest.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/tracing/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/tracing/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/settings.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/src/app/workers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/src/app/workers/tasks.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/features/workers/tests/test_workers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/templates/cookiecutter-service/README.md
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/augments/db-config/migrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.89 → csrd_utils-0.3.90}/src/csrd_utils/v2/templates/service/cookiecutter.json
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|