mirror of
https://github.com/OHV-IT/collabrix.git
synced 2025-12-15 16:48:36 +01:00
- 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
32 lines
1.1 KiB
Python
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()
|