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