AIdea-Server / src /db /models.py
Ahmed Mostafa
feat: define User, Category, and Note database models using Pydantic
914b21c
"""
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)