Una DB fácil de usar para todos que no se corrompe!
UwUDB cuenta con errores dinámicos para saber donde fue donde te equivocaste, esquemas para tener un estricto uso de lo que le puedes meter a la db y todo esta en español!
.- Se mejoro el README
.- Se agrego eliminarDB en uwuCliente
Puedes ver los cambios de todas las versiones en el CHANGELOG
.- Terminar todos los métodos en Documento y DB
npm i uwudb --s
//CommonJS
const uwudb = require('uwudb')
//TypeScript/ES6 Módulos
import { uwuCliente, Esquema } from 'uwudb'
SQL no soporta arrays por default por lo tanto uwudb tampoco
const { Utils} = require('uwudb')
//Aquí tendríamos nuestro array
const miarray = ['Jajaja', 'Hola']
//Creamos nuestro esquema y ponemos array como string
const miesquema = new Esquema({
array: 'string',
nombre: 'string'
})
//Creamos nuestra db
const db = cliente.crearDB('arrays', miesquema)
//Establecemos el array como string
db.establecer({array: miarray.toString(), nombre: 'ArraysEnUwUDB'})
//Para obtenerlo usaríamos
const resultado = db.buscarUno({nombre: 'ArraysEnUwUDB'})
console.log(Utils.formatArray(resultado.array))
// ["Jajaja", "Hola"]
console.log(resultado.array)
// "['Jajaja", "Hola']"
Esta clase es la base de todo el modulo, en ella puedes crear databases y ver cuales has creado.
Las opciones son variadas:
-
OpcionesCliente.dir
: El directorio donde se creara la DB (requerido:Si
) -
OpcionesCliente.nombre
: El nombre de el archivo de la DB (requerido:Si
) -
OpcionesCliente.WAL
: Inicia la db de sqlite enWAL mode
(default:false
) -
OpcionesCliente.verbose
: Pasa una función que sera ejecutada con cada acción en sqlite
const uwudb = require('uwudb')
const client = new uwudb.uwuCliente({dir: './database', nombre: 'data', WAL: false, verbose: console.log})
Crea una nueva db con el esquema y nombre recibidos, devuelve una nueva clase DB
const personas = client.crearDB('personas', personasEsquema)
Elimina una db (Tabla) de uwudb, ten en cuenta que se eliminaran todos los datos de esa DB
client.eliminarDB('personas')
.OpcionesCliente -> OpcionesCliente - Las opciones ingresadas al instanciar la clase
.Databases -> Map<string, DB[]> - Todas las DBs creadas, puedes buscar una por su nombre
.db -> Database - La base cruda de better-sqlite3
Esta clase recibe un objeto al crearse, el objeto sera el esquema que tendrá la db, las propiedades que pongas aquí serán las que estarán en la db
Véase los tipos, aquí
-
obj.<Propiedad>.type
: Incluye el tipo de la propiedad, también puedes usar <Propiedad>: Tipo -
obj.<Propiedad>.required
: Una variable booleana, si se pasa como true se necesitara incluir esa propiedad al insertar algo a la db (default:false
) -
obj.<Propiedad>.default
: El valor que tendrá por default la propiedad, si al insertar un dato a la db y tiene esta propiedad se sobrescribirá por el valor ingresado no el default
const personasEsquema = new Esquema({
nombre: 'string',
segundoNombre: {
type: 'string',
default: 'Doe'
},
edad: {
type: 'number',
required: true
}
})
.rawModel -> object - El objeto ingresado
.properties -> string[] - Un array con todas las propiedades del objeto
.values -> string[] - Un array con los valores para SQL de cada propiedad
.types -> string[] - Un objeto de una propiedad, su tipo, si es requerido y si tiene, el valor default
.sentence -> string - Una string con la sentencia para crear la tabla
- new DB()
- DB#establecer() (ver ResultadoOperación)
- DB#buscarUno() (ver Documento)
- DB#buscar() (ver Documento)
- DB#actualizarUno() (ver Documento)
- DB#eliminarUno() (ver ResultadoOperacion)
- DB#eliminarVarios() (ver ResultadoOperacion)
- DB#eliminarPorId() (ver ResultadoOperacion)
- Propiedades
Crea una DB nueva, recomiendo mucho no usar esta clase, usen uwuCliente#crearDB
Atención: Cada documento viene con una _id asignada por uwudb, no la modifiquen recomendablemente, pueden ocurrir algunos errores al hacerlo
-
nombre
: El nombre de la db (requerido:Si
) -
esquema
: El esquema perteneciente a la db (requerido:Si
) -
client
: Una clase instanciada de uwuClient
Establece un objeto en la database, obj debe incluir las propiedades de el esquema (no todas), si pusiste en el esquema una propiedad como requerida y no la pones saltara un error, si pusiste un valor por default y pones su valor en el objeto se sobrescribirá el valor default a ese que pusiste en obj
try {
const resultado = personas.establecer({nombre: 'Pedro', edad: 16})
} catch (e) {
console.log(e)
}
Busca un documento en la db con las propiedades que se hayan ingresado en obj
const resultado = personas.buscarUno({nombre: 'Pedro'})
console.log(resultado)
/*
Documento {
_id: AGm83242ea891je07ed9M,
nombre: 'Pedro',
segundonombre: 'Doe',
edad: 16
}
*/
Busca varios documentos que se encuentren con la Búsqueda si no se pone la Búsqueda se mostraran todos los documentos en esa tabla, el limite es opcional, si no se pone se mostraran todos los docs con esa Búsqueda
personas.establecer({nombre: 'Juana', edad: 18})
const resultado = personas.buscar({segundonombre: 'Doe'})
console.log(resultado)
/*
[
Documento {
_id: AGm83242ea891je07ed9M,
nombre: 'Pedro',
segundonombre: 'Doe',
edad: 16
},
Documento {
_id: f2j3Kmag0F27JH1d100c6,
nombre: 'Juana',
segundonombre: 'Doe',
edad: 18
}
]
*/
Actualiza un documento, primero buscándolo y poniendo los nuevos datos a actualizar
personas.establecer({nombre: 'Juana', edad: 18})
const cambios = personas.actualizarUno({nombre: 'Juana'}, {edad: 19})
console.log(cambios)
/*
Documento {
nombre: 'Juana',
edad: 19
}
*/
Elimina un documento que cumpla con la Búsqueda
personas.establecer({nombre: 'Juana', edad: 18})
const eliminar = personas.eliminarVarios({edad: 18})
console.log(eliminar)
/*
{ ok: true, documentos: 1 }
*/
Elimina varios documentos que cumplan con la Búsqueda
personas.establecer({nombre: 'Juana', edad: 18})
personas.establecer({nombre: 'Juan', edad: 18})
const eliminar = personas.eliminarVarios({edad: 18})
console.log(eliminar)
/*
{ ok: true, documentos: 2 }
*/
Elimina documentos por la _id asignada por uwudb
personas.eliminarPorId('AGm83242ea891je07ed9M')
const resultado = personas.buscar()
console.log(resultado)
/*
[
Documento {
_id: f2j3Kmag0F27JH1d100c6,
nombre: 'Juana',
segundonombre: 'Doe',
edad: 18
}
]
*/
.Esquema -> new Esquema - El esquema de la db
.nombre -> string - El nombre de la db
Crea un nuevo documento para responder con el en una Búsqueda, recomiendo no instanciar esta clase para otras cosas, esta clase es solo para cosas internas al devolver una Búsqueda
Elimina el documento actual, misma documentacion que Database#eliminarPorId
const resultado = personas.buscarUno({nombre: 'Juana'})
console.log(resultado.eliminar())
Guarda los cambios de el documento actual
const resultado = personas.buscarUno({nombre: 'Juana'})
resultado.nombre = 'Juan'
console.log(resultado.guardar())
Valida cualquier _id
console.log(uwudb.Utils.validarID('f2j3Kmag0F27JH1d100c6')) // true
console.log(uwudb.Utils.validarID('uwu')) // false
console.log(uwudb.Utils.validarID('8sjñXag0F27zY1d1u0c6')) // false
Formatea un array dentro de un string a un array real
const miarray = "['MiElemento']"
const miarrayreal = formatArray(miarray)
console.log(miarrayreal) // ["MiElemento"]
Los tipos validos en el esquema son: string
, number
, boolean
Si quieren que se agrege una nueva funcionalidad o reportar un error mandadme un MD en discord: Vyrek#7545