uwudb v1.2.0
UwUDB
Una DB facil de usar para todos, facil de usar y no se corrompe!
UwUDB cuenta con errores dinamicos 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!
CAMBIOS
.- Se agregaron cosas al README y tambien se arreglo
.- Se especifico como usar arrays y se creo una funcion que te ayuda a convertirlos a arrays
Puedes ver los cambios de todas las versiones en el CHANGELOG
Contenido
ToDo
.- Terminar todos los metodos en Documento y DB
Instalacion
npm i uwudb --s
Uso
//CommonJS
const uwudb = require('uwudb')
//TypeScript/ES6 Modulos
import { uwuCliente, Esquema } from 'uwudb'
Como puedo usar arrays?
SQL no soporta arrays por default por lo tanto uwudb tampoco
const { Utils} = require('uwudb')
//Aqui tendriamos 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 usariamos
const resultado = db.buscarUno({nombre: 'ArraysEnUwUDB'})
console.log(Utils.formatArray(resultado.array))
// ["Jajaja, Hola"]
console.log(resultado.array)
// "['Jajaja, Hola']"
class Esquema
new Esquema({obj})
Esta clase recibe un objeto al crearse, el objeto sera el esquema que tendra la db, las propiedades que pongas aqui seran las que estaran en la db
Vease los tipos, aqui
obj.<Propiedad>.type
: Incluye el tipo de la propiedad, tambien puedes usar \<Propiedad>: Tipoobj.<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 tendra por default la propiedad, si al insertar un dato a la db y tiene esta propiedad se sobreescribira por el valor ingresado no el default
const personasEsquema = new Esquema({
nombre: 'string',
segundoNombre: {
type: 'string',
default: 'Doe'
},
edad: {
type: 'number',
required: true
}
})
Propiedades
.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
class uwuCliente
new uwuCliente({OpcionesCliente})
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 funcion que sera ejecutada con cada accion en sqlite
const uwudb = require('uwudb')
const client = new uwudb.uwuCliente({dir: './database', nombre: 'data', WAL: false, verbose: console.log})
.crearDB(nombre, esquema) -> DB
Crea una nueva db con el esquema y nombre recibidos, devuelve una nueva clase DB
const personas = client.crearDB('personas', personasEsquema)
Propiedades
.OpcionesCliente -> OpcionesCliente - Las opciones ingresadas al instanciar la clase
.Databases -> DB[] - Todas las DBs creadas
.db -> Database - La base cruda de better-sqlite3
class DB
- new DB()
- DB#establecer() (ver BetterSqlite3.RunResult)
- DB#buscarUno() (ver Documento)
- DB#buscar() (ver Documento)
- DB#actualizarUno() (ver Documento)
- DB#eliminarPorId() (ver BetterSqlite3.RunResult)
- Propiedades
new DB(nombre, esquema, client)
Crea una DB nueva, recomiendo mucho no usar esta clase, usen uwuCliente#crearDB
Atencion: 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
.establecer({obj}) -> BetterSqlite3.RunResult
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 sobreescribira el valor default a ese que pusiste en obj
try {
const resultadp = personas.establecer({nombre: 'Pedro', edad: 16})
} catch (e) {
console.log(e)
}
.buscarUno({query}) -> Documento
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
}
*/
.buscar({query?}, limite?) -> Documento[]
Busca varios documentos que se encuentren con la query si no se pone la query se mostraran todos los documentos en esa tabla, el limite es opcional, si no se pone se mostraran todos los docs con esa query
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
}
]
*/
.actualizarUno({query}, {nuevosDatos}) -> Documento
Actualiza un documento, primero buscandolo 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
}
*/
.eliminarPorId(_id) -> BetterSqlite3.RunResult
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
}
]
*/
Propiedades
.Esquema -> new Esquema - El esquema de la db
.nombre -> string - El nombre de la db
class Documento
new Documento(data, db)
Crea un nuevo documento para responder con el en una busqueda, recomiendo no instanciar esta clase para otras cosas, esta clase es solo para cosas internas al devolver una query
.eliminar() -> BetterSqlite3.RunResult
Elimina el documento actual, misma documentacion que Database#eliminarPorId
const resultado = personas.buscarUno({nombre: 'Juana'})
console.log(resultado.eliminar())
.guardar() -> Documento
Guarda los cambios de el documento actual
const resultado = personas.buscarUno({nombre: 'Juana'})
resultado.nombre = 'Juan'
console.log(resultado.guardar())
function validarID
validarID(_id) -> boolean
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
function formatArray
formatArray(array) -> any[]
Formatea un array dentro de un string a un array real
const miarray = "['MiElemento']"
const miarrayreal = formatArray(miarray)
console.log(miarrayreal) // ["MiElemento"]
Tipos de Variables en Esquemas
Los tipos validos en el esquema son: string
, number
, boolean
Soporte
Si quieren que se agrege una nueva funcionalidad o reportar un error mandenme un MD en discord: Vyrek#7545