File size: 1,401 Bytes
d74863e
 
 
 
 
 
 
6405808
d74863e
 
6405808
 
 
 
b17b103
 
 
6405808
b17b103
 
6405808
914b21c
d74863e
6405808
 
d74863e
 
6405808
 
 
 
 
 
 
d74863e
 
6405808
d74863e
6405808
d74863e
6405808
 
 
 
 
 
 
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
44
45
46
47
48
"""
SQLModel database models for PostgreSQL (Supabase).
Optimized for cloud deployment and mobile app integration.
"""

from datetime import datetime
from typing import Optional, List
from pydantic import BaseModel, Field


class User(BaseModel):
    """User model for Firestore 'users' collection."""
    id: Optional[str] = Field(default=None)
    email: str
    username: Optional[str] = Field(default=None)
    display_name: Optional[str] = Field(default=None)
    password_hash: Optional[str] = Field(default=None)
    role: str = "user"
    age: Optional[int] = Field(default=None)
    gender: Optional[str] = Field(default=None)
    created_at: datetime = Field(default_factory=datetime.utcnow)
    notesCount: Optional[int] = Field(default=0)

    class Config:
        from_attributes = True


class Category(BaseModel):
    """Category model for Firestore 'categories' collection."""
    id: Optional[str] = Field(default=None)
    name: str
    description: Optional[str] = None
    user_id: str
    created_at: datetime = Field(default_factory=datetime.utcnow)


class Note(BaseModel):
    """
    Note model for Firestore 'notes' collection.
    """
    id: Optional[str] = Field(default=None)
    user_id: str
    video_url: str
    video_title: str
    summary_content: str
    category: Optional[str] = "Uncategorized"
    created_at: datetime = Field(default_factory=datetime.utcnow)