Cortex
Cortex es un ORM diseñado para facilitar la interacción con bases de datos PostgreSQL en aplicaciones TypeScript
Ofrece funcionalidades CRUD (Crear, Leer, Actualizar, Eliminar) junto con manejo de transacciones y hooks predefinidos para operaciones personalizada
// Install
npm i onbbu-cortex
pnpm i onbbu-cortex
yarn add onbbu-cortex
Modelo de Datos
ModelSchema define los campos y sus restricciones (tipo de dato, unicidad, nulabilidad, etc.). Es importante documentar cómo se crea y estructura un esquema
const schema: ModelSchema = {
id: { type: 'INTEGER', allowNull: false, unique: true },
name: { type: 'VARCHAR', allowNull: false },
email: { type: 'VARCHAR', unique: true }
};
interface IModel {
id: number
name: string
email: string
}
Tipos de datos
Los tipos de datos que soporta el paquete Cortex para PostgreSQL son:
Hooks
HookManager: Es un sistema de eventos que permite ejecutar lógica adicional antes o después de las operaciones
const hook = new HookManager()
hook.addHook("beforeCreateTable", () => {
console.log("Hook beforeCreateTable")
})
Instanciar y Crear Tabla
Podemos inicializar la instancia de cortex para crear ó eliminar la tabla
const cortex: Cortex = new Cortex("demo", schema, hook)
await cortex.dropTable()
await cortex.createTable()
Método count
Una vez que tengas tu modelo definido, puedes usar el método count
para contar registros que cumplan con ciertas condiciones. Aquí tienes un ejemplo de cómo usarlo
const payload: number = await cortex.count({});
const payload: number = await cortex.count({ id: 2 });
Método Create
Puedes usar el método create
para crear registros. Aquí tienes un ejemplo de cómo usarlo
const payload: IModel = await cortex.create({
id: 1,
name: "javier avila",
email: "njavilas2015@gmail.com"
})
Método Update
Puedes usar el método update
para actualizar registros. Aquí tienes un ejemplo de cómo usarlo
const payload: IModel[] = await cortex.update({ id: 1 }, {
name: "Nelson Javier Avila"
})
Método Destroy
Puedes usar el método destroy
para eliminar registros. Aquí tienes un ejemplo de cómo usarlo
const payload: IModel[] = await cortex.destroy({ id: 1 })
Método FindAndCountAll
Puedes usar el método findAndCountAll
para listar registros. Aquí tienes un ejemplo de cómo usarlo. puedes pasarle una query para filtrar datos así como un límite y un desplazamiento (offset)
const payload: IModel[] = await cortex.findAndCountAll({})
With Transaction
Ejecuta múltiples llamadas dentro de una transacción
await cortex.withTransaction(async (client) => {
await cortex.update({ id: 1 }, { name: 'Updated Name 1' }, client);
await cortex.update({ id: 2 }, { name: 'Updated Name 2' }, client);
});
Last updated