dev #16

Merged
MH.Dmitrii merged 21 commits from dev into main 2026-09-15 14:09:05 +00:00
2 changed files with 43 additions and 4 deletions
Showing only changes of commit 6a36b468e5 - Show all commits
+9 -3
View File
@@ -4,6 +4,7 @@ from pathlib import Path
# import uvicorn
from fastapi import FastAPI
from src.database.users.crud import Seed
from src.logging.logger import LoggingMiddleware, ProcessingTimeMiddleware
from src.web.protected_routes.auth_routes import router as protected_router
from src.web.protected_routes.protected_user_action_routes import (
@@ -14,8 +15,8 @@ from src.web.protected_routes.protected_user_action_routes import (
@asynccontextmanager
async def lifespan(app: FastAPI):
create_dirs()
await create_first_user()
yield
print("shutting down")
app=FastAPI(root_path="/", lifespan=lifespan)
@@ -30,7 +31,7 @@ async def root()->dict:
return {"root":"hello, this is root"}
def create_dirs():
def create_dirs()->None:
dirs_to_create=("./DB",
"./uploads/upload",
@@ -39,4 +40,9 @@ def create_dirs():
"./logs")
for x in dirs_to_create:
Path(x).mkdir(parents=True, exist_ok=True)
Path(x).mkdir(parents=True, exist_ok=True)
async def create_first_user()->None:
seed=Seed()
await seed.seed()
+34 -1
View File
@@ -10,6 +10,7 @@ from src.models.database_models.model import (
engine,
)
from src.models.pydantic_models.model import UserOutDB
from src.service.auth.jwt import HashService
class UsersCrudActions:
@@ -121,4 +122,36 @@ class UsersCrudActions:
user_edit.direct_permissions=list(groups)
await session.flush()
return UserOutDB.model_validate(user_edit)
return UserOutDB.model_validate(user_edit)
class Seed:
def __init__(self) -> None:
self.Session=async_sessionmaker(bind=engine)
self.hash_service=HashService()
async def seed(self) -> None:
async with self.Session() as session, session.begin():
existing = (await session.execute(select(User).limit(1))).scalar_one_or_none()
if existing is not None:
print("Seed skipped: one user is already exist")
return
admin_permission = Permissions(permission="admin")
session.add(admin_permission)
admin_group = PermissionsGroups(group="admin_group", permissions=[admin_permission])
session.add(admin_group)
admin_user = User(
first_name="Admin",
last_name="Admin",
middle_name="Admin",
email="admin@admin.com",
hashed_password=self.hash_service.plain_to_hash("1234"),
direct_permissions=[admin_permission],
group=[admin_group],
)
session.add(admin_user)
print("Seed completed: admin user and permissions are created, credentials: email - admin@admin.com, password - 1234")