Skip to content

Commit 9561bb9

Browse files
committed
♻️ refactor(api): 统一模块导入路径
- 修改代码中不一致的模块导入路径,使用统一的 app.models 路径 - 删除冗余和重复的导入语句 - 添加新的 item_model.py 模块并移动相关功能【模块重构】 ♻️ refactor(test): 更新测试模块的导入路径 - 将测试模块中的导入路径与业务模块保持一致【模块重构】
1 parent f6a760d commit 9561bb9

File tree

12 files changed

+66
-76
lines changed

12 files changed

+66
-76
lines changed

backend/app/api/deps.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313
from app.core import security
1414
from app.core.config import settings
1515
from app.core.db import engine
16-
from app.model.users import User
17-
from app.models import TokenPayload
16+
from app.models import TokenPayload, User
1817

1918

2019
reusable_oauth2 = OAuth2PasswordBearer(

backend/app/api/routes/items.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33

44
from fastapi import APIRouter
55

6-
76
from app.api.deps import CurrentUser, SessionDep
8-
from backend.app.model.items_model import ItemCreate, ItemPublic, ItemsPublic, ItemUpdate
9-
from backend.app.model.user_model import Message
107
from app.service.item_service import ItemService
8+
from app.models import ItemCreate, ItemPublic, ItemsPublic, ItemUpdate, Message
119

1210
router = APIRouter(prefix="/items", tags=["items"])
1311

backend/app/api/routes/login.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@
99
from app.core import security
1010
from app.core.config import settings
1111
from app.core.security import get_password_hash
12-
from backend.app.model.user_model import UserPublic
13-
from app.models import Message, NewPassword, Token
14-
from backend.app.model.user_model import UserPublic
1512
from app.service.user_service import UserService
13+
from app.models import Message, NewPassword, Token, UserPublic
1614
from app.utils import (
1715
generate_password_reset_token,
1816
generate_reset_password_email,

backend/app/api/routes/private.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from app.api.deps import SessionDep
77
from app.core.security import get_password_hash
8-
from backend.app.model.user_model import User, UserPublic
8+
from app.models import User, UserPublic
99

1010
router = APIRouter(tags=["private"], prefix="/private")
1111

backend/app/api/routes/users.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
get_current_active_superuser,
1010
)
1111
from app.core.config import settings
12-
from backend.app.model.user_model import (
12+
from app.service.user_service import UserService
13+
from app.models import (
14+
Message,
1315
UpdatePassword,
1416
UserCreate,
1517
UserPublic,
@@ -18,8 +20,6 @@
1820
UserUpdate,
1921
UserUpdateMe,
2022
)
21-
from app.models import Message
22-
from app.service.user_service import UserService
2323
from app.utils import generate_new_account_email, send_email
2424

2525
router = APIRouter(prefix="/users", tags=["users"])

backend/app/core/db.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
from sqlmodel import Session, create_engine, select
22

3-
43
from app.core.config import settings
5-
from backend.app.model.user_model import User, UserCreate
64
from app.service.user_service import UserService
5+
from app.models import User, UserCreate
76

87
engine = create_engine(str(settings.SQLALCHEMY_DATABASE_URI))
98

backend/app/model/item_model.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import uuid
2+
from typing import Any
3+
4+
from sqlalchemy import func
5+
from sqlmodel import Session, select
6+
7+
from app.core.security import get_password_hash
8+
from app.models import Item, ItemCreate, ItemUpdate
9+
10+
11+
class ItemModel:
12+
def __init__(self, session: Session):
13+
self.session = session
14+
15+
def create(self, item_create: ItemCreate, owner_id: uuid.UUID) -> Item:
16+
db_obj = Item.model_validate(
17+
item_create,
18+
update={"owner_id": owner_id},
19+
)
20+
self.session.add(db_obj)
21+
self.session.commit()
22+
self.session.refresh(db_obj)
23+
return db_obj
24+
25+
def update(self, db_item: Item, item_in: ItemUpdate) -> Item:
26+
item_data = item_in.model_dump(exclude_unset=True)
27+
db_item.sqlmodel_update(item_data)
28+
self.session.add(db_item)
29+
self.session.commit()
30+
self.session.refresh(db_item)
31+
return db_item
32+
33+
def get_by_id(self, item_id: str) -> "Item | None":
34+
statement = select(Item).where(Item.id == uuid.UUID(item_id))
35+
return self.session.exec(statement).first()
36+
37+
def get_items(self, skip: int = 0, limit: int = 100, owner_id: uuid.UUID | None = None) -> dict:
38+
query = select(Item)
39+
if owner_id:
40+
query = query.where(Item.owner_id == owner_id)
41+
42+
count_statement = select(func.count()).select_from(query.subquery())
43+
count = self.session.exec(count_statement).one()
44+
45+
query = query.offset(skip).limit(limit)
46+
items = self.session.exec(query).all()
47+
return {"data": items, "count": count}
48+
49+
def delete_item(self, item_id: str) -> None:
50+
item = self.get_by_id(item_id)
51+
if item:
52+
self.session.delete(item)
53+
self.session.commit()

backend/app/model/items_model.py

Lines changed: 0 additions & 57 deletions
This file was deleted.

backend/app/model/user_model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def __init__(self, session: Session):
1313
self.session = session
1414

1515
def create(cls, user_create: UserCreate) -> "User":
16-
db_obj = cls.model_validate(
16+
db_obj = User.model_validate(
1717
user_create,
1818
update={"hashed_password": get_password_hash(user_create.password)},
1919
)

backend/app/service/item_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from fastapi import HTTPException
55
from sqlmodel import Session
66

7-
from backend.app.model.items_model import Item, ItemCreate, ItemUpdate
7+
from app.models import Item, ItemCreate, ItemUpdate
88
from app.models import Message
99

1010
class ItemService:

0 commit comments

Comments
 (0)