Ir al contenido
Ir a Lynx

Arquitectura Lógica

La arquitectura de este paquete está diseñada para asegurar la consistencia y eliminar problemas de tipado entre la aplicación y el motor PostgreSQL. Todo esquema creado aquí dicta las reglas en todo el ecosistema.

La creación y propagación de un modelo en Lynx sigue este patrón determinista:

graph TD
    A[Esquema de Drizzle] --> B(SQL Migrations)
    A --> C(Tipos de TypeScript)
    A --> D(Esquemas de Zod / DTOs)

    C --> E[Backend & Frontend]
    D --> E

    B --> F[(PostgreSQL)]

    style A fill:#000000,stroke:#333,stroke-width:2px,color:#fff

A la hora de estructurar nuevos modelos, aplicamos políticas estrictas:

  • Nomenclatura: Nombres de tablas en minúsculas y formato snake_case.
  • Integración con Better Auth: El paquete incluye esquemas nativos y ampliables requeridos por el framework de autenticación (ej. users, sessions, accounts).
  1. Definir el Esquema: Crear la declaración del modelo usando la sintaxis de Drizzle ORM (tipos de columnas, relaciones lógicas, índices).
  2. Generar DTOs: Utilizar herramientas complementarias (como drizzle-zod) para crear de manera automatizada los esquemas de Zod (inserción y selección).
  3. Exportar la Interfaz: Hacer que el modelo, los tipos deducidos y los validadores de Zod estén disponibles a través del index.ts del paquete.
  4. Migración Automática: Ejecutar las rutinas de drizzle-kit para generar el SQL equivalente y volcarlo en la carpeta de migraciones.

Dado que este paquete carece de estado dinámico y lógica de red, sus pruebas son directas e instrumentales.

| Componente | Qué verificamos | | :------------------ | :-------------------------------------------------------------------------------------------------------------- | | Esquemas Zod | Aseguramos que la sintaxis de validación atrape casos extremos no lógicos. | | Funciones Puras | Lógica de normalización o constructores de sentencias parciales de SQL. | | DTOs Generados | Confirmamos que la inferencia de tipos entre Drizzle y TypeScript se mantienen intactos ante refactorizaciones. |

Se exige mantener los estándares utilizando los comandos locales de validación: vitest run para evaluación y vitest run --coverage para métricas analíticas.