You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

53 lines
1.4 KiB

from ..models import Database
from ..schemas import DatabaseBase, DatabaseSchema
from sqlalchemy import select, delete
from sqlalchemy.ext.asyncio import AsyncSession
from typing import Sequence, Optional, List
async def get_all(
session: AsyncSession
) -> Sequence[DatabaseSchema]:
stmt = select(Database).order_by(Database.id)
result = await session.scalars(stmt)
return result.all()
async def get(
session: AsyncSession,
id: int
) -> DatabaseSchema:
db_login = await session.get(Database,id)
if db_login is None:
return None
return db_login
async def create(
session:AsyncSession,
model: DatabaseBase
) -> DatabaseSchema:
login = Database(**model.model_dump())
session.add(login)
await session.commit()
return login
async def delete(
session: AsyncSession,
id: int
):
db_login = await session.get(Database,id)
if db_login is None:
return None
stmt = delete(Database).filter(Database.id == id)
await session.execute(stmt)
await session.commit()
async def update(
session:AsyncSession,
id: int,
model: DatabaseBase
) -> DatabaseSchema:
db_login = await session.get(Database,id)
if db_login is None:
return None
for var, value in vars(model).items():
setattr(db_login, var, value) if value else None
await session.commit()
return db_login