Initial commit: CloudRestoreAS v1.0.0 - Aplicación completa de restauración automática SQL Server
This commit is contained in:
77
app/db/event_repository.py
Normal file
77
app/db/event_repository.py
Normal file
@@ -0,0 +1,77 @@
|
||||
"""Repositorio para gestionar eventos."""
|
||||
|
||||
from typing import Optional, List
|
||||
from datetime import datetime
|
||||
from dataclasses import dataclass
|
||||
from .database import db
|
||||
|
||||
|
||||
@dataclass
|
||||
class Event:
|
||||
"""Modelo de Event."""
|
||||
id: int
|
||||
created_at: str
|
||||
level: str
|
||||
job_id: Optional[str]
|
||||
message: str
|
||||
|
||||
|
||||
class EventRepository:
|
||||
"""Repositorio para operaciones con eventos."""
|
||||
|
||||
@staticmethod
|
||||
def create(
|
||||
level: str,
|
||||
message: str,
|
||||
job_id: Optional[str] = None
|
||||
) -> int:
|
||||
"""
|
||||
Crea un nuevo evento.
|
||||
|
||||
Args:
|
||||
level: Nivel del evento (DEBUG, INFO, WARNING, ERROR, CRITICAL)
|
||||
message: Mensaje del evento
|
||||
job_id: ID del job asociado (opcional)
|
||||
|
||||
Returns:
|
||||
ID del evento creado
|
||||
"""
|
||||
now = datetime.utcnow().isoformat()
|
||||
cursor = db.execute("""
|
||||
INSERT INTO events (created_at, level, job_id, message)
|
||||
VALUES (?, ?, ?, ?)
|
||||
""", (now, level, job_id, message))
|
||||
|
||||
return cursor.lastrowid
|
||||
|
||||
@staticmethod
|
||||
def get_all(
|
||||
level: Optional[str] = None,
|
||||
job_id: Optional[str] = None,
|
||||
limit: int = 100
|
||||
) -> List[Event]:
|
||||
"""
|
||||
Obtiene eventos con filtros opcionales.
|
||||
|
||||
Args:
|
||||
level: Filtrar por nivel
|
||||
job_id: Filtrar por job
|
||||
limit: Límite de resultados
|
||||
|
||||
Returns:
|
||||
Lista de eventos
|
||||
"""
|
||||
query = "SELECT * FROM events WHERE 1=1"
|
||||
params = []
|
||||
|
||||
if level:
|
||||
query += " AND level = ?"
|
||||
params.append(level)
|
||||
if job_id:
|
||||
query += " AND job_id = ?"
|
||||
params.append(job_id)
|
||||
|
||||
query += f" ORDER BY created_at DESC LIMIT {limit}"
|
||||
|
||||
rows = db.fetchall(query, tuple(params))
|
||||
return [Event(**dict(row)) for row in rows]
|
||||
Reference in New Issue
Block a user