File size: 1,226 Bytes
82445ae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import datetime
from typing import Optional
from firebase_auth import get_db


def save_analysis(analysis_id: str, uid: str, data: dict) -> None:
    db = get_db()
    doc = {
        **data,
        "analysis_id": analysis_id,
        "uid": uid,
        "created_at": datetime.datetime.utcnow().isoformat(),
    }
    db.collection("analyses").document(analysis_id).set(doc)
    db.collection("users").document(uid).collection("history").document(analysis_id).set(
        {"analysis_id": analysis_id, "created_at": doc["created_at"]}
    )


def get_analysis(analysis_id: str) -> Optional[dict]:
    db = get_db()
    doc = db.collection("analyses").document(analysis_id).get()
    return doc.to_dict() if doc.exists else None


def get_user_analyses(uid: str, limit: int = 20) -> list:
    db = get_db()
    refs = (
        db.collection("users")
        .document(uid)
        .collection("history")
        .order_by("created_at", direction="DESCENDING")
        .limit(limit)
        .stream()
    )
    analysis_ids = [ref.to_dict().get("analysis_id") for ref in refs]
    results = []
    for aid in analysis_ids:
        data = get_analysis(aid)
        if data:
            results.append(data)
    return results