Files
bckWinRsync/server/app/models.py
2026-01-23 11:12:31 +01:00

53 lines
1.4 KiB
Python

from __future__ import annotations
from datetime import datetime
from enum import Enum
from typing import Optional
from sqlmodel import SQLModel, Field
class JobStatus(str, Enum):
QUEUED = "QUEUED"
RUNNING = "RUNNING"
COMPLETED = "COMPLETED"
FAILED = "FAILED"
class Job(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
profile_name: str
client_host: str
folders: str
ssh_username: str
run_id: str
status: JobStatus = Field(sa_column_kwargs={"default": JobStatus.QUEUED})
progress: int = 0
summary: Optional[str] = None
log_path: Optional[str] = None
created_at: datetime = Field(default_factory=datetime.utcnow)
updated_at: datetime = Field(default_factory=datetime.utcnow)
class Profile(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
name: str
folders: str
schedule_enabled: bool = Field(default=False)
description: Optional[str] = None
created_at: datetime = Field(default_factory=datetime.utcnow)
updated_at: datetime = Field(default_factory=datetime.utcnow)
class Token(SQLModel, table=True):
token: str = Field(primary_key=True)
user: str
expires_at: datetime
class RunHistory(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
profile_name: str
run_id: str
created_at: datetime = Field(default_factory=datetime.utcnow)