49 lines
1 KiB
Python
49 lines
1 KiB
Python
from typing import Optional
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.role.model import Role
|
|
|
|
|
|
def create_role(db: Session, role: Role) -> Role:
|
|
role.name = role.name.lower()
|
|
|
|
if get_role_by_name(db, role.name) is not None:
|
|
raise Exception()
|
|
|
|
db.add(role)
|
|
db.commit()
|
|
db.refresh(role)
|
|
|
|
return role
|
|
|
|
|
|
def get_role_by_name(db: Session, name: str) -> Optional[Role]:
|
|
return db.query(Role).filter(Role.name == name).one_or_none()
|
|
|
|
|
|
def get_role_by_id(db: Session, id: int) -> Optional[Role]:
|
|
return db.query(Role).filter(Role.id == id).one_or_none()
|
|
|
|
|
|
def get_roles(db: Session) -> list[Role]:
|
|
return db.query(Role).all()
|
|
|
|
|
|
def create_admin_role(db: Session):
|
|
admin_role = get_role_by_name(db, "admin")
|
|
|
|
if admin_role is None:
|
|
db.add(Role(name="admin"))
|
|
db.commit()
|
|
|
|
|
|
def delete_role_by_id(db: Session, id: int):
|
|
role = get_role_by_id(db, id)
|
|
|
|
if role.name == "admin":
|
|
return
|
|
|
|
if role is not None:
|
|
db.delete(role)
|
|
db.commit()
|