This commit is contained in:
2024-06-14 23:32:45 +09:00
parent 08c090d7f2
commit c6c8385253
8 changed files with 98 additions and 8 deletions

View File

@ -1,4 +1,4 @@
from fastapi import APIRouter
from fastapi import APIRouter, BackgroundTasks
import backend_fastapi.schemas as schemas
from backend_fastapi.repositories import get_stored_roles, add_role, add_user, get_role_all, update_role, delete_role, update_user,delete_user,get_users
from typing import List

View File

@ -0,0 +1,26 @@
from fastapi import APIRouter
import backend_fastapi.schemas as schemas
import backend_fastapi.repositories as repo
import asyncio
router = APIRouter()
@router.get("/values")
async def get_values() -> list[schemas.Value]:
return await repo.get_values()
@router.get("/objects")
async def get_objects() -> list[schemas.Object]:
return await repo.get_objects()
@router.get("/report")
async def get_report() -> None:
import pandas as pd
values, objects = await asyncio.gather(repo.get_values(), repo.get_objects())
values = [schemas.Value.model_validate(value).model_dump() for value in values]
objects = [schemas.Object.model_validate(object).model_dump() for object in objects]
df_values= pd.DataFrame(data=values)
df_objects= pd.DataFrame(data=objects)
df_type = df_values['id_param'].where(df_values['id_param'] == 3).notnull()
print(df_values[["id_object","value"]][df_type])

View File

@ -1,7 +1,9 @@
from .database import Model
from sqlalchemy.orm import mapped_column, Mapped, relationship
from sqlalchemy import String, Boolean, ForeignKey
from sqlalchemy import String, Boolean, ForeignKey, Date
from sqlalchemy.dialects.mssql import SQL_VARIANT, UNIQUEIDENTIFIER
from uuid import UUID
from datetime import date
class Role(Model):
__tablename__ = "roles"
@ -18,4 +20,28 @@ class User(Model):
hashed_password: Mapped[str] = mapped_column(String(255),nullable=False)
is_active: Mapped[bool] = mapped_column(Boolean,default=True)
role_id: Mapped[int] = mapped_column(ForeignKey("roles.id"))
role: Mapped["Role"] = relationship()
role: Mapped["Role"] = relationship()
class Object(Model):
__tablename__ = "vObjects"
id: Mapped[UUID] = mapped_column(UNIQUEIDENTIFIER, primary_key=True)
id_parent: Mapped[UUID|None] = mapped_column(UNIQUEIDENTIFIER,nullable=True)
year: Mapped[int | None] = mapped_column(nullable=False)
id_city: Mapped[int] = mapped_column(nullable=False)
class Value(Model):
__tablename__ = "vValues"
id: Mapped[int] = mapped_column( primary_key=True)
id_object: Mapped[UUID] = mapped_column(ForeignKey("vObjects.id"))
id_param:Mapped[int] = mapped_column(nullable=False)
value:Mapped[str|None] = mapped_column(String(250))
date_s: Mapped[date] = mapped_column(Date,nullable=False)
date_po: Mapped[date|None] = mapped_column(Date,nullable=True)
id_user:Mapped[int] = mapped_column(nullable=False)
# class Parameter(Model):
# __tablename__ = "vParameters"

View File

@ -0,0 +1,3 @@
import pandas as pd
import asyncio

View File

@ -90,5 +90,17 @@ async def update_user(user: schemas.User, id: int):
return {f"{id=} был обновлен"}
async def get_objects():
async with async_session() as session:
result = await session.scalars(select(models.Object))
return result.all()
async def get_values():
async with async_session() as session:
result = await session.scalars(select(models.Value))
return result.all()
async def get_stored_roles():
return await exec_procedure('get_roles')

View File

@ -1,5 +1,6 @@
from pydantic import BaseModel, ConfigDict, EmailStr
from uuid import UUID
from datetime import date
class RoleBase(BaseModel):
name: str
@ -23,4 +24,23 @@ class User(UserBase):
class Role(RoleBase):
model_config = ConfigDict(from_attributes=True)
id: int
id: int
class Object(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: UUID
id_city: int
id_parent: UUID | None
year: int | None
class Value(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: int
id_object: UUID
id_param: int
value: str|None
date_s: date
date_po: date|None
id_user: int