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

View File

@ -3,8 +3,7 @@ from mealie.core.config import settings
from mealie.core.security import get_password_hash from mealie.core.security import get_password_hash
from mealie.db.database import db from mealie.db.database import db
from mealie.db.db_setup import create_session from mealie.db.db_setup import create_session
from mealie.schema.settings import SiteSettings from mealie.schema.admin import SiteSettings, SiteTheme
from mealie.schema.theme import SiteTheme
from mealie.services.events import create_general_event from mealie.services.events import create_general_event
from sqlalchemy.orm import Session 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.database import db
from mealie.db.db_setup import generate_session from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter from mealie.routes.routers import AdminAPIRouter
from mealie.schema.event_notifications import EventNotificationIn, EventNotificationOut from mealie.schema.events import EventNotificationIn, EventNotificationOut, EventsOut, TestEvent
from mealie.schema.events import EventsOut, TestEvent
from mealie.services.events import test_notification from mealie.services.events import test_notification
from sqlalchemy.orm.session import Session 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.core.security import create_file_token
from mealie.db.db_setup import generate_session from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter 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 import imports
from mealie.services.backups.exports import backup_all from mealie.services.backups.exports import backup_all
from mealie.services.events import create_backup_event 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.database import db
from mealie.db.db_setup import generate_session from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter 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 from sqlalchemy.orm.session import Session
admin_router = AdminAPIRouter(prefix="/api/debug", tags=["Debug"]) admin_router = AdminAPIRouter(prefix="/api/debug", tags=["Debug"])
public_router = APIRouter(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.core.config import app_dirs, settings
from mealie.db.database import db from mealie.db.database import db
from mealie.db.db_setup import generate_session from mealie.db.db_setup import generate_session
from mealie.schema.auth import TokenData from mealie.schema.user import LongLiveTokenInDB, TokenData, UserInDB
from mealie.schema.user import LongLiveTokenInDB, UserInDB
from sqlalchemy.orm.session import Session from sqlalchemy.orm.session import Session
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/auth/token") 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.db.db_setup import generate_session
from mealie.routes.deps import get_current_user from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter 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.schema.user import GroupInDB, UserInDB
from mealie.services.events import create_group_event from mealie.services.events import create_group_event
from mealie.services.image import image 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.db.db_setup import generate_session
from mealie.routes.deps import get_current_user from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter 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.recipe import Recipe
from mealie.schema.shopping_list import ListItem, ShoppingListIn, ShoppingListOut
from mealie.schema.user import UserInDB from mealie.schema.user import UserInDB
from sqlalchemy.orm.session import Session 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.core.config import app_dirs
from mealie.db.db_setup import generate_session from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter 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 mealie.services.migrations import migration
from sqlalchemy.orm.session import Session 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.db.db_setup import generate_session
from mealie.routes.deps import is_logged_in from mealie.routes.deps import is_logged_in
from mealie.routes.routers import AdminAPIRouter, UserAPIRouter 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 from sqlalchemy.orm.session import Session
public_router = APIRouter(prefix="/api/categories", tags=["Recipe Categories"]) 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.db.db_setup import generate_session
from mealie.routes.deps import get_current_user from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter 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 mealie.schema.user import UserInDB
from sqlalchemy.orm.session import Session 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.deps import get_current_user, is_logged_in, temporary_zip_path
from mealie.routes.routers import UserAPIRouter from mealie.routes.routers import UserAPIRouter
from mealie.schema.recipe import Recipe, RecipeAsset, RecipeImageTypes, RecipeURLIn from mealie.schema.recipe import Recipe, RecipeAsset, RecipeImageTypes, RecipeURLIn
from mealie.schema.recipe.recipe import CreateRecipe
from mealie.schema.user import UserInDB from mealie.schema.user import UserInDB
from mealie.services.events import create_recipe_event from mealie.services.events import create_recipe_event
from mealie.services.image.image import scrape_image, write_image 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() 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) @user_router.post("/create", status_code=201, response_model=str)
def create_from_json( def create_from_json(
background_tasks: BackgroundTasks, 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.db.db_setup import generate_session
from mealie.routes.deps import is_logged_in from mealie.routes.deps import is_logged_in
from mealie.routes.routers import AdminAPIRouter, UserAPIRouter 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 from sqlalchemy.orm.session import Session
public_router = APIRouter(prefix="/api/tags", tags=["Recipe Tags"]) 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.db.db_setup import generate_session
from mealie.routes.deps import get_current_user from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter 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 mealie.schema.user import UserInDB
from sqlalchemy.orm.session import Session from sqlalchemy.orm.session import Session

View File

@ -1,10 +1,10 @@
from mealie.routes.routers import AdminAPIRouter
from typing import Union from typing import Union
from fastapi import APIRouter, Depends from fastapi import APIRouter, Depends
from mealie.db.database import db from mealie.db.database import db
from mealie.db.db_setup import generate_session 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 from sqlalchemy.orm.session import Session
public_router = APIRouter(prefix="/api/site-settings/custom-pages", tags=["Settings"]) 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.db.db_setup import generate_session
from mealie.routes.deps import get_current_user from mealie.routes.deps import get_current_user
from mealie.routes.routers import AdminAPIRouter 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.schema.user import GroupInDB, UserInDB
from mealie.utils.post_webhooks import post_webhooks from mealie.utils.post_webhooks import post_webhooks
from sqlalchemy.orm.session import Session 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 import Depends, HTTPException, status
from fastapi.routing import APIRouter
from mealie.db.database import db from mealie.db.database import db
from mealie.db.db_setup import generate_session from mealie.db.db_setup import generate_session
from mealie.routes.routers import UserAPIRouter from mealie.routes.routers import UserAPIRouter
from mealie.schema.theme import SiteTheme from mealie.schema.admin import SiteTheme
from sqlalchemy.orm.session import Session from sqlalchemy.orm.session import Session
user_router = UserAPIRouter(prefix="/api", tags=["Themes"]) 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.db.db_setup import generate_session
from mealie.routes.deps import get_admin_user from mealie.routes.deps import get_admin_user
from mealie.routes.routers import AdminAPIRouter from mealie.routes.routers import AdminAPIRouter
from mealie.schema.sign_up import SignUpIn, SignUpOut, SignUpToken from mealie.schema.user import (SignUpIn, SignUpOut, SignUpToken, UserIn,
from mealie.schema.user import UserIn, UserInDB UserInDB)
from mealie.services.events import create_user_event from mealie.services.events import create_user_event
from sqlalchemy.orm.session import Session 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 datetime import datetime
from typing import List from typing import List
from mealie.schema.restore import RecipeImport
from pydantic.main import BaseModel from pydantic.main import BaseModel
from .restore import RecipeImport
class ChowdownURL(BaseModel): class ChowdownURL(BaseModel):
url: str url: str

View File

@ -1,10 +1,11 @@
from typing import Optional from typing import Optional
from fastapi_camelcase import CamelModel from fastapi_camelcase import CamelModel
from mealie.schema.category import CategoryBase, RecipeCategoryResponse
from pydantic import validator from pydantic import validator
from slugify import slugify from slugify import slugify
from ..recipe.category import CategoryBase, RecipeCategoryResponse
class SiteSettings(CamelModel): class SiteSettings(CamelModel):
language: str = "en-US" 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 typing import List, Optional
from fastapi_camelcase import CamelModel from fastapi_camelcase import CamelModel
from mealie.schema.recipe import Recipe
from pydantic.utils import GetterDict from pydantic.utils import GetterDict
@ -25,7 +24,7 @@ class CategoryBase(CategoryIn):
class RecipeCategoryResponse(CategoryBase): class RecipeCategoryResponse(CategoryBase):
recipes: Optional[List[Recipe]] recipes: Optional[List["Recipe"]]
class Config: class Config:
schema_extra = {"example": {"id": 1, "name": "dinner", "recipes": [{}]}} schema_extra = {"example": {"id": 1, "name": "dinner", "recipes": [{}]}}
@ -41,3 +40,9 @@ class TagBase(CategoryBase):
class RecipeTagResponse(RecipeCategoryResponse): class RecipeTagResponse(RecipeCategoryResponse):
pass 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 fastapi_camelcase import CamelModel
from mealie.core.config import app_dirs, settings from mealie.core.config import app_dirs, settings
from mealie.db.models.recipe.recipe import RecipeModel from mealie.db.models.recipe.recipe import RecipeModel
from mealie.schema.comments import CommentOut
from pydantic import BaseModel, Field, validator from pydantic import BaseModel, Field, validator
from pydantic.utils import GetterDict from pydantic.utils import GetterDict
from slugify import slugify from slugify import slugify
from .comments import CommentOut
class CreateRecipe(CamelModel):
name: str
class RecipeImageTypes(str, Enum): class RecipeImageTypes(str, Enum):
original = "original.webp" original = "original.webp"
@ -120,8 +125,8 @@ class RecipeSummary(CamelModel):
class Recipe(RecipeSummary): class Recipe(RecipeSummary):
recipe_yield: Optional[str] recipe_yield: Optional[str]
recipe_ingredient: Optional[list[RecipeIngredient]] recipe_ingredient: Optional[list[RecipeIngredient]] = []
recipe_instructions: Optional[list[RecipeStep]] recipe_instructions: Optional[list[RecipeStep]] = []
nutrition: Optional[Nutrition] nutrition: Optional[Nutrition]
tools: Optional[list[str]] = [] 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.core.config import settings
from mealie.db.models.group import Group from mealie.db.models.group import Group
from mealie.db.models.users import User 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.recipe import RecipeSummary
from mealie.schema.shopping_list import ShoppingListOut
from pydantic.types import constr from pydantic.types import constr
from pydantic.utils import GetterDict from pydantic.utils import GetterDict
from ..meal_plan import MealPlanOut, ShoppingListOut
from ..recipe import CategoryBase
class LoingLiveTokenIn(CamelModel): class LoingLiveTokenIn(CamelModel):
name: str name: str

View File

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

View File

@ -3,7 +3,7 @@ from typing import Union
from mealie.db.database import db from mealie.db.database import db
from mealie.db.db_setup import create_session 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.recipe import Recipe
from mealie.schema.user import GroupInDB from mealie.schema.user import GroupInDB
from sqlalchemy.orm.session import Session from sqlalchemy.orm.session import Session

View File

@ -6,7 +6,7 @@ from typing import Any, Callable, Optional
import yaml import yaml
from mealie.core import root_logger from mealie.core import root_logger
from mealie.db.database import db 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.schema.recipe import Recipe
from mealie.services.image import image from mealie.services.image import image
from mealie.services.scraper import cleaner from mealie.services.scraper import cleaner

View File

@ -2,9 +2,10 @@ from pathlib import Path
from typing import Optional from typing import Optional
from mealie.core.config import app_dirs 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 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 from sqlalchemy.orm.session import Session

View File

@ -2,7 +2,7 @@ from enum import Enum
from pathlib import Path from pathlib import Path
from mealie.core import root_logger 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 mealie.services.migrations import chowdown, nextcloud
from sqlalchemy.orm.session import Session from sqlalchemy.orm.session import Session

View File

@ -2,7 +2,7 @@ from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from typing import Optional 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 import helpers
from mealie.services.migrations._migration_base import MigrationAlias, MigrationBase from mealie.services.migrations._migration_base import MigrationAlias, MigrationBase
from slugify import slugify from slugify import slugify

View File

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

View File

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

View File

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