add /me/equipment/history route

This commit is contained in:
kittentm 2026-03-15 04:02:53 +01:00
commit 164584224b
No known key found for this signature in database
GPG key ID: 520EDAA0C8CDE295
3 changed files with 66 additions and 1 deletions

View file

@ -1,4 +1,4 @@
from sqlalchemy import create_engine, Column, String, Integer, Boolean, DateTime, ForeignKey, Text
from sqlalchemy import create_engine, Column, String, Integer, Boolean, DateTime, ForeignKey, Text, BigInteger
from sqlalchemy.orm import declarative_base, sessionmaker
from sqlalchemy.exc import OperationalError
from config import settings
@ -20,6 +20,31 @@ class Session(Base):
expires_at = Column(DateTime, nullable=True)
remember_me = Column(Boolean, default=False)
class Equipment(Base):
__tablename__ = 'equipment'
PId = Column(BigInteger, primary_key=True)
weapon = Column(Integer, primary_key=True)
sumpaint = Column(Integer)
class EquipmentLast(Base):
__tablename__ = 'equipment_last'
PId = Column(BigInteger, primary_key=True)
weapon = Column(Integer)
Gear_Shoes = Column(Integer)
Gear_Shoes_Skill0 = Column(Integer)
Gear_Shoes_Skill1 = Column(Integer)
Gear_Shoes_Skill2 = Column(Integer)
Gear_Clothes = Column(Integer)
Gear_Clothes_Skill0 = Column(Integer)
Gear_Clothes_Skill1 = Column(Integer)
Gear_Clothes_Skill2 = Column(Integer)
Gear_Head = Column(Integer)
Gear_Head_Skill0 = Column(Integer)
Gear_Head_Skill1 = Column(Integer)
Gear_Head_Skill2 = Column(Integer)
Rank = Column(Integer)
Udemae = Column(Integer)
engine = create_engine(settings.db_url, pool_pre_ping=True)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

View file

@ -8,6 +8,7 @@ from routes import logout
from routes import boss
#yes meow meow import me please... i want to be embedded into my code... :pleading_face:
from routes import me
from routes import equipment
from services.boss_retrieval import process_boss_file
from contextlib import asynccontextmanager
import asyncio
@ -115,6 +116,7 @@ app.include_router(sessionid_check.router, prefix="/api/v1")
app.include_router(logout.router, prefix="/api/v1")
app.include_router(boss.router, prefix="/api/v1")
app.include_router(me.router, prefix="/api/v1")
app.include_router(equipment.router, prefix="/api/v1")
if __name__ == '__main__':
uvicorn.run("main:app", host="0.0.0.0", port=settings.port, reload=True)

38
routes/equipment.py Normal file
View file

@ -0,0 +1,38 @@
from fastapi import APIRouter, Request, Depends, HTTPException
from sqlalchemy.orm import Session as DBSession
from database import SessionLocal, User, Session as UserSession, Equipment
from services import auth
from config import cipher
import json
router = APIRouter()
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@router.get("/me/equipment/history")
async def get_history(request: Request, db: DBSession = Depends(get_db)):
session_id = request.cookies.get("session_id")
db_session = db.query(UserSession).filter(UserSession.id == session_id).first()
if not db_session:
raise HTTPException(status_code=401)
user = db.query(User).filter(User.username == db_session.username).first()
try:
decrypted_pass = cipher.decrypt(user.spfn_pass_enc.encode()).decode()
token_data = auth.get_token(user.username, decrypted_pass)
profile = json.loads(auth.get_profile(token_data["token"]))
pid_val = int(profile.get("pid"))
print(f"Fetching History for PID: {pid_val}")
results = db.query(Equipment).filter(Equipment.PId == pid_val).all()
return results
except Exception as e:
print(f"Error in history route: {e}")
return []