
- Fix code linting issues - Update README with detailed documentation - Configure database paths for the current environment - Create necessary directory structure The News Aggregation Service is now ready to use with FastAPI and SQLite.
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
from typing import List, Union
|
|
from pathlib import Path
|
|
|
|
from pydantic import AnyHttpUrl, field_validator
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
model_config = SettingsConfigDict(env_file=".env", case_sensitive=True)
|
|
|
|
API_V1_STR: str = "/api/v1"
|
|
PROJECT_NAME: str = "News Aggregation Service"
|
|
VERSION: str = "0.1.0"
|
|
DESCRIPTION: str = "A service that aggregates news from various sources using the Mediastack API"
|
|
|
|
# CORS
|
|
BACKEND_CORS_ORIGINS: List[AnyHttpUrl] = []
|
|
|
|
@field_validator("BACKEND_CORS_ORIGINS", mode="before")
|
|
@classmethod
|
|
def assemble_cors_origins(cls, v: Union[str, List[str]]) -> Union[List[str], str]:
|
|
if isinstance(v, str) and not v.startswith("["):
|
|
return [i.strip() for i in v.split(",")]
|
|
elif isinstance(v, (list, str)):
|
|
return v
|
|
raise ValueError(v)
|
|
|
|
# Mediastack API
|
|
MEDIASTACK_API_KEY: str = ""
|
|
MEDIASTACK_BASE_URL: str = "http://api.mediastack.com/v1"
|
|
|
|
# Security
|
|
SECRET_KEY: str = "your-secret-key-here"
|
|
ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 8 # 8 days
|
|
|
|
# Database
|
|
DATABASE_PATH: Path = Path("/projects/newsaggregationservice-ks0ts2/app/storage/db/db.sqlite")
|
|
|
|
|
|
settings = Settings() |