from fastapi import APIRouter, Request, Depends, HTTPException
from fastapi.responses import HTMLResponse, RedirectResponse
from sqlalchemy.orm import Session
from app.auth.deps import current_user
from app.database import templates
from app.models.base import get_db
from . import crud
import sqlite3

router = APIRouter()

@router.get("/notes", response_class=HTMLResponse)
async def notes(request: Request, db: Session = Depends(get_db)):
    me = current_user(request)
    if not me:
        return RedirectResponse(url="/login", status_code=303)
    
    # Handle both dictionary and sqlite3.Row objects
    if isinstance(me, sqlite3.Row):
        user_id = int(me["id"])
        role = str(me["role"]) if "role" in me.keys() and me["role"] is not None else ""
    else:
        user_id = int(me.get("id"))
        role = str(me.get("role", ""))

    items = crud.get_notes_for_display(db, user_id, role)
    
    return templates.TemplateResponse(
        "notes.html",
        {
            "request": request,
            "user": me,
            "items": items,
        }
    )
