delete uncommented sections

This commit is contained in:
Osman Faruk Bayram 2025-05-05 16:14:44 +03:00
parent 948eb75416
commit f6356059ba

117
main.py
View file

@ -4,120 +4,3 @@ from .items.router import router as items_router
app.include_router(auth_router) app.include_router(auth_router)
app.include_router(items_router) app.include_router(items_router)
'''
from fastapi import FastAPI
from pydantic import BaseModel, Field, EmailStr
from enum import Enum as PyEnum
import datetime
from sqlalchemy import Column, Integer, String, DateTime, Float, Text, Boolean, ForeignKey, Enum
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
from .config import Base #databaese connection
from .config import app #base app
# Enums database
class Role(str, PyEnum):
admin = "admin"
user = "user"
mod = "mod"
class Status(str, PyEnum):
active = "active"
banned = "banned"
suspended = "suspended"
class ItemType(str, PyEnum):
text = "text"
image = "image"
class VoteType(str, PyEnum):
up = "up"
down = "down"
# SQLAlchemy Models
class User(Base):
__tablename__ = "users"
user_id = Column(Integer, primary_key=True, index=True)
username = Column(String, unique=True, nullable=False)
name = Column(String)
surname = Column(String)
email = Column(String, unique=True, nullable=False)
role = Column(Enum(Role), default=Role.user)
status = Column(Enum(Status), default=Status.active)
bio = Column(String(144))
created_date = Column(DateTime, default=datetime.datetime.utcnow)
collections = relationship("Collection", back_populates="user")
items = relationship("Item", back_populates="user")
class Collection(Base):
__tablename__ = "collections"
collection_id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.user_id"))
visibility = Column(Boolean, default=True) # True = public, False = private
collection_name = Column(String, nullable=False)
collection_bio = Column(String)
user = relationship("User", back_populates="collections")
items = relationship("Item", back_populates="collection")
class Item(Base):
__tablename__ = "items"
item_id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.user_id"))
date = Column(DateTime, default=datetime.datetime.utcnow)
location_x = Column(Float)
location_y = Column(Float)
item_type = Column(Enum(ItemType))
content_text = Column(Text, nullable=True)
content_image_path = Column(String, nullable=True)
collection_id = Column(Integer, ForeignKey("collections.collection_id"))
score = Column(Integer, default=0)
user = relationship("User", back_populates="items")
collection = relationship("Collection", back_populates="items")
votes = relationship("Vote", back_populates="item")
class Vote(Base):
__tablename__ = "votes"
vote_id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.user_id"))
item_id = Column(Integer, ForeignKey("items.item_id"))
vote_type = Column(Enum(VoteType))
date = Column(DateTime, default=datetime.datetime.utcnow)
item = relationship("Item", back_populates="votes")
# Pydantic Schemas
class UserCreate(BaseModel):
username: str
name: str
surname: str
email: EmailStr
bio: str = Field(max_length=144)
class ItemCreate(BaseModel):
location_x: float
location_y: float
item_type: ItemType
content_text: str | None = None
content_image_path: str | None = None
collection_id: int
class CollectionCreate(BaseModel):
collection_name: str
collection_bio: str
visibility: bool = True
class VoteCreate(BaseModel):
item_id: int
vote_type: VoteType
'''