ugggghghhhhh

This commit is contained in:
Hayden 2023-08-13 18:04:12 -05:00
parent be372dbc51
commit 206f92cdda
No known key found for this signature in database
GPG Key ID: 17CF79474E257545
7 changed files with 23 additions and 16 deletions

View File

@ -2,7 +2,7 @@ from abc import ABC, abstractmethod
from pathlib import Path from pathlib import Path
from pydantic import BaseModel, PostgresDsn from pydantic import BaseModel, PostgresDsn
from pydantic_settings import BaseSettings from pydantic_settings import BaseSettings, SettingsConfigDict
class AbstractDBProvider(ABC): class AbstractDBProvider(ABC):
@ -35,6 +35,8 @@ class SQLiteProvider(AbstractDBProvider, BaseModel):
class PostgresProvider(AbstractDBProvider, BaseSettings): class PostgresProvider(AbstractDBProvider, BaseSettings):
model_config = SettingsConfigDict(strict=False, arbitrary_types_allowed=True, extra="ignore")
POSTGRES_USER: str = "mealie" POSTGRES_USER: str = "mealie"
POSTGRES_PASSWORD: str = "mealie" POSTGRES_PASSWORD: str = "mealie"
POSTGRES_SERVER: str = "postgres" POSTGRES_SERVER: str = "postgres"
@ -46,7 +48,7 @@ class PostgresProvider(AbstractDBProvider, BaseSettings):
host = f"{self.POSTGRES_SERVER}:{self.POSTGRES_PORT}" host = f"{self.POSTGRES_SERVER}:{self.POSTGRES_PORT}"
return PostgresDsn.build( return PostgresDsn.build(
scheme="postgresql", scheme="postgresql",
user=self.POSTGRES_USER, username=self.POSTGRES_USER,
password=self.POSTGRES_PASSWORD, password=self.POSTGRES_PASSWORD,
host=host, host=host,
path=f"/{self.POSTGRES_DB or ''}", path=f"/{self.POSTGRES_DB or ''}",

View File

@ -87,7 +87,7 @@ class AppSettings(BaseSettings):
# Email Configuration # Email Configuration
SMTP_HOST: str | None SMTP_HOST: str | None
SMTP_PORT: str | None = "587" SMTP_PORT: str = "587"
SMTP_FROM_NAME: str | None = "Mealie" SMTP_FROM_NAME: str | None = "Mealie"
SMTP_FROM_EMAIL: str | None SMTP_FROM_EMAIL: str | None
SMTP_USER: str | None SMTP_USER: str | None
@ -159,7 +159,7 @@ class AppSettings(BaseSettings):
# Testing Config # Testing Config
TESTING: bool = False TESTING: bool = False
model_config = SettingsConfigDict(arbitrary_types_allowed=True) model_config = SettingsConfigDict(strict=False, arbitrary_types_allowed=True, extra="ignore")
def app_settings_constructor(data_dir: Path, production: bool, env_file: Path, env_encoding="utf-8") -> AppSettings: def app_settings_constructor(data_dir: Path, production: bool, env_file: Path, env_encoding="utf-8") -> AppSettings:

View File

@ -2,6 +2,7 @@ from collections.abc import Generator
from contextlib import contextmanager from contextlib import contextmanager
import sqlalchemy as sa import sqlalchemy as sa
from pydantic_core import MultiHostUrl
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm.session import Session from sqlalchemy.orm.session import Session
@ -10,12 +11,17 @@ from mealie.core.config import get_app_settings
settings = get_app_settings() settings = get_app_settings()
def sql_global_init(db_url: str): def sql_global_init(db_url: MultiHostUrl | str):
connect_args = {} connect_args = {}
if "sqlite" in db_url:
con_url = ""
if type(db_url) is MultiHostUrl:
con_url = db_url.unicode_string()
else: # Sqlite
con_url = db_url
connect_args["check_same_thread"] = False connect_args["check_same_thread"] = False
engine = sa.create_engine(db_url, echo=False, connect_args=connect_args, pool_pre_ping=True, future=True) engine = sa.create_engine(con_url, echo=False, connect_args=connect_args, pool_pre_ping=True, future=True)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine, future=True) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine, future=True)

View File

@ -1,7 +1,7 @@
from functools import wraps from functools import wraps
from uuid import UUID from uuid import UUID
from pydantic import BaseModel, Field, NoneStr from pydantic import BaseModel, Field
from sqlalchemy import select from sqlalchemy import select
from sqlalchemy.orm import MANYTOMANY, MANYTOONE, ONETOMANY, Session from sqlalchemy.orm import MANYTOMANY, MANYTOONE, ONETOMANY, Session
from sqlalchemy.orm.mapper import Mapper from sqlalchemy.orm.mapper import Mapper
@ -21,7 +21,7 @@ class AutoInitConfig(BaseModel):
Config class for `auto_init` decorator. Config class for `auto_init` decorator.
""" """
get_attr: NoneStr = None get_attr: str | None = None
exclude: set = Field(default_factory=_default_exclusion) exclude: set = Field(default_factory=_default_exclusion)
# auto_create: bool = False # auto_create: bool = False

View File

@ -1,4 +1,4 @@
from pydantic import UUID4, ConfigDict, NoneStr from pydantic import UUID4, ConfigDict
from sqlalchemy.orm import joinedload from sqlalchemy.orm import joinedload
from sqlalchemy.orm.interfaces import LoaderOption from sqlalchemy.orm.interfaces import LoaderOption
@ -74,7 +74,7 @@ class GroupEventNotifierSave(GroupEventNotifierCreate):
class GroupEventNotifierUpdate(GroupEventNotifierSave): class GroupEventNotifierUpdate(GroupEventNotifierSave):
id: UUID4 id: UUID4
apprise_url: NoneStr = None apprise_url: str | None = None
class GroupEventNotifierOut(MealieModel): class GroupEventNotifierOut(MealieModel):

View File

@ -1,6 +1,6 @@
from uuid import UUID from uuid import UUID
from pydantic import ConfigDict, NoneStr from pydantic import ConfigDict
from mealie.schema._mealie import MealieModel from mealie.schema._mealie import MealieModel
@ -29,4 +29,4 @@ class EmailInvitation(MealieModel):
class EmailInitationResponse(MealieModel): class EmailInitationResponse(MealieModel):
success: bool success: bool
error: NoneStr = None error: str | None = None

View File

@ -1,15 +1,14 @@
from typing import Annotated from typing import Annotated
from pydantic import StringConstraints, validator from pydantic import StringConstraints, validator
from pydantic.types import NoneStr
from mealie.schema._mealie import MealieModel from mealie.schema._mealie import MealieModel
from mealie.schema._mealie.validators import validate_locale from mealie.schema._mealie.validators import validate_locale
class CreateUserRegistration(MealieModel): class CreateUserRegistration(MealieModel):
group: NoneStr = None group: str | None = None
group_token: NoneStr = None group_token: str | None = None
email: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)] # type: ignore email: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)] # type: ignore
username: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)] # type: ignore username: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)] # type: ignore
password: str password: str