Реализация crud и его добавление в RESTfull

This commit is contained in:
2024-08-01 01:21:32 +09:00
parent bdd764c411
commit d02ca36777
15 changed files with 361 additions and 28 deletions

View File

View File

@ -0,0 +1,58 @@
from typing import Sequence
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select, delete, update
from ..schemas import LoginRead, LoginCreate, LoginUpdate
from ..models import LoginModel
from utils.hashing import get_password_hash
async def get_all_logins(
session: AsyncSession
) -> Sequence[LoginModel]:
stmt = select(LoginModel).order_by(LoginModel.id)
result = await session.scalars(stmt)
return result.all()
async def get_login(
session: AsyncSession,
login_id: int
) -> LoginModel:
db_login = await session.get(LoginModel,login_id)
if db_login is None:
return None
return db_login
async def create_login(
session:AsyncSession,
login_create: LoginCreate
) -> LoginModel:
login = LoginModel(**login_create.model_dump())
login.password = get_password_hash(login.password)
session.add(login)
await session.commit()
return login
async def delete_login(
session: AsyncSession,
login_id: int
) -> LoginModel:
db_login = await session.get(LoginModel,login_id)
if db_login is None:
return None
stmt = delete(LoginModel).filter(LoginModel.id == login_id)
await session.execute(stmt)
await session.commit()
return db_login.one_or_none()
async def update_login(
session:AsyncSession,
login_id: int,
login_update: LoginUpdate
) -> LoginModel:
db_login = await session.get(LoginModel,login_id)
if db_login is None:
return None
for var, value in vars(login_update).items():
setattr(db_login, var, value if var != "password" else get_password_hash(value)) if value else None
await session.commit()
return db_login

View File

@ -0,0 +1,58 @@
from typing import Sequence
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select, delete, update
from ..schemas import UserRead, UserCreate,UserUpdate
from ..models import UserModel
async def get_all_users(
session: AsyncSession
) -> Sequence[UserModel]:
stmt = select(UserModel).order_by(UserModel.id)
result = await session.scalars(stmt)
return result.all()
async def get_user(
session: AsyncSession,
user_id: int
) -> UserModel:
db_user = await session.get(UserModel, user_id)
if db_user is None:
return None
return db_user
async def create_user(
session:AsyncSession,
user_create: UserCreate
) -> UserModel:
user = UserModel(**user_create.model_dump())
session.add(user)
await session.commit()
return user
async def delete_user(
session: AsyncSession,
user_id: int
) -> UserModel:
db_user = await session.get(UserModel, user_id)
if db_user is None:
return None
stmt = delete(UserModel).filter(UserModel.id == user_id)
await session.execute(stmt)
await session.commit()
return db_user.one_or_none()
async def update_user(
session:AsyncSession,
user_id: int,
user_update: UserUpdate
) -> UserModel:
db_user = await session.get(UserModel, user_id)
if db_user is None:
return None
for var, value in vars(user_update).items():
setattr(db_user, var, value) if value else None
await session.commit()
await session.refresh(db_user)
return db_user