refactor schema folders

This commit is contained in:
hay-kot 2021-08-01 19:24:33 -08:00
parent 0e8e2971d0
commit d67240d449
49 changed files with 109 additions and 60 deletions

View File

@ -14,18 +14,17 @@ from mealie.db.models.shopping_list import ShoppingList
from mealie.db.models.sign_up import SignUp
from mealie.db.models.theme import SiteThemeModel
from mealie.db.models.users import LongLiveToken, User
from mealie.schema.category import RecipeCategoryResponse, RecipeTagResponse
from mealie.schema.comments import CommentOut
from mealie.schema.event_notifications import EventNotificationIn
from mealie.schema.admin import CustomPageOut
from mealie.schema.admin import SiteSettings as SiteSettingsSchema
from mealie.schema.admin import SiteTheme
from mealie.schema.events import Event as EventSchema
from mealie.schema.meal import MealPlanOut
from mealie.schema.recipe import Recipe, RecipeIngredientFood, RecipeIngredientUnit
from mealie.schema.settings import CustomPageOut
from mealie.schema.settings import SiteSettings as SiteSettingsSchema
from mealie.schema.shopping_list import ShoppingListOut
from mealie.schema.sign_up import SignUpOut
from mealie.schema.theme import SiteTheme
from mealie.schema.user import GroupInDB, LongLiveTokenInDB, UserInDB
from mealie.schema.events import EventNotificationIn
from mealie.schema.meal_plan import MealPlanOut, ShoppingListOut
from mealie.schema.recipe import (CommentOut, Recipe, RecipeCategoryResponse,
RecipeIngredientFood, RecipeIngredientUnit,
RecipeTagResponse)
from mealie.schema.user import (GroupInDB, LongLiveTokenInDB, SignUpOut,
UserInDB)
from sqlalchemy.orm.session import Session
logger = getLogger()

View File

@ -3,8 +3,7 @@ from mealie.core.config import settings
from mealie.core.security import get_password_hash
from mealie.db.database import db
from mealie.db.db_setup import create_session
from mealie.schema.settings import SiteSettings
from mealie.schema.theme import SiteTheme
from mealie.schema.admin import SiteSettings, SiteTheme
from mealie.services.events import create_general_event
from sqlalchemy.orm import Session

View File

@ -5,8 +5,7 @@ from mealie.core.root_logger import get_logger
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.event_notifications import EventNotificationIn, EventNotificationOut
from mealie.schema.events import EventsOut, TestEvent
from mealie.schema.events import EventNotificationIn, EventNotificationOut, EventsOut, TestEvent
from mealie.services.events import test_notification
from sqlalchemy.orm.session import Session

View File

@ -8,7 +8,7 @@ from mealie.core.root_logger import get_logger
from mealie.core.security import create_file_token
from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.backup import BackupJob, ImportJob, Imports, LocalBackup
from mealie.schema.admin import BackupJob, ImportJob, Imports, LocalBackup
from mealie.services.backups import imports
from mealie.services.backups.exports import backup_all
from mealie.services.events import create_backup_event

View File

@ -6,10 +6,9 @@ from mealie.core.security import create_file_token
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.about import AppInfo, AppStatistics, DebugInfo
from mealie.schema.admin import AppInfo, AppStatistics, DebugInfo
from sqlalchemy.orm.session import Session
admin_router = AdminAPIRouter(prefix="/api/debug", tags=["Debug"])
public_router = APIRouter(prefix="/api/debug", tags=["Debug"])

View File

@ -7,8 +7,7 @@ from jose import JWTError, jwt
from mealie.core.config import app_dirs, settings
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.schema.auth import TokenData
from mealie.schema.user import LongLiveTokenInDB, UserInDB
from mealie.schema.user import LongLiveTokenInDB, TokenData, UserInDB
from sqlalchemy.orm.session import Session
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/auth/token")

View File

@ -3,7 +3,7 @@ from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter
from mealie.schema.meal import MealPlanIn, MealPlanOut
from mealie.schema.meal_plan import MealPlanIn, MealPlanOut
from mealie.schema.user import GroupInDB, UserInDB
from mealie.services.events import create_group_event
from mealie.services.image import image

View File

@ -4,9 +4,8 @@ from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter
from mealie.schema.meal import MealPlanOut
from mealie.schema.meal_plan import ListItem, MealPlanOut, ShoppingListIn, ShoppingListOut
from mealie.schema.recipe import Recipe
from mealie.schema.shopping_list import ListItem, ShoppingListIn, ShoppingListOut
from mealie.schema.user import UserInDB
from sqlalchemy.orm.session import Session

View File

@ -6,7 +6,7 @@ from fastapi import Depends, File, HTTPException, UploadFile, status
from mealie.core.config import app_dirs
from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.migration import MigrationFile, Migrations
from mealie.schema.admin import MigrationFile, Migrations
from mealie.services.migrations import migration
from sqlalchemy.orm.session import Session

View File

@ -3,7 +3,7 @@ from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import is_logged_in
from mealie.routes.routers import AdminAPIRouter, UserAPIRouter
from mealie.schema.category import CategoryIn, RecipeCategoryResponse
from mealie.schema.recipe import CategoryIn, RecipeCategoryResponse
from sqlalchemy.orm.session import Session
public_router = APIRouter(prefix="/api/categories", tags=["Recipe Categories"])

View File

@ -5,7 +5,7 @@ from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter
from mealie.schema.comments import CommentIn, CommentOut, CommentSaveToDB
from mealie.schema.recipe import CommentIn, CommentOut, CommentSaveToDB
from mealie.schema.user import UserInDB
from sqlalchemy.orm.session import Session

View File

@ -12,6 +12,7 @@ from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user, is_logged_in, temporary_zip_path
from mealie.routes.routers import UserAPIRouter
from mealie.schema.recipe import Recipe, RecipeAsset, RecipeImageTypes, RecipeURLIn
from mealie.schema.recipe.recipe import CreateRecipe
from mealie.schema.user import UserInDB
from mealie.services.events import create_recipe_event
from mealie.services.image.image import scrape_image, write_image
@ -27,6 +28,30 @@ public_router = APIRouter(prefix="/api/recipes", tags=["Recipe CRUD"])
logger = get_logger()
@user_router.post("", status_code=201, response_model=str)
def create_from_name(
background_tasks: BackgroundTasks,
data: CreateRecipe,
session: Session = Depends(generate_session),
current_user=Depends(get_current_user),
) -> str:
""" Takes in a JSON string and loads data into the database as a new entry"""
data = Recipe(name=data.name)
recipe: Recipe = db.recipes.create(session, data.dict())
background_tasks.add_task(
create_recipe_event,
"Recipe Created (URL)",
f"'{recipe.name}' by {current_user.full_name} \n {settings.BASE_URL}/recipe/{recipe.slug}",
session=session,
attachment=recipe.image_dir.joinpath("min-original.webp"),
)
return recipe.slug
@user_router.post("/create", status_code=201, response_model=str)
def create_from_json(
background_tasks: BackgroundTasks,

View File

@ -3,7 +3,7 @@ from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import is_logged_in
from mealie.routes.routers import AdminAPIRouter, UserAPIRouter
from mealie.schema.category import RecipeTagResponse, TagIn
from mealie.schema.recipe import RecipeTagResponse, TagIn
from sqlalchemy.orm.session import Session
public_router = APIRouter(prefix="/api/tags", tags=["Recipe Tags"])

View File

@ -3,7 +3,7 @@ from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter
from mealie.schema.shopping_list import ShoppingListIn, ShoppingListOut
from mealie.schema.meal_plan import ShoppingListIn, ShoppingListOut
from mealie.schema.user import UserInDB
from sqlalchemy.orm.session import Session

View File

@ -1,10 +1,10 @@
from mealie.routes.routers import AdminAPIRouter
from typing import Union
from fastapi import APIRouter, Depends
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.schema.settings import CustomPageBase, CustomPageOut
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.admin import CustomPageBase, CustomPageOut
from sqlalchemy.orm.session import Session
public_router = APIRouter(prefix="/api/site-settings/custom-pages", tags=["Settings"])

View File

@ -3,7 +3,7 @@ from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.settings import SiteSettings
from mealie.schema.admin import SiteSettings
from mealie.schema.user import GroupInDB, UserInDB
from mealie.utils.post_webhooks import post_webhooks
from sqlalchemy.orm.session import Session

View File

@ -1,9 +1,9 @@
from fastapi.routing import APIRouter
from fastapi import Depends, HTTPException, status
from fastapi.routing import APIRouter
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.routers import UserAPIRouter
from mealie.schema.theme import SiteTheme
from mealie.schema.admin import SiteTheme
from sqlalchemy.orm.session import Session
user_router = UserAPIRouter(prefix="/api", tags=["Themes"])

View File

@ -6,8 +6,8 @@ from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_admin_user
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.sign_up import SignUpIn, SignUpOut, SignUpToken
from mealie.schema.user import UserIn, UserInDB
from mealie.schema.user import (SignUpIn, SignUpOut, SignUpToken, UserIn,
UserInDB)
from mealie.services.events import create_user_event
from sqlalchemy.orm.session import Session

View File

@ -0,0 +1,6 @@
from .about import *
from .backup import *
from .migration import *
from .restore import *
from .settings import *
from .theme import *

View File

@ -1,9 +1,10 @@
from datetime import datetime
from typing import List
from mealie.schema.restore import RecipeImport
from pydantic.main import BaseModel
from .restore import RecipeImport
class ChowdownURL(BaseModel):
url: str

View File

@ -1,10 +1,11 @@
from typing import Optional
from fastapi_camelcase import CamelModel
from mealie.schema.category import CategoryBase, RecipeCategoryResponse
from pydantic import validator
from slugify import slugify
from ..recipe.category import CategoryBase, RecipeCategoryResponse
class SiteSettings(CamelModel):
language: str = "en-US"

View File

@ -0,0 +1,2 @@
from .event_notifications import *
from .events import *

View File

@ -0,0 +1,2 @@
from .meal import *
from .shopping_list import *

View File

@ -0,0 +1,4 @@
from .category import *
from .comments import *
from .helpers import *
from .recipe import *

View File

@ -1,7 +1,6 @@
from typing import List, Optional
from fastapi_camelcase import CamelModel
from mealie.schema.recipe import Recipe
from pydantic.utils import GetterDict
@ -25,7 +24,7 @@ class CategoryBase(CategoryIn):
class RecipeCategoryResponse(CategoryBase):
recipes: Optional[List[Recipe]]
recipes: Optional[List["Recipe"]]
class Config:
schema_extra = {"example": {"id": 1, "name": "dinner", "recipes": [{}]}}
@ -41,3 +40,9 @@ class TagBase(CategoryBase):
class RecipeTagResponse(RecipeCategoryResponse):
pass
from .recipe import Recipe
RecipeCategoryResponse.update_forward_refs()
RecipeTagResponse.update_forward_refs()

View File

@ -6,11 +6,16 @@ from typing import Any, Optional
from fastapi_camelcase import CamelModel
from mealie.core.config import app_dirs, settings
from mealie.db.models.recipe.recipe import RecipeModel
from mealie.schema.comments import CommentOut
from pydantic import BaseModel, Field, validator
from pydantic.utils import GetterDict
from slugify import slugify
from .comments import CommentOut
class CreateRecipe(CamelModel):
name: str
class RecipeImageTypes(str, Enum):
original = "original.webp"
@ -120,8 +125,8 @@ class RecipeSummary(CamelModel):
class Recipe(RecipeSummary):
recipe_yield: Optional[str]
recipe_ingredient: Optional[list[RecipeIngredient]]
recipe_instructions: Optional[list[RecipeStep]]
recipe_ingredient: Optional[list[RecipeIngredient]] = []
recipe_instructions: Optional[list[RecipeStep]] = []
nutrition: Optional[Nutrition]
tools: Optional[list[str]] = []

View File

@ -0,0 +1,3 @@
from .auth import *
from .sign_up import *
from .user import *

View File

@ -4,13 +4,13 @@ from fastapi_camelcase import CamelModel
from mealie.core.config import settings
from mealie.db.models.group import Group
from mealie.db.models.users import User
from mealie.schema.category import CategoryBase
from mealie.schema.meal import MealPlanOut
from mealie.schema.recipe import RecipeSummary
from mealie.schema.shopping_list import ShoppingListOut
from pydantic.types import constr
from pydantic.utils import GetterDict
from ..meal_plan import MealPlanOut, ShoppingListOut
from ..recipe import CategoryBase
class LoingLiveTokenIn(CamelModel):
name: str

View File

@ -6,20 +6,20 @@ from typing import Callable
from mealie.core.config import app_dirs
from mealie.db.database import db
from mealie.schema.comments import CommentOut
from mealie.schema.event_notifications import EventNotificationIn
from mealie.schema.recipe import Recipe
from mealie.schema.restore import (
from mealie.schema.admin import (
CustomPageImport,
CustomPageOut,
GroupImport,
NotificationImport,
RecipeImport,
SettingsImport,
SiteSettings,
SiteTheme,
ThemeImport,
UserImport,
)
from mealie.schema.settings import CustomPageOut, SiteSettings
from mealie.schema.theme import SiteTheme
from mealie.schema.events import EventNotificationIn
from mealie.schema.recipe import CommentOut, Recipe
from mealie.schema.user import UpdateGroup, UserInDB
from mealie.services.image import minify
from pydantic.main import BaseModel

View File

@ -3,7 +3,7 @@ from typing import Union
from mealie.db.database import db
from mealie.db.db_setup import create_session
from mealie.schema.meal import MealDayIn, MealPlanIn
from mealie.schema.meal_plan import MealDayIn, MealPlanIn
from mealie.schema.recipe import Recipe
from mealie.schema.user import GroupInDB
from sqlalchemy.orm.session import Session

View File

@ -6,7 +6,7 @@ from typing import Any, Callable, Optional
import yaml
from mealie.core import root_logger
from mealie.db.database import db
from mealie.schema.migration import MigrationImport
from mealie.schema.admin import MigrationImport
from mealie.schema.recipe import Recipe
from mealie.services.image import image
from mealie.services.scraper import cleaner

View File

@ -2,9 +2,10 @@ from pathlib import Path
from typing import Optional
from mealie.core.config import app_dirs
from mealie.schema.migration import MigrationImport
from mealie.schema.admin import MigrationImport
from mealie.services.migrations import helpers
from mealie.services.migrations._migration_base import MigrationAlias, MigrationBase
from mealie.services.migrations._migration_base import (MigrationAlias,
MigrationBase)
from sqlalchemy.orm.session import Session

View File

@ -2,7 +2,7 @@ from enum import Enum
from pathlib import Path
from mealie.core import root_logger
from mealie.schema.migration import MigrationImport
from mealie.schema.admin import MigrationImport
from mealie.services.migrations import chowdown, nextcloud
from sqlalchemy.orm.session import Session

View File

@ -2,7 +2,7 @@ from dataclasses import dataclass
from pathlib import Path
from typing import Optional
from mealie.schema.migration import MigrationImport
from mealie.schema.admin import MigrationImport
from mealie.services.migrations import helpers
from mealie.services.migrations._migration_base import MigrationAlias, MigrationBase
from slugify import slugify

View File

@ -2,7 +2,7 @@ import json
import pytest
from fastapi.testclient import TestClient
from mealie.schema.settings import SiteSettings
from mealie.schema.admin import SiteSettings
from tests.app_routes import AppRoutes

View File

@ -2,7 +2,7 @@ import json
import pytest
from fastapi.testclient import TestClient
from mealie.schema.sign_up import SignUpToken
from mealie.schema.user import SignUpToken
from tests.app_routes import AppRoutes

View File

@ -2,7 +2,7 @@ import json
import pytest
from fastapi.testclient import TestClient
from mealie.schema.theme import SiteTheme
from mealie.schema.admin import SiteTheme
from tests.app_routes import AppRoutes