from typing import Optional, List from sqlmodel import SQLModel, Field, Relationship from datetime import datetime from enum import Enum class SnippetVisibility(str, Enum): PRIVATE = "private" DEPARTMENT = "department" ORGANIZATION = "organization" class Snippet(SQLModel, table=True): __tablename__ = "snippet" id: Optional[int] = Field(default=None, primary_key=True) title: str = Field(index=True) language: str = Field(index=True) # python, sql, bash, javascript, etc. content: str # The actual code tags: Optional[str] = None # Comma-separated tags visibility: SnippetVisibility = Field(default=SnippetVisibility.PRIVATE) owner_id: int = Field(foreign_key="user.id") department_id: Optional[int] = Field(default=None, foreign_key="department.id") created_at: datetime = Field(default_factory=datetime.utcnow) updated_at: datetime = Field(default_factory=datetime.utcnow) # Relationships owner: "User" = Relationship(back_populates="snippets") department: Optional["Department"] = Relationship()