mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-28 21:15:26 -05:00
Refactor/define repository layer (#883)
* move data access layer * rename dal -> repo
This commit is contained in:
@@ -2,8 +2,8 @@ from fastapi import Depends
|
||||
from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.core.root_logger import get_logger
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import AdminAPIRouter
|
||||
from mealie.schema.events import EventsOut
|
||||
|
||||
@@ -15,7 +15,7 @@ logger = get_logger()
|
||||
@router.get("", response_model=EventsOut)
|
||||
async def get_events(session: Session = Depends(generate_session)):
|
||||
"""Get event from the Database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
|
||||
return EventsOut(total=db.events.count_all(), events=db.events.get_all(order_by="time_stamp"))
|
||||
|
||||
@@ -23,7 +23,7 @@ async def get_events(session: Session = Depends(generate_session)):
|
||||
@router.delete("")
|
||||
async def delete_events(session: Session = Depends(generate_session)):
|
||||
"""Get event from the Database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
db.events.delete_all()
|
||||
return {"message": "All events deleted"}
|
||||
|
||||
@@ -31,5 +31,5 @@ async def delete_events(session: Session = Depends(generate_session)):
|
||||
@router.delete("/{id}")
|
||||
async def delete_event(id: int, session: Session = Depends(generate_session)):
|
||||
"""Delete event from the Database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.events.delete(id)
|
||||
|
||||
@@ -4,8 +4,8 @@ from fastapi import Depends, status
|
||||
from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.core.root_logger import get_logger
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import AdminAPIRouter
|
||||
from mealie.schema.events import EventNotificationIn, EventNotificationOut, TestEvent
|
||||
from mealie.services.events import test_notification
|
||||
@@ -21,7 +21,7 @@ async def create_event_notification(
|
||||
session: Session = Depends(generate_session),
|
||||
):
|
||||
"""Create event_notification in the Database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
|
||||
return db.event_notifications.create(event_data)
|
||||
|
||||
@@ -32,7 +32,7 @@ async def test_notification_route(
|
||||
session: Session = Depends(generate_session),
|
||||
):
|
||||
"""Create event_notification in the Database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
|
||||
if test_data.id:
|
||||
event_obj: EventNotificationIn = db.event_notifications.get(test_data.id)
|
||||
@@ -48,7 +48,7 @@ async def test_notification_route(
|
||||
@router.get("/notifications", response_model=list[EventNotificationOut])
|
||||
async def get_all_event_notification(session: Session = Depends(generate_session)):
|
||||
"""Get all event_notification from the Database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.event_notifications.get_all(override_schema=EventNotificationOut)
|
||||
|
||||
|
||||
@@ -63,5 +63,5 @@ async def update_event_notification(id: int, session: Session = Depends(generate
|
||||
async def delete_event_notification(id: int, session: Session = Depends(generate_session)):
|
||||
"""Delete event_notification from the Database"""
|
||||
# Delete Item
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.event_notifications.delete(id)
|
||||
|
||||
@@ -4,8 +4,8 @@ from sqlalchemy.orm.session import Session
|
||||
from mealie.core.config import get_app_settings
|
||||
from mealie.core.release_checker import get_latest_version
|
||||
from mealie.core.settings.static import APP_VERSION
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.schema.admin.about import AdminAboutInfo, AppStatistics, CheckAppConfig
|
||||
|
||||
router = APIRouter(prefix="/about")
|
||||
@@ -31,7 +31,7 @@ async def get_app_info():
|
||||
|
||||
@router.get("/statistics", response_model=AppStatistics)
|
||||
async def get_app_statistics(session: Session = Depends(generate_session)):
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return AppStatistics(
|
||||
total_recipes=db.recipes.count_all(),
|
||||
uncategorized_recipes=db.recipes.count_uncategorized(),
|
||||
|
||||
@@ -3,8 +3,8 @@ from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.core.dependencies import is_logged_in
|
||||
from mealie.core.root_logger import get_logger
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import AdminAPIRouter, UserAPIRouter
|
||||
from mealie.schema.recipe import CategoryIn, RecipeCategoryResponse
|
||||
|
||||
@@ -17,14 +17,14 @@ logger = get_logger()
|
||||
@public_router.get("")
|
||||
async def get_all_recipe_categories(session: Session = Depends(generate_session)):
|
||||
"""Returns a list of available categories in the database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.categories.get_all_limit_columns(fields=["slug", "name"])
|
||||
|
||||
|
||||
@public_router.get("/empty")
|
||||
def get_empty_categories(session: Session = Depends(generate_session)):
|
||||
"""Returns a list of categories that do not contain any recipes"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.categories.get_empty()
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ def get_all_recipes_by_category(
|
||||
category: str, session: Session = Depends(generate_session), is_user: bool = Depends(is_logged_in)
|
||||
):
|
||||
"""Returns a list of recipes associated with the provided category."""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
|
||||
category_obj = db.categories.get(category)
|
||||
category_obj = RecipeCategoryResponse.from_orm(category_obj)
|
||||
@@ -47,7 +47,7 @@ def get_all_recipes_by_category(
|
||||
@user_router.post("")
|
||||
async def create_recipe_category(category: CategoryIn, session: Session = Depends(generate_session)):
|
||||
"""Creates a Category in the database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
|
||||
try:
|
||||
return db.categories.create(category.dict())
|
||||
@@ -58,7 +58,7 @@ async def create_recipe_category(category: CategoryIn, session: Session = Depend
|
||||
@admin_router.put("/{category}", response_model=RecipeCategoryResponse)
|
||||
async def update_recipe_category(category: str, new_category: CategoryIn, session: Session = Depends(generate_session)):
|
||||
"""Updates an existing Tag in the database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
|
||||
try:
|
||||
return db.categories.update(category, new_category.dict())
|
||||
@@ -74,7 +74,7 @@ async def delete_recipe_category(category: str, session: Session = Depends(gener
|
||||
category does not impact a recipe. The category will be removed
|
||||
from any recipes that contain it
|
||||
"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
|
||||
try:
|
||||
db.categories.delete(category)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.schema.recipe import RecipeSummary
|
||||
|
||||
router = APIRouter()
|
||||
@@ -10,11 +10,11 @@ router = APIRouter()
|
||||
|
||||
@router.get("/summary/untagged", response_model=list[RecipeSummary])
|
||||
async def get_untagged_recipes(count: bool = False, session: Session = Depends(generate_session)):
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.recipes.count_untagged(count=count, override_schema=RecipeSummary)
|
||||
|
||||
|
||||
@router.get("/summary/uncategorized", response_model=list[RecipeSummary])
|
||||
async def get_uncategorized_recipes(count: bool = False, session: Session = Depends(generate_session)):
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.recipes.count_uncategorized(count=count, override_schema=RecipeSummary)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
from fastapi import Depends
|
||||
from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import UserAPIRouter
|
||||
from mealie.schema.recipe.recipe_comments import RecipeCommentOut
|
||||
|
||||
@@ -15,6 +15,6 @@ async def get_recipe_comments(
|
||||
session: Session = Depends(generate_session),
|
||||
):
|
||||
"""Get all comments for a recipe"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
recipe = db.recipes.get_one(slug)
|
||||
return db.comments.multi_query({"recipe_id": recipe.id})
|
||||
|
||||
@@ -5,8 +5,8 @@ from fastapi.datastructures import UploadFile
|
||||
from slugify import slugify
|
||||
from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import UserAPIRouter
|
||||
from mealie.schema.recipe import CreateRecipeByUrl, Recipe, RecipeAsset
|
||||
from mealie.services.image.image import scrape_image, write_image
|
||||
@@ -29,7 +29,7 @@ def update_recipe_image(
|
||||
session: Session = Depends(generate_session),
|
||||
):
|
||||
"""Removes an existing image and replaces it with the incoming file."""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
write_image(slug, image, extension)
|
||||
new_version = db.recipes.update_image(slug, extension)
|
||||
|
||||
@@ -56,7 +56,7 @@ def upload_recipe_asset(
|
||||
if not dest.is_file():
|
||||
raise HTTPException(status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
|
||||
recipe: Recipe = db.recipes.get(slug)
|
||||
recipe.assets.append(asset_in)
|
||||
|
||||
@@ -6,7 +6,7 @@ from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.core.dependencies import temporary_zip_path
|
||||
from mealie.core.root_logger import get_logger
|
||||
from mealie.db.database import get_database
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import UserAPIRouter
|
||||
from mealie.schema.recipe import CreateRecipeByUrl, Recipe
|
||||
from mealie.schema.recipe.recipe import CreateRecipe, CreateRecipeByUrlBulk, RecipeSummary
|
||||
@@ -53,7 +53,7 @@ def parse_recipe_url_bulk(
|
||||
"""Takes in a URL and attempts to scrape data and load it into the database"""
|
||||
|
||||
def bulk_import_func(task_id: int, session: Session) -> None:
|
||||
database = get_database(session)
|
||||
database = get_repositories(session)
|
||||
task = database.server_tasks.get_one(task_id)
|
||||
|
||||
task.append_log("test task has started")
|
||||
|
||||
@@ -9,8 +9,8 @@ from mealie.core.dependencies import temporary_zip_path
|
||||
from mealie.core.dependencies.dependencies import temporary_dir, validate_recipe_token
|
||||
from mealie.core.root_logger import get_logger
|
||||
from mealie.core.security import create_recipe_slug_token
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import UserAPIRouter
|
||||
from mealie.schema.recipe import Recipe, RecipeImageTypes
|
||||
from mealie.services.recipe.recipe_service import RecipeService
|
||||
@@ -68,7 +68,7 @@ async def get_recipe_as_zip(
|
||||
if slug != slug:
|
||||
raise HTTPException(status_code=400, detail="Invalid Slug")
|
||||
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
recipe: Recipe = db.recipes.get(slug)
|
||||
image_asset = recipe.image_dir.joinpath(RecipeImageTypes.original.value)
|
||||
with ZipFile(temp_path, "w") as myzip:
|
||||
|
||||
@@ -2,8 +2,8 @@ from fastapi import APIRouter, Depends
|
||||
from pydantic import UUID4
|
||||
from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.schema.recipe import Recipe
|
||||
|
||||
router = APIRouter()
|
||||
@@ -11,7 +11,7 @@ router = APIRouter()
|
||||
|
||||
@router.get("/shared/{token_id}", response_model=Recipe)
|
||||
def get_shared_recipe(token_id: UUID4, session: Session = Depends(generate_session)):
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
|
||||
token_summary = db.recipe_share_tokens.get_one(token_id)
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ from fastapi import Depends
|
||||
from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.core.dependencies import get_current_user
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import UserAPIRouter
|
||||
from mealie.schema.meal_plan import ShoppingListIn, ShoppingListOut
|
||||
from mealie.schema.user import PrivateUser
|
||||
@@ -18,7 +18,7 @@ async def create_shopping_list(
|
||||
session: Session = Depends(generate_session),
|
||||
):
|
||||
"""Create Shopping List in the Database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
list_in.group = current_user.group
|
||||
|
||||
return db.shopping_lists.create(list_in)
|
||||
@@ -27,19 +27,19 @@ async def create_shopping_list(
|
||||
@router.get("/{id}", response_model=ShoppingListOut)
|
||||
async def get_shopping_list(id: int, session: Session = Depends(generate_session)):
|
||||
"""Get Shopping List from the Database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.shopping_lists.get(id)
|
||||
|
||||
|
||||
@router.put("/{id}", response_model=ShoppingListOut)
|
||||
async def update_shopping_list(id: int, new_data: ShoppingListIn, session: Session = Depends(generate_session)):
|
||||
"""Update Shopping List in the Database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.shopping_lists.update(id, new_data)
|
||||
|
||||
|
||||
@router.delete("/{id}")
|
||||
async def delete_shopping_list(id: int, session: Session = Depends(generate_session)):
|
||||
"""Delete Shopping List from the Database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.shopping_lists.delete(id)
|
||||
|
||||
@@ -2,8 +2,8 @@ from fastapi import APIRouter, Depends, HTTPException, status
|
||||
from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.core.dependencies import get_current_user
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import AdminAPIRouter
|
||||
from mealie.schema.user import GroupInDB, PrivateUser
|
||||
from mealie.utils.post_webhooks import post_webhooks
|
||||
@@ -15,7 +15,7 @@ admin_router = AdminAPIRouter(prefix="/api/site-settings", tags=["Settings"])
|
||||
@public_router.get("")
|
||||
def get_main_settings(session: Session = Depends(generate_session)):
|
||||
"""Returns basic site settings"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
|
||||
return db.settings.get(1)
|
||||
|
||||
@@ -26,7 +26,7 @@ def test_webhooks(
|
||||
session: Session = Depends(generate_session),
|
||||
):
|
||||
"""Run the function to test your webhooks"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
group_entry: GroupInDB = db.groups.get(current_user.group, "name")
|
||||
|
||||
try:
|
||||
|
||||
@@ -2,8 +2,8 @@ from fastapi import APIRouter, Depends, HTTPException, status
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from mealie.core.dependencies import is_logged_in
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import AdminAPIRouter, UserAPIRouter
|
||||
from mealie.schema.recipe import RecipeTagResponse, TagIn
|
||||
|
||||
@@ -15,14 +15,14 @@ admin_router = AdminAPIRouter()
|
||||
@public_router.get("")
|
||||
async def get_all_recipe_tags(session: Session = Depends(generate_session)):
|
||||
"""Returns a list of available tags in the database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.tags.get_all_limit_columns(["slug", "name"])
|
||||
|
||||
|
||||
@public_router.get("/empty")
|
||||
def get_empty_tags(session: Session = Depends(generate_session)):
|
||||
"""Returns a list of tags that do not contain any recipes"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.tags.get_empty()
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ def get_all_recipes_by_tag(
|
||||
tag: str, session: Session = Depends(generate_session), is_user: bool = Depends(is_logged_in)
|
||||
):
|
||||
"""Returns a list of recipes associated with the provided tag."""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
tag_obj = db.tags.get(tag)
|
||||
tag_obj = RecipeTagResponse.from_orm(tag_obj)
|
||||
|
||||
@@ -44,14 +44,14 @@ def get_all_recipes_by_tag(
|
||||
@user_router.post("")
|
||||
async def create_recipe_tag(tag: TagIn, session: Session = Depends(generate_session)):
|
||||
"""Creates a Tag in the database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.tags.create(tag.dict())
|
||||
|
||||
|
||||
@admin_router.put("/{tag}", response_model=RecipeTagResponse)
|
||||
async def update_recipe_tag(tag: str, new_tag: TagIn, session: Session = Depends(generate_session)):
|
||||
"""Updates an existing Tag in the database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.tags.update(tag, new_tag.dict())
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ async def delete_recipe_tag(tag: str, session: Session = Depends(generate_sessio
|
||||
from any recipes that contain it"""
|
||||
|
||||
try:
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
db.tags.delete(tag)
|
||||
except Exception:
|
||||
raise HTTPException(status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
@@ -6,8 +6,8 @@ from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.core.dependencies import get_current_user
|
||||
from mealie.core.security import create_access_token
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import UserAPIRouter
|
||||
from mealie.schema.user import CreateToken, LoingLiveTokenIn, LongLiveTokenInDB, PrivateUser
|
||||
|
||||
@@ -33,7 +33,7 @@ async def create_api_token(
|
||||
user_id=current_user.id,
|
||||
)
|
||||
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
|
||||
new_token_in_db = db.api_tokens.create(token_model)
|
||||
|
||||
@@ -48,7 +48,7 @@ async def delete_api_token(
|
||||
session: Session = Depends(generate_session),
|
||||
):
|
||||
"""Delete api_token from the Database"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
token: LongLiveTokenInDB = db.api_tokens.get(token_id)
|
||||
|
||||
if not token:
|
||||
|
||||
@@ -5,8 +5,8 @@ from sqlalchemy.orm.session import Session
|
||||
from mealie.core import security
|
||||
from mealie.core.dependencies import get_current_user
|
||||
from mealie.core.security import hash_password
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import AdminAPIRouter, UserAPIRouter
|
||||
from mealie.routes.users._helpers import assert_user_change_allowed
|
||||
from mealie.schema.user import PrivateUser, UserBase, UserIn, UserOut
|
||||
@@ -18,7 +18,7 @@ admin_router = AdminAPIRouter(prefix="")
|
||||
|
||||
@admin_router.get("", response_model=list[UserOut])
|
||||
async def get_all_users(session: Session = Depends(generate_session)):
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.users.get_all()
|
||||
|
||||
|
||||
@@ -35,13 +35,13 @@ async def create_user(
|
||||
create_user_event, "User Created", f"Created by {current_user.full_name}", session=session
|
||||
)
|
||||
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.users.create(new_user.dict())
|
||||
|
||||
|
||||
@admin_router.get("/{id}", response_model=UserOut)
|
||||
async def get_user(id: UUID4, session: Session = Depends(generate_session)):
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.users.get(id)
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ def delete_user(
|
||||
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="SUPER_USER")
|
||||
|
||||
try:
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
db.users.delete(id)
|
||||
background_tasks.add_task(create_user_event, "User Deleted", f"User ID: {id}", session=session)
|
||||
except Exception:
|
||||
@@ -92,7 +92,7 @@ async def update_user(
|
||||
# prevent an admin from demoting themself
|
||||
raise HTTPException(status.HTTP_403_FORBIDDEN)
|
||||
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
db.users.update(id, new_data.dict())
|
||||
|
||||
if current_user.id == id:
|
||||
|
||||
@@ -2,8 +2,8 @@ from fastapi import Depends
|
||||
from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.core.dependencies import get_current_user
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import UserAPIRouter
|
||||
from mealie.routes.users._helpers import assert_user_change_allowed
|
||||
from mealie.schema.user import PrivateUser, UserFavorites
|
||||
@@ -14,7 +14,7 @@ user_router = UserAPIRouter()
|
||||
@user_router.get("/{id}/favorites", response_model=UserFavorites)
|
||||
async def get_favorites(id: str, session: Session = Depends(generate_session)):
|
||||
"""Get user's favorite recipes"""
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
return db.users.get(id, override_schema=UserFavorites)
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ def add_favorite(
|
||||
"""Adds a Recipe to the users favorites"""
|
||||
|
||||
current_user.favorite_recipes.append(slug)
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
db.users.update(current_user.id, current_user)
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ def remove_favorite(
|
||||
assert_user_change_allowed(id, current_user)
|
||||
current_user.favorite_recipes = [x for x in current_user.favorite_recipes if x != slug]
|
||||
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
db.users.update(current_user.id, current_user)
|
||||
|
||||
return
|
||||
|
||||
@@ -9,8 +9,8 @@ from sqlalchemy.orm.session import Session
|
||||
from mealie import utils
|
||||
from mealie.core.dependencies import get_current_user
|
||||
from mealie.core.dependencies.dependencies import temporary_dir
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import UserAPIRouter
|
||||
from mealie.routes.users._helpers import assert_user_change_allowed
|
||||
from mealie.schema.user import PrivateUser
|
||||
@@ -41,7 +41,7 @@ def update_user_image(
|
||||
|
||||
shutil.copyfile(image, dest)
|
||||
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
|
||||
db.users.patch(id, {"cache_key": utils.new_cache_key()})
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ from sqlalchemy.orm.session import Session
|
||||
|
||||
from mealie.core.config import get_app_settings
|
||||
from mealie.core.security import hash_password
|
||||
from mealie.db.database import get_database
|
||||
from mealie.db.db_setup import generate_session
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.routes.routers import UserAPIRouter
|
||||
from mealie.schema.user import ChangePassword
|
||||
from mealie.schema.user.user_passwords import ForgotPassword, ResetPassword
|
||||
@@ -20,7 +20,7 @@ settings = get_app_settings()
|
||||
async def reset_user_password(id: int, session: Session = Depends(generate_session)):
|
||||
new_password = hash_password(settings.DEFAULT_PASSWORD)
|
||||
|
||||
db = get_database(session)
|
||||
db = get_repositories(session)
|
||||
db.users.update_password(id, new_password)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user