DEV Community

William Rodriguez
William Rodriguez

Posted on

Nunca pierdas un registro: Soft deletes nativos y recuperación.

Nunca pierdas un registro: Soft deletes nativos y recuperación.

Los borrados permanentes son un peligro. Una consulta errónea puede destruir datos críticos de clientes. El soft delete nativo de wsqlite preserva el histórico mientras lo excluye de tus consultas normales.

Así se implementa Soft Delete & Audit Recovery en entornos reales con wsqlite:

from datetime import datetime
from typing import Optional
from pydantic import BaseModel
from wsqlite import WSQLite

class Product(BaseModel):
    id: int
    name: str
    price: float
    deleted_at: Optional[datetime] = None

# Enable soft delete mode
db = WSQLite(Product, "catalog.db", soft_delete=True)
db.insert(Product(id=1, name="Mechanical Keyboard", price=129.99))

# Soft delete: sets deleted_at timestamp
db.delete(1)
print(f"Active products count: {db.count()}")  # Returns 0!

# Instantly restore when needed
db.restore(1)
print(f"Restored products count: {db.count()}")  # Returns 1!
Enter fullscreen mode Exit fullscreen mode

Por qué wsqlite marca la diferencia:

  • Define tablas de base de datos usando modelos Pydantic v2 estándar.
  • Sincroniza columnas automáticamente al iniciar sin migraciones manuales.
  • Connection pool seguro multihilo con modo WAL por defecto (+5.000 inserts/seg).
  • Soporte completo síncrono y asíncrono con async/await.

¡Visita el repositorio en GitHub!

Top comments (1)

Collapse
 
william_rodriguez_65a5898 profile image
William Rodriguez •

Un aspecto arquitectónico fundamental en este enfoque es la modularidad y el bajo acoplamiento entre los componentes del ecosistema.

¿Cómo abordan en sus entornos de producción los trade-offs de mantenibilidad y observabilidad en arquitecturas similares?