30 lines
887 B
Python
30 lines
887 B
Python
from pydantic import BaseModel, Field
|
|
from typing import Dict, List, Optional
|
|
from datetime import datetime
|
|
import structlog
|
|
|
|
logger = structlog.get_logger(__name__)
|
|
|
|
class FileEntry(BaseModel):
|
|
path: str # относительный путь (mods/jei.jar)
|
|
hash: str # sha256
|
|
size: int
|
|
added_at: datetime
|
|
modified_at: datetime
|
|
|
|
class PackMeta(BaseModel):
|
|
pack_name: str
|
|
version: int = 1
|
|
updated_at: datetime = Field(default_factory=datetime.utcnow)
|
|
|
|
files: Dict[str, FileEntry] = Field(default_factory=dict)
|
|
ignored_dirs: List[str] = Field(
|
|
default_factory=lambda: [
|
|
"resourcepacks", "shaderpacks", "saves", "logs",
|
|
"crash-reports", "screenshots", "journeymap", "config"
|
|
]
|
|
)
|
|
|
|
minecraft_version: str
|
|
loader_type: str
|
|
loader_version: Optional[str] = None |