|
1 | 1 | import pydantic_settings |
2 | | -from granian.log import LogLevels |
3 | | -from sqlalchemy.engine.url import URL |
| 2 | +from lite_bootstrap import LitestarConfig |
| 3 | +from sqlalchemy.engine.url import URL, make_url |
4 | 4 |
|
5 | 5 |
|
6 | 6 | class Settings(pydantic_settings.BaseSettings): |
7 | | - debug: bool = False |
8 | | - log_level: LogLevels = LogLevels.info |
9 | | - |
10 | | - db_driver: str = "postgresql+asyncpg" |
11 | | - db_host: str = "db" |
12 | | - db_port: int = 5432 |
13 | | - db_user: str = "postgres" |
14 | | - db_password: str = "password" |
15 | | - db_database: str = "postgres" |
| 7 | + service_name: str = "FastAPI template" |
| 8 | + service_version: str = "1.0.0" |
| 9 | + service_environment: str = "local" |
| 10 | + service_debug: bool = False |
| 11 | + log_level: str = "info" |
16 | 12 |
|
| 13 | + db_dsn: str = "postgresql+asyncpg://postgres:password@db/postgres" |
17 | 14 | db_pool_size: int = 5 |
18 | 15 | db_max_overflow: int = 0 |
19 | | - db_echo: bool = False |
20 | 16 | db_pool_pre_ping: bool = True |
21 | 17 |
|
22 | 18 | app_port: int = 8000 |
23 | 19 |
|
| 20 | + opentelemetry_endpoint: str = "" |
| 21 | + sentry_dsn: str = "" |
| 22 | + logging_buffer_capacity: int = 0 |
| 23 | + swagger_offline_docs: bool = True |
| 24 | + |
| 25 | + cors_allowed_origins: list[str] = ["http://localhost:5173"] |
| 26 | + cors_allowed_methods: list[str] = [""] |
| 27 | + cors_allowed_headers: list[str] = [""] |
| 28 | + cors_exposed_headers: list[str] = [] |
| 29 | + |
| 30 | + request_max_body_size: int = 1024 * 1024 # 1MB limit |
| 31 | + |
| 32 | + @property |
| 33 | + def db_dsn_parsed(self) -> URL: |
| 34 | + return make_url(self.db_dsn) |
| 35 | + |
24 | 36 | @property |
25 | | - def db_dsn(self) -> URL: |
26 | | - return URL.create( |
27 | | - self.db_driver, |
28 | | - self.db_user, |
29 | | - self.db_password, |
30 | | - self.db_host, |
31 | | - self.db_port, |
32 | | - self.db_database, |
| 37 | + def api_bootstrapper_config(self) -> LitestarConfig: |
| 38 | + return LitestarConfig( |
| 39 | + service_name=settings.service_name, |
| 40 | + service_version=settings.service_version, |
| 41 | + service_environment=settings.service_environment, |
| 42 | + service_debug=settings.service_debug, |
| 43 | + opentelemetry_endpoint=settings.opentelemetry_endpoint, |
| 44 | + sentry_dsn=settings.sentry_dsn, |
| 45 | + cors_allowed_origins=settings.cors_allowed_origins, |
| 46 | + cors_allowed_methods=settings.cors_allowed_methods, |
| 47 | + cors_allowed_headers=settings.cors_allowed_headers, |
| 48 | + cors_exposed_headers=settings.cors_exposed_headers, |
| 49 | + logging_buffer_capacity=settings.logging_buffer_capacity, |
| 50 | + swagger_offline_docs=settings.swagger_offline_docs, |
33 | 51 | ) |
34 | 52 |
|
35 | 53 |
|
|
0 commit comments