forked from polka_billy/porridger
refactoring - 1
This commit is contained in:
89
back/orm_models.py
Normal file
89
back/orm_models.py
Normal file
@ -0,0 +1,89 @@
|
||||
from sqlalchemy import Column, Integer, String, Boolean, Float, Date, ForeignKey
|
||||
from .db import Base, engine
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
|
||||
class User(Base):#класс пользователя
|
||||
__tablename__ = "users"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True, unique=True)#айди пользователя
|
||||
nickname = Column(String) # никнейм пользователя
|
||||
hashed_password = Column(String)
|
||||
name = Column(String, nullable=True)#имя пользователя
|
||||
surname = Column(String)#фамилия пользователя
|
||||
disabled = Column(Boolean, default=False)
|
||||
rating = Column(Integer, default=0) # рейтинг пользователя (показатель надежности)
|
||||
points = Column(Integer, default=0) # баллы пользователя (заслуги перед платформой)
|
||||
num_of_ratings = Column(Integer, default=0) # количество оценок (т.е. то, сколько раз другие пользователи оценили текущего)
|
||||
reg_date = Column(Date) # дата регистрации
|
||||
|
||||
announcements = relationship("Announcement", back_populates="user")
|
||||
trashboxes_chosen = relationship("Trashbox", back_populates="user")
|
||||
|
||||
class Announcement(Base): #класс объявления
|
||||
__tablename__ = "announcements"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True) # айди объявления
|
||||
user_id = Column(Integer, ForeignKey("users.id")) # айди создателя объявления
|
||||
name = Column(String) # название объявления
|
||||
category = Column(String) #категория продукта из объявления
|
||||
best_by = Column(Date) #срок годности продукта из объявления
|
||||
address = Column(String)
|
||||
longtitude = Column(Float)
|
||||
latitude = Column(Float)
|
||||
description = Column(String) #описание продукта в объявлении
|
||||
src = Column(String, nullable=True) #изображение продукта в объявлении
|
||||
metro = Column(String) #ближайщее метро от адреса нахождения продукта
|
||||
trashId = Column(Integer, nullable=True)
|
||||
booked_by = Column(Integer) #количество забронировавших (0 - никто не забронировал)
|
||||
# state = Column(Enum(State), default=State.published) # состояние объявления (опубликовано, забронировано, устарело)
|
||||
obsolete = Column(Boolean, default=False) # состояние объявления (по-умолчанию считаем его актуальным)
|
||||
|
||||
user = relationship("User", back_populates="announcements")
|
||||
|
||||
|
||||
class Trashbox(Base): #класс мусорных баков
|
||||
__tablename__ = "trashboxes"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)#айди
|
||||
user_id = Column(Integer, ForeignKey("users.id")) # айди выбравшего мусорку
|
||||
name = Column(String, nullable=True)#название мусорки
|
||||
address = Column(String)
|
||||
latitude = Column(Float)
|
||||
longtitude = Column(Float)
|
||||
category = Column(String) #типы мусора (из тех, что возвращает API мусорки)
|
||||
date_of_choice = Column(Date) # Дата выбора мусорки пользователем
|
||||
|
||||
user = relationship("User", back_populates="trashboxes_chosen")
|
||||
|
||||
|
||||
class Poems(Base):#класс поэзии
|
||||
__tablename__ = "poems"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True) #айди
|
||||
title = Column(String) # название стихотворения
|
||||
text = Column(String) # текст стихотворения
|
||||
author = Column(String) # автор стихотворения
|
||||
|
||||
|
||||
# Создаем описанные выше таблицы
|
||||
Base.metadata.create_all(bind=engine)
|
||||
|
||||
|
||||
|
||||
# from typing import AsyncGenerator
|
||||
# from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
|
||||
# from fastapi_users.db import SQLAlchemyBaseUserTableUUID, SQLAlchemyUserDatabase
|
||||
# # This function can be called during the initialization of the FastAPI app.
|
||||
# async def create_db_and_tables():
|
||||
# async with engine.begin() as conn:
|
||||
# await conn.run_sync(Base.metadata.create_all)
|
||||
|
||||
|
||||
# async def get_async_session() -> AsyncGenerator[AsyncSession, None]:
|
||||
# async with async_session_maker() as session:
|
||||
# yield session
|
||||
|
||||
|
||||
# async def get_user_db(session: AsyncSession = Depends(get_async_session)):
|
||||
# yield SQLAlchemyUserDatabase(session, User)
|
Reference in New Issue
Block a user