fastapi-startkit 0.31.0__tar.gz → 0.32.0__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.
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/PKG-INFO +1 -1
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/pyproject.toml +1 -1
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/__init__.py +14 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/channels.py +16 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/config.py +24 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/drivers/__init__.py +4 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/drivers/log_driver.py +11 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/drivers/reverb_driver.py +7 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/event.py +14 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/helpers.py +7 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/manager.py +19 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/provider.py +21 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/reverb/__init__.py +5 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/reverb/channel_manager.py +17 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/reverb/connection.py +21 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/broadcasting/reverb/server.py +59 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/facades/Broadcast.pyi +15 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/jsonapi/__init__.py +15 -0
- fastapi_startkit-0.32.0/src/fastapi_startkit/jsonapi/response.py +444 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/.DS_Store +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/application.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/carbon/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/carbon/carbon.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/config/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/config/app.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/configuration/Configuration.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/configuration/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/configuration/config.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/configuration/helpers.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/configuration/providers/ConfigurationProvider.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/configuration/providers/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/console/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/console/application.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/console/can_override_config.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/console/can_override_default_options.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/console/command.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/console/publish_command.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/container/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/container/container.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/environment/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/environment/environment.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/exceptions/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/exceptions/exceptions.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/exceptions/handler.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Broadcast.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Cache.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Config.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Config.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Dump.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Dump.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Facade.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Gate.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Gate.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Hash.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Hash.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Loader.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Loader.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Mail.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Mail.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Notification.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Notification.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Queue.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Queue.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/RateLimiter.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/RateLimiter.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Request.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Request.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Response.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Response.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Session.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Session.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Url.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Url.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/View.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/View.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Vite.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/Vite.pyi +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/facades/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/fastapi/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/fastapi/commands/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/fastapi/commands/serve_command.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/fastapi/config/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/fastapi/config/fastapi.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/fastapi/exceptions.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/fastapi/providers/fastapi_provider.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/fastapi/requests/model.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/fastapi/routers/router.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/fastapi/testing/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/fastapi/testing/test_case.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/helpers/app.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/helpers/dataclass.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/inertia/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/inertia/constant.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/inertia/context.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/inertia/inertia.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/inertia/middleware.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/inertia/props/props.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/inertia/provider.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/loader/Loader.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/loader/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/ChannelFactory.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/channels/BaseChannel.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/channels/DailyChannel.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/channels/MultiBaseChannel.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/channels/SingleChannel.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/channels/SlackChannel.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/channels/StackChannel.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/channels/SyslogChannel.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/channels/TerminalChannel.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/channels/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/config/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/config/channels.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/config/logging.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/drivers/BaseDriver.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/drivers/LogSingleDriver.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/drivers/LogSlackDriver.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/drivers/LogSyslogDriver.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/drivers/LogTerminalDriver.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/drivers/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/factory.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/file.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/handler.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/listeners.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/logger.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/managers/LoggingManager.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/managers/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/providers/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/logging/providers/log_provider.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/collection/Collection.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/collection/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/DBMigrateCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/DBSeedCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/MakeMigrationCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/MakeModelCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/MakeModelDocstringCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/MakeObserverCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/MakeSeedCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/MigrateFreshCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/MigrateRefreshCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/MigrateResetCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/MigrateRollbackCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/MigrateStatusCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/ShellCommand.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/stubs/create_migration.stub +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/stubs/create_seed.stub +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/stubs/model.stub +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/stubs/observer.stub +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/commands/stubs/table_migration.stub +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/config/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/config/config.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/config/database.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/connections/connection.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/connections/factory.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/connections/manager.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/connections/mysql_connection.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/connections/postgres_connection.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/connections/sqlite_connection.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/exceptions.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/expressions/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/expressions/expressions.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/facades/DB.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/facades/Schema.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/facades/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/factory/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/factory/factory.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/helpers/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/helpers/misc.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/migrations/Migration.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/migrations/Migrator.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/migrations/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/models/MigrationModel.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/models/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/models/attribute.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/models/builder.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/models/caster.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/models/fields.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/models/model.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/models/observer.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/models/pivot.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/models/registry.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/models/relationship.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/observers/ObservesEvents.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/observers/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/pagination/BasePaginator.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/pagination/LengthAwarePaginator.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/pagination/SimplePaginator.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/pagination/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/providers/DatabaseProvider.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/providers/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/EagerLoadMixin.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/EagerRelation.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/grammars/BaseGrammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/grammars/MSSQLGrammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/grammars/MySQLGrammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/grammars/PostgresGrammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/grammars/SQLiteGrammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/grammars/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/processors/MSSQLPostProcessor.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/processors/MySQLPostProcessor.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/processors/PostgresPostProcessor.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/processors/SQLitePostProcessor.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/processors/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/query/support.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/relationships/BaseRelationship.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/relationships/BelongsTo.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/relationships/BelongsToMany.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/relationships/HasMany.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/relationships/HasManyThrough.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/relationships/HasOne.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/relationships/HasOneThrough.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/relationships/MorphMany.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/relationships/MorphOne.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/relationships/MorphTo.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/relationships/MorphToMany.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/relationships/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/Blueprint.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/Column.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/ColumnDiff.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/Constraint.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/ForeignKeyConstraint.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/Index.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/Table.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/TableDiff.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/platforms/MSSQLPlatform.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/platforms/MySQLPlatform.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/platforms/Platform.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/platforms/PostgresPlatform.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/platforms/SQLitePlatform.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/platforms/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/schema/schema.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/seeds/Seeder.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/seeds/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/stubs/create-migration.html +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/stubs/table-migration.html +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/testing/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm/testing/transaction.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/.gitignore +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/CACHEDIR.TAG +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/README.md +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/v/cache/lastfailed +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/v/cache/nodeids +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/config/database.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/config.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/exceptions.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/factories/Factory.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/factories/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/schema/Schema.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/scopes/BaseScope.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/scopes/SoftDeleteScope.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/scopes/SoftDeletesMixin.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/scopes/UUIDPrimaryKeyMixin.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/scopes/UUIDPrimaryKeyScope.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/scopes/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/scopes/scope.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/testing/BaseTestCaseSelectGrammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/testing/Database.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/testing/TestCase.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/testing/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/User.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/connections/test_base_connections.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/eagers/test_eager.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/models/test_models.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/builder/test_mssql_query_builder.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/builder/test_mssql_query_builder_relationships.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_delete_grammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_insert_grammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_qmark.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_select_grammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_update_grammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/schema/test_mssql_schema_builder.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/schema/test_mssql_schema_builder_alter.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_mysql_builder_transaction.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_query_builder.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_query_builder_scopes.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_transactions.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/connections/test_mysql_connection_selects.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_delete_grammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_insert_grammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_qmark.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_select_grammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_update_grammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/model/test_accessors_and_mutators.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/model/test_model.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_belongs_to_many.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_has_many_through.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_has_one_through.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_relationships.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/schema/test_mysql_schema_builder.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/schema/test_mysql_schema_builder_alter.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/scopes/test_can_use_global_scopes.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/scopes/test_can_use_scopes.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/scopes/test_soft_delete.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/builder/test_postgres_query_builder.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/builder/test_postgres_transaction.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_delete_grammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_insert_grammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_select_grammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_update_grammar.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/relationships/test_postgres_relationships.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/schema/test_postgres_schema_builder.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/schema/test_postgres_schema_builder_alter.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/scopes/test_default_global_scopes.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/seeds/test_seeds.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/masoniteorm.backup/tests/utils.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/mcp/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/mcp/argument.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/mcp/prompt.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/mcp/protocol.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/mcp/providers/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/mcp/providers/mcp_provider.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/mcp/request.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/mcp/resource.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/mcp/response.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/mcp/server.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/mcp/tool.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/providers/Provider.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/providers/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/providers/app_provider.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/config/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/config/storage.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/data/mime.types +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/drivers/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/drivers/fake.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/drivers/local.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/drivers/s3.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/file.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/filestream.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/helper.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/providers/provider.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/storage/storage.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/support/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/support/collection.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/support/string.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/testing/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/testing/test_case.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/utils/structures.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/vite/__init__.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/vite/config/vite.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/vite/exceptions.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/vite/providers/provider.py +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/vite/stubs/package.json +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/vite/stubs/resources/css/app.css +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/vite/stubs/resources/js/app.ts +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/vite/stubs/templates/index.html +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/vite/stubs/tsconfig.json +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/vite/stubs/vite.config.ts +0 -0
- {fastapi_startkit-0.31.0 → fastapi_startkit-0.32.0}/src/fastapi_startkit/vite/vite.py +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from .channels import Channel, PrivateChannel, PresenceChannel
|
|
2
|
+
from .event import BroadcastEvent, ShouldBroadcast
|
|
3
|
+
from .provider import ReverbProvider
|
|
4
|
+
from .helpers import broadcast
|
|
5
|
+
|
|
6
|
+
__all__ = [
|
|
7
|
+
"Channel",
|
|
8
|
+
"PrivateChannel",
|
|
9
|
+
"PresenceChannel",
|
|
10
|
+
"BroadcastEvent",
|
|
11
|
+
"ShouldBroadcast",
|
|
12
|
+
"ReverbProvider",
|
|
13
|
+
"broadcast",
|
|
14
|
+
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Channel:
|
|
2
|
+
def __init__(self, name: str):
|
|
3
|
+
self.name = name
|
|
4
|
+
|
|
5
|
+
def __repr__(self) -> str:
|
|
6
|
+
return f"{self.__class__.__name__}({self.name!r})"
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class PrivateChannel(Channel):
|
|
10
|
+
def __init__(self, name: str):
|
|
11
|
+
super().__init__(f"private-{name}")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class PresenceChannel(Channel):
|
|
15
|
+
def __init__(self, name: str):
|
|
16
|
+
super().__init__(f"presence-{name}")
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from dataclasses import dataclass, field
|
|
2
|
+
from fastapi_startkit.environment import env
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@dataclass
|
|
6
|
+
class BroadcastingConfig:
|
|
7
|
+
default: str = field(default_factory=lambda: env("BROADCAST_DRIVER", "log"))
|
|
8
|
+
|
|
9
|
+
connections: dict = field(
|
|
10
|
+
default_factory=lambda: {
|
|
11
|
+
"reverb": {
|
|
12
|
+
"driver": "reverb",
|
|
13
|
+
"key": env("REVERB_APP_KEY", "local"),
|
|
14
|
+
"secret": env("REVERB_APP_SECRET", "secret"),
|
|
15
|
+
"app_id": env("REVERB_APP_ID", "1"),
|
|
16
|
+
"host": env("REVERB_HOST", "0.0.0.0"),
|
|
17
|
+
"port": int(env("REVERB_PORT", 8080)),
|
|
18
|
+
"scheme": env("REVERB_SCHEME", "http"),
|
|
19
|
+
},
|
|
20
|
+
"log": {
|
|
21
|
+
"driver": "log",
|
|
22
|
+
},
|
|
23
|
+
}
|
|
24
|
+
)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
logger = logging.getLogger("reverb")
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class LogDriver:
|
|
7
|
+
async def broadcast(self, event) -> None:
|
|
8
|
+
for channel in event.broadcast_on():
|
|
9
|
+
logger.info(
|
|
10
|
+
f"[Broadcast] channel={channel.name} event={event.broadcast_as()} data={event.broadcast_with()}"
|
|
11
|
+
)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ShouldBroadcast(ABC):
|
|
5
|
+
@abstractmethod
|
|
6
|
+
def broadcast_on(self) -> list: ...
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class BroadcastEvent(ShouldBroadcast):
|
|
10
|
+
def broadcast_as(self) -> str:
|
|
11
|
+
return self.__class__.__name__
|
|
12
|
+
|
|
13
|
+
def broadcast_with(self) -> dict:
|
|
14
|
+
return {k: v for k, v in self.__dict__.items()}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class BroadcastManager:
|
|
2
|
+
def __init__(self, config, server=None):
|
|
3
|
+
self._config = config
|
|
4
|
+
self._server = server
|
|
5
|
+
|
|
6
|
+
def driver(self, name=None):
|
|
7
|
+
name = name or self._config.get("default", "log")
|
|
8
|
+
if name == "log":
|
|
9
|
+
from .drivers.log_driver import LogDriver
|
|
10
|
+
|
|
11
|
+
return LogDriver()
|
|
12
|
+
elif name == "reverb":
|
|
13
|
+
from .drivers.reverb_driver import ReverbDriver
|
|
14
|
+
|
|
15
|
+
return ReverbDriver(self._server)
|
|
16
|
+
raise ValueError(f"Unknown broadcast driver: {name}")
|
|
17
|
+
|
|
18
|
+
async def event(self, broadcast_event) -> None:
|
|
19
|
+
await self.driver().broadcast(broadcast_event)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from ..providers import Provider
|
|
2
|
+
from .manager import BroadcastManager
|
|
3
|
+
from .config import BroadcastingConfig
|
|
4
|
+
from .reverb.server import ReverbServer
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ReverbProvider(Provider):
|
|
8
|
+
provider_key = "broadcasting"
|
|
9
|
+
|
|
10
|
+
def register(self) -> None:
|
|
11
|
+
config_data = self.resolve_config(BroadcastingConfig)
|
|
12
|
+
self.merge_config_from(config_data, "broadcasting")
|
|
13
|
+
|
|
14
|
+
server = ReverbServer()
|
|
15
|
+
manager = BroadcastManager(config_data, server)
|
|
16
|
+
|
|
17
|
+
self.app.bind("broadcasting", manager)
|
|
18
|
+
self.app.bind("reverb.server", server)
|
|
19
|
+
|
|
20
|
+
def boot(self) -> None:
|
|
21
|
+
pass
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class ChannelManager:
|
|
2
|
+
def __init__(self):
|
|
3
|
+
self._subscriptions: dict[str, set] = {}
|
|
4
|
+
|
|
5
|
+
def subscribe(self, channel: str, socket_id: str) -> None:
|
|
6
|
+
self._subscriptions.setdefault(channel, set()).add(socket_id)
|
|
7
|
+
|
|
8
|
+
def unsubscribe(self, channel: str, socket_id: str) -> None:
|
|
9
|
+
if channel in self._subscriptions:
|
|
10
|
+
self._subscriptions[channel].discard(socket_id)
|
|
11
|
+
|
|
12
|
+
def remove_socket(self, socket_id: str) -> None:
|
|
13
|
+
for subs in self._subscriptions.values():
|
|
14
|
+
subs.discard(socket_id)
|
|
15
|
+
|
|
16
|
+
def subscribers(self, channel: str) -> set:
|
|
17
|
+
return set(self._subscriptions.get(channel, set()))
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import uuid
|
|
2
|
+
from starlette.websockets import WebSocket
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ConnectionManager:
|
|
6
|
+
def __init__(self):
|
|
7
|
+
self._connections: dict[str, WebSocket] = {}
|
|
8
|
+
|
|
9
|
+
def add(self, websocket: WebSocket) -> str:
|
|
10
|
+
socket_id = str(uuid.uuid4())
|
|
11
|
+
self._connections[socket_id] = websocket
|
|
12
|
+
return socket_id
|
|
13
|
+
|
|
14
|
+
def remove(self, socket_id: str) -> None:
|
|
15
|
+
self._connections.pop(socket_id, None)
|
|
16
|
+
|
|
17
|
+
def get(self, socket_id: str):
|
|
18
|
+
return self._connections.get(socket_id)
|
|
19
|
+
|
|
20
|
+
def all(self) -> dict:
|
|
21
|
+
return dict(self._connections)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from starlette.websockets import WebSocket, WebSocketDisconnect
|
|
3
|
+
from starlette.routing import WebSocketRoute
|
|
4
|
+
from starlette.applications import Starlette
|
|
5
|
+
from .connection import ConnectionManager
|
|
6
|
+
from .channel_manager import ChannelManager
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ReverbServer:
|
|
10
|
+
def __init__(self):
|
|
11
|
+
self.connections = ConnectionManager()
|
|
12
|
+
self.channels = ChannelManager()
|
|
13
|
+
|
|
14
|
+
async def handle(self, websocket: WebSocket):
|
|
15
|
+
await websocket.accept()
|
|
16
|
+
socket_id = self.connections.add(websocket)
|
|
17
|
+
await websocket.send_text(
|
|
18
|
+
json.dumps(
|
|
19
|
+
{
|
|
20
|
+
"event": "pusher:connection_established",
|
|
21
|
+
"data": json.dumps({"socket_id": socket_id, "activity_timeout": 120}),
|
|
22
|
+
}
|
|
23
|
+
)
|
|
24
|
+
)
|
|
25
|
+
try:
|
|
26
|
+
while True:
|
|
27
|
+
data = await websocket.receive_text()
|
|
28
|
+
message = json.loads(data)
|
|
29
|
+
await self._handle_message(socket_id, websocket, message)
|
|
30
|
+
except WebSocketDisconnect:
|
|
31
|
+
self.connections.remove(socket_id)
|
|
32
|
+
self.channels.remove_socket(socket_id)
|
|
33
|
+
|
|
34
|
+
async def _handle_message(self, socket_id: str, websocket: WebSocket, message: dict):
|
|
35
|
+
event = message.get("event", "")
|
|
36
|
+
if event == "pusher:ping":
|
|
37
|
+
await websocket.send_text(json.dumps({"event": "pusher:pong", "data": {}}))
|
|
38
|
+
elif event == "pusher:subscribe":
|
|
39
|
+
channel = message.get("data", {}).get("channel", "")
|
|
40
|
+
self.channels.subscribe(channel, socket_id)
|
|
41
|
+
await websocket.send_text(
|
|
42
|
+
json.dumps({"event": "pusher_internal:subscription_succeeded", "channel": channel, "data": {}})
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
async def broadcast_to_channel(self, channel_name: str, event_name: str, data: dict):
|
|
46
|
+
payload = json.dumps({"event": event_name, "channel": channel_name, "data": data})
|
|
47
|
+
for socket_id in self.channels.subscribers(channel_name):
|
|
48
|
+
ws = self.connections.get(socket_id)
|
|
49
|
+
if ws:
|
|
50
|
+
try:
|
|
51
|
+
await ws.send_text(payload)
|
|
52
|
+
except Exception:
|
|
53
|
+
pass
|
|
54
|
+
|
|
55
|
+
def as_starlette_app(self, app_key: str = "local") -> Starlette:
|
|
56
|
+
async def endpoint(ws: WebSocket):
|
|
57
|
+
await self.handle(ws)
|
|
58
|
+
|
|
59
|
+
return Starlette(routes=[WebSocketRoute(f"/app/{app_key}", endpoint)])
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from fastapi_startkit.broadcasting.channels import Channel
|
|
2
|
+
from fastapi_startkit.broadcasting.event import BroadcastEvent
|
|
3
|
+
|
|
4
|
+
class Broadcast:
|
|
5
|
+
"""Facade for broadcasting events over WebSocket channels."""
|
|
6
|
+
|
|
7
|
+
@staticmethod
|
|
8
|
+
async def event(event: BroadcastEvent) -> None:
|
|
9
|
+
"""Broadcast an event to all its channels."""
|
|
10
|
+
...
|
|
11
|
+
|
|
12
|
+
@staticmethod
|
|
13
|
+
def channel(name: str) -> Channel:
|
|
14
|
+
"""Return a Channel instance for the given name."""
|
|
15
|
+
...
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"""fastapi_startkit.jsonapi — JSON:API specification helpers."""
|
|
2
|
+
|
|
3
|
+
from .response import (
|
|
4
|
+
JsonAPIListResponse,
|
|
5
|
+
JsonAPIResponse,
|
|
6
|
+
parse_fields,
|
|
7
|
+
parse_include,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
__all__ = [
|
|
11
|
+
"JsonAPIResponse",
|
|
12
|
+
"JsonAPIListResponse",
|
|
13
|
+
"parse_include",
|
|
14
|
+
"parse_fields",
|
|
15
|
+
]
|