File size: 1,979 Bytes
1ad9865
5be7c9b
 
973406c
 
5be7c9b
f70727c
 
 
 
973406c
 
5be7c9b
f70727c
5be7c9b
f70727c
 
5be7c9b
 
 
 
 
 
f70727c
 
 
 
 
 
 
 
 
5be7c9b
f70727c
 
5be7c9b
5078e89
 
 
 
1ad9865
 
 
 
5078e89
 
 
 
8b67814
 
 
 
 
 
 
 
 
 
 
 
 
5be7c9b
 
 
f70727c
5be7c9b
 
 
 
 
f70727c
5be7c9b
 
5078e89
 
 
973406c
1ad9865
973406c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from typing import Optional
from pydantic import PostgresDsn, computed_field
from pydantic_settings import BaseSettings, SettingsConfigDict


class SMTPConfig(BaseSettings):
    server: str
    port: int
    username: str
    password: str


class Settings(BaseSettings):

    JWT_ALGORITHM: str
    JWT_EXPIRE: int
    SECRET_KEY: str

    POSTGRES_USER: str
    POSTGRES_PASSWORD: str
    POSTGRES_HOST: str
    POSTGRES_DB: str

    APP_NAME: str
    ENV: str
    DEBUG: bool
    PORT: int

    EMAIL_SERVER: str
    EMAIL_PORT: int
    EMAIL_USERNAME: str
    EMAIL_PASSWORD: str

    FERNET_KEY: str
    VERIFICATION_BASE_URL: str

    GOOGLE_CLIENT_ID: str
    GOOGLE_CLIENT_SECRET: str
    GOOGLE_REDIRECT_URI: str

    FCM_SERVER_KEY: Optional[str] = None
    SICK_LEAVE_LIMIT: int = 10
    CASUAL_LEAVE_LIMIT: int = 10

    AUTH_BASE: str = "https://accounts.google.com/o/oauth2/v2/auth"
    TOKEN_URL: str = "https://oauth2.googleapis.com/token"
    GMAIL_SEND_SCOPE: str = "https://www.googleapis.com/auth/gmail.send"

    FIREBASE_TYPE: str
    FIREBASE_PROJECT_ID: str
    FIREBASE_PRIVATE_KEY_ID: str
    FIREBASE_PRIVATE_KEY: str
    FIREBASE_CLIENT_EMAIL: str
    FIREBASE_CLIENT_ID: str
    FIREBASE_AUTH_URI: str
    FIREBASE_TOKEN_URI: str
    FIREBASE_AUTH_PROVIDER_X509_CERT_URL: str
    FIREBASE_CLIENT_X509_CERT_URL: str
    FIREBASE_UNIVERSE_DOMAIN: str


    @computed_field
    @property
    def DATABASE_URL(self) -> PostgresDsn:
        """Sync DB URL"""
        return f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}@{self.POSTGRES_HOST}/{self.POSTGRES_DB}"

    @computed_field
    @property
    def ASYNC_DATABASE_URL(self) -> PostgresDsn:
        """Async DB URL"""
        return f"postgresql+asyncpg://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}@{self.POSTGRES_HOST}/{self.POSTGRES_DB}"

    model_config = SettingsConfigDict(
        env_file=".env", case_sensitive=False, env_file_encoding="utf-8"
    )


settings = Settings()