src/db centraliza la configuración y los procesos operativos de PostgreSQL + Drizzle ORM. Separa las definiciones de tablas de los scripts administrativos. Las consultas de negocio se implementan en src/queries y los datos iniciales por entidad en src/seeds.
Organización recomendada
Reglas para las tablas
-
Un archivo por tabla: usa
[nombre].table.tsdentro desrc/db/tables. Define el esquema con Drizzle ORM y exporta la tabla y los tipos necesarios. -
Tres campos indispensables en absolutamente todas las tablas, incluso las tablas intermedias y de relaciones. Los nombres deben estar en inglés, tanto en TypeScript como en PostgreSQL:
-
Borrado lógico:
deletedAtindica cuándo se eliminó un registro. Excluye registros eliminados de las consultas normales conisNull(tabla.deletedAt)cuando corresponda. -
Actualización:
defaultNow()solo inicializaupdatedAt; al actualizar un registro, asigna explícitamente la nueva fecha o configura el mecanismo que lo haga. - Integridad y rendimiento: declara relaciones, índices y restricciones según las necesidades reales; cuando la unicidad dependa del borrado lógico, evalúa índices únicos parciales.
- Una sola fuente para enums: deriva los valores utilizados por los DTO de los enums definidos en las tablas Drizzle; evita duplicar manualmente las listas de valores.
tables para ejemplos completos.
Acceso a datos: capa queries
[tabla].query.tscontiene operaciones atómicas de una tabla (CRUD, filtros, paginación, conteos).[tabla]-join.query.tscontiene consultas relacionales, utilizando la tabla principal como base.- Los services inyectan estas clases para acceder a la BD; no escriben consultas SQL ni instancian directamente la conexión.
- Registra en
connection.db.tslas tablas que realmente existen en tu proyecto. No importes tablas de ejemplo que no estén implementadas.
Configuración y scripts
Versionado y seguridad
DB_VERSIONidentifica versiones de respaldos, migraciones y comandos en los scripts que lo utilizan. Consultabackups,migrationsycommands.- Mantén separados los cambios de esquema (
migrations) de las actualizaciones masivas de datos (commands). - Realiza y verifica un respaldo antes de migrar, restaurar, reiniciar o ejecutar comandos destructivos; las operaciones sobre esquemas pueden destruir datos.
- Nunca incluyas credenciales reales ni archivos de respaldo sensibles en la documentación pública o commits de Git.

