40 lines
811 B
Python
40 lines
811 B
Python
from datetime import datetime, timezone
|
|
from typing import List, Optional, Dict
|
|
|
|
from beanie import Document
|
|
from enum import IntEnum
|
|
|
|
from pymongo import IndexModel
|
|
|
|
|
|
class DepotStatus(IntEnum):
|
|
TO_BE_CREATED = 0
|
|
CREATED = 1
|
|
DELETED = 2
|
|
|
|
|
|
class UserAccountStatus(IntEnum):
|
|
TO_BE_CREATED = 0
|
|
CREATED = 1
|
|
DELETED = 2
|
|
DEACTIVATED = 3
|
|
|
|
class CodeDepotDoc(Document):
|
|
depot_name: str
|
|
product_id: str
|
|
depot_status: DepotStatus
|
|
collaborators: List[str] = []
|
|
total_commits: Optional[int] = 0
|
|
last_commiter: Optional[str] = ""
|
|
last_update: Optional[datetime] = datetime.now(timezone.utc)
|
|
weekly_commits: Optional[Dict[str, int]] = {}
|
|
|
|
class Settings:
|
|
name = "code_depot"
|
|
indexes = [
|
|
IndexModel([("product_id", 1)])
|
|
]
|
|
|
|
|
|
|