base de datos

Una herramienta Sumor Cloud.
Más documentación Un conector de base de datos para MySQL, etc. Basado en entidad.

CI Prueba Cobertura Auditoría

Instalación

npm i @sumor/database --save

Prerrequisitos

Versión de Node.JS

Se requiere la versión de Node.JS 16.x o superior

Requiere módulo ES de Node.JS

Como este paquete está escrito en módulo ES, por favor cambia el siguiente código en tu archivo package.json:

{
  "type": "module"
}

Uso

Uso general

import database from '@sumor/database'

const config = {
  host: 'localhost',
  user: 'root',
  password: 'Contraseña',
  database: 'base_de_datos',
  port: 3306
}

await database.install(config, {
  entity: {
    Auto: {
      propiedad: {
        marca: {
          tipo: 'cadena',
          longitud: 100
        },
        modelo: {
          tipo: 'cadena',
          longitud: 100
        }
      }
    }
  },
  vista: {}
})

// obtener cliente con pool de conexiones
const cliente = await database.client(config)

// obtener conexión
const db = await cliente.connect()

// establecer usuario operativo
db.setUser('tester')

// crear registro
const idAuto1 = await db.insert('Auto', {
  marca: 'BMW',
  modelo: 'X5'
})
const idAuto2 = await db.insert('Auto', {
  marca: 'BMW',
  modelo: 'X6'
})

// leer registro
const auto = await db.single('Auto', { id: idAuto })
// auto = {id: idAuto1, marca: 'BMW', modelo: 'X5'}

// consultar registros
const autos = await db.query('Auto', {
  marca: 'BMW'
})
// autos = [{id: idAuto1, marca: 'BMW', modelo: 'X5'}, {id: idAuto2, marca: 'BMW', modelo: 'X6'}]

// contar registros
const cantidad = await db.count('Auto', {
  marca: 'BMW'
})
// cantidad = 2

// actualizar registro
await db.update(
  'Auto',
  { id: idAuto1 },
  {
    marca: 'BMW',
    modelo: 'X5M'
  }
)

// asegurar registro
await db.ensure('Auto', ['marca'], {
  marca: 'BMW',
  modelo: 'X5C'
})
// no insertará el registro si ya existe la marca 'BMW'

// modificar registro
await db.modify('Auto', ['marca'], {
  marca: 'BMW',
  modelo: 'X5C'
})
// actualizará el modelo del registro si ya existe la marca 'BMW'

// eliminar registro
await db.delete('Auto', { id: idAuto1 })

// cerrar conexión
await db.commit()

// revertir
await db.rollback()

// cerrar conexión
await db.release()

// destruir cliente cuando se deba apagar el servidor
await cliente.destroy()

Opciones de consulta

// consultar registros con opciones
const autos = await db.select(
  'Auto',
  {
    marca: 'BMW'
  },
  {
    término: 'X5',
    rangoTérmino: ['modelo'],
    superior: 10,
    omitir: 0
  }
)

Opciones de definición de entidad

Índice

Puedes agregar un arreglo de índices a la definición de la entidad para crear un índice en la tabla, por defecto, creará un índice en el campo id.

Unir

Puedes agregar un objeto de unión a la definición de la entidad para crear una unión en la tabla. Como en el siguiente ejemplo, creará el campo userId en la entidad Car.

import database from '@sumor/database'

const config = {
  host: 'localhost',
  user: 'root',
  password: 'Contraseña',
  database: 'base_de_datos',
  port: 3306
}

await database.install(config, {
  entity: {
    Auto: {
      propiedad: {
        marca: {
          tipo: 'cadena',
          longitud: 100
        },
        modelo: {
          tipo: 'cadena',
          longitud: 100
        }
      },
      índice: ['userId'],
      unir: {
        usuario: 'Usuario'
      }
    }
  },
  vista: {}
})