saveinmed/saveinmed-bff/src/core/config.py
Tiago Yamamoto b39caf0fd0 first commit
2025-12-17 13:58:26 -03:00

85 lines
4 KiB
Python

from __future__ import annotations
from functools import lru_cache
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
appwrite_endpoint: str = Field(..., alias="APPWRITE_ENDPOINT")
appwrite_project_id: str = Field(..., alias="APPWRITE_PROJECT_ID")
appwrite_api_key: str = Field(..., alias="APPWRITE_API_KEY")
appwrite_database_id: str = Field(..., alias="APPWRITE_DATABASE_ID")
appwrite_collection_produtos_catalogo_id: str = Field(
..., alias="APPWRITE_COLLECTION_PRODUTOS_CATALOGO_ID"
)
appwrite_collection_produtos_venda_id: str = Field(
..., alias="APPWRITE_COLLECTION_PRODUTOS_VENDA_ID"
)
appwrite_session_cookie: str | None = Field(
default=None, alias="APPWRITE_SESSION_COOKIE"
)
appwrite_collection_faturas_id: str = Field(..., alias="APPWRITE_COLLECTION_FATURAS_ID")
appwrite_collection_laboratorios_id: str = Field(..., alias="APPWRITE_COLLECTION_LABORATORIOS_ID")
appwrite_collection_categorias_id: str = Field(..., alias="APPWRITE_COLLECTION_CATEGORIAS_ID")
appwrite_collection_subcategorias_id: str = Field(..., alias="APPWRITE_COLLECTION_SUBCATEGORIAS_ID")
appwrite_collection_usuarios_id: str = Field(..., alias="APPWRITE_COLLECTION_USUARIOS_ID")
appwrite_collection_usuarios_data_id: str = Field(
..., alias="APPWRITE_COLLECTION_USUARIOS_DATA_ID"
)
appwrite_collection_usuarios_perfil_id: str = Field(
..., alias="APPWRITE_COLLECTION_USUARIOS_PERFIL_ID"
)
appwrite_collection_usuario_empresa_perfis_id: str = Field(
..., alias="APPWRITE_COLLECTION_USUARIO_EMPRESA_PERFIS_ID"
)
appwrite_collection_empresas_id: str = Field(..., alias="APPWRITE_COLLECTION_EMPRESAS_ID")
appwrite_collection_empresas_dados_id: str = Field(
..., alias="APPWRITE_COLLECTION_EMPRESAS_DADOS_ID"
)
appwrite_collection_empresas_socios_id: str = Field(
..., alias="APPWRITE_COLLECTION_EMPRESAS_SOCIOS_ID"
)
appwrite_collection_enderecos_id: str = Field(..., alias="APPWRITE_COLLECTION_ENDERECOS_ID")
appwrite_collection_entregas_id: str = Field(
default="", alias="APPWRITE_COLLECTION_ENTREGAS_ID"
)
appwrite_collection_carrinhos_id: str = Field(..., alias="APPWRITE_COLLECTION_CARRINHOS_ID")
appwrite_collection_pedidos_id: str = Field(..., alias="APPWRITE_COLLECTION_PEDIDOS_ID")
appwrite_collection_pagamentos_id: str = Field(..., alias="APPWRITE_COLLECTION_PAGAMENTOS_ID")
appwrite_collection_produtos_estoque_id: str = Field(
..., alias="APPWRITE_COLLECTION_PRODUTOS_ESTOQUE_ID"
)
security_api_key: str | None = Field(default=None, alias="SECURITY_API_KEY")
jwt_secret: str = Field(..., alias="JWT_SECRET")
jwt_algorithm: str = Field(default="HS256", alias="JWT_ALGORITHM")
jwt_access_ttl_seconds: int = Field(default=3600, alias="JWT_ACCESS_TTL_SECONDS")
session_cookie_name: str = Field(default="session", alias="SESSION_COOKIE_NAME")
cookie_secure: bool = Field(default=False, alias="COOKIE_SECURE")
cookie_domain: str | None = Field(default=None, alias="COOKIE_DOMAIN")
superadmin_identificador: str = Field(
default="admin", alias="SUPERADMIN_IDENTIFICADOR"
)
superadmin_senha: str = Field(default="admin123", alias="SUPERADMIN_SENHA")
cors_allow_origins: str | None = Field(default=None, alias="CORS_ALLOW_ORIGINS")
# Mercado Pago settings
mercado_pago_access_token: str = Field(..., alias="MERCADO_PAGO_ACCESS_TOKEN")
mercado_pago_public_key: str = Field(..., alias="MERCADO_PAGO_PUBLIC_KEY")
mercado_pago_sandbox: bool = Field(default=True, alias="MERCADO_PAGO_SANDBOX")
mapbox_access_token: str | None = Field(default=None, alias="MAPBOX_ACCESS_TOKEN")
model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
case_sensitive=False,
extra="ignore",
populate_by_name=True,
)
@lru_cache
def get_settings() -> Settings:
return Settings()