collabrix/backend/app/models_snippet.py
DGSoft 93b98cfb5c Initial commit: Team Chat System with Code Snippet Library
- Complete chat application similar to Microsoft Teams
- Code snippet library with syntax highlighting
- Real-time messaging with WebSockets
- File upload with Office integration
- Department-based permissions
- Dark/Light theme support
- Production deployment with SSL/Reverse Proxy
- Docker containerization
- PostgreSQL database with SQLModel ORM
2025-12-09 22:25:03 +01:00

32 lines
1.1 KiB
Python

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()