3.2.1 • Published 2 years ago

sqliteplus v3.2.1

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

SQLite Plus 🍃

Información

SQLite Plus es un manejador de bases de datos SQLite simple orientado a objetos, con el cuál puedes cargar archivos e incluso carpetas completas. Aún está en fase BETA, por lo cuál si ves algún tipo de error, puedes reportarlo 🍃

Instalación

¡Use en su consola npm i sqliteplus y empiece ya mismo a programar! También puedes hacer npm i https://github.com/167BOT/sqliteplus.git para descargarlo desde la página de Github del proyecto.

Clase DatabaseManager(Options, Folders/Paths)

Genera un manejador para poder administrar bases de datos SQLite. | Propiedades | Descripción | | -- | -- | | Options | Opciones para el manejo | | Folders/Paths | Los archivos/carpetas a añadir |

OptionsDescripciónDefault
folderRecibe un boleano. Añade varias bases de datosfalse
fileRecibe un boleano. Añade una única base de datosfalse
memoryRecibe un boleano. Añade una base de datos en memoriatrue
configPathRecibe un string. Añade las configuraciones globales e individuales de tus bases de datosnull
/*
> Folder
    - .sqlite
    - Users.sqlite
*/

const {DatabaseManager} = require('sqliteplus');
const db = new DatabaseManager({file: true}, 'db.sqlite')

console.log(db)// => Let see the output!
/*
DatabaseManager {
    db: Database {
      name: '/home/hugo/Escritorio/modules/SQLitePlus/test/.sqlite',
      open: true,
      inTransaction: false,
      readonly: false,
      memory: false,
      inFolder: false,
      fileName: 'NONAME_test'
  },
  data: null,
  folders: null,
  files: {
    db: Database {
      name: '/home/hugo/Escritorio/modules/SQLitePlus/test/db.sqlite',
      open: true,
      inTransaction: false,
      readonly: false,
      memory: false,
      inFolder: false,
      fileName: 'db'
    }
  }
}
*/

Misceláneo

La clase incluye algunas funciones para poder manejar y crear tus bases de datos de forma práctica y sencilla.

addFiles(Files)

Añade archivos a tu manejador de bases de datos de forma sencilla.

PropiedadesDescripción
FilesLa ruta de los archivos a añadir
db.addFiles(`mydb.sqlite`, `sql.sqlite`)// => Succes!

addFolders(Folders)

Añade carpetas enteras a tu manejador de bases de datos de forma sencilla.

PropiedadesDescripción
FoldersLa ruta de las carpetas a añadir
db.addFolders(`allDbs`, `dataTest`)// => Succes!

createDB(Path, Name)

Crea nuevos archivos de bases de datos de forma sencilla.

PropiedadesDescripción
PathLa ruta donde quieres guardar el archivo
NameEl nombre con el que quieres llamar al archivo
db.createDB(__dirname, 'mysecondDB')// => Succes!

/*
    {
        sucess: true,
        path: C:\\Users\\xxx\\Desktop\\myProject\\database\\mysencondDB.sqlite
    }
*/

createFolder(Options)

Crea carpetas dentro del manejador e inclusive en tu proyecto. Fácil de usar.

PropiedadesDescripción
OptionsContiene las opciones de la función
PropiedadesDescripción
pathwayLa ruta dónde quieres crear la carpeta dentro de tu proyecto
nameEl nombre de la carpeta tanto en tu proyecto como en el manejador
forceFuerza a crear la carpeta de cualquier manera. Ignora errores
db.createFolder({pathway: __dirname, force: true})// => sucess!
db.createFolder({name: 'temporalFolder', force: true})// => sucess! only for manager

//Nota: Si no añades un nombre y tienes activo el force, se pondrá el nombre "databases" por defecto

removeFiles(Options)

Elimina archivos del manejador de forma sencilla e individual. Tiene alcance también en carpetas.

PropiedadesDescripción
OptionsContiene las opciones de la función
PropiedadesDescripción
filesLas bases de datos a eliminar del manejador
forceFuerza a eliminar las bases de datos ignorando errores
let removedFiles = db.removeFiles({files: ["mysecondDB", "fakeFile"], force: true})

/*
  {
    removedFiles: 1,
    totalFiles: 2,
    beforeRemoved: 1,
    filesInManager: 0
  }
*/

removeFolders(Options)

Elimina carpetas del manejador de forma sencilla e individual.

PropiedadesDescripción
OptionsContiene las opciones de la función
PropiedadesDescripción
foldersLas carpetas a eliminar del manejador
forceFuerza a eliminar las carpetas del manejador. Ignora errores
let removedFiles = db.removeFiles({folders: ["db", "dbs"], force: true})

/*
  {
    removedFolders: 1,
    totalFolders: 2,
    beforeRemoved: 1,
    foldersInManager: 0
  }
*/

moveFile(Options)

Mueve un archivo hacia el directorio que quieras.

PropiedadesDescripción
OptionsContiene las opciones de la función
PropiedadesDescripción
fileEl archivo que quieres mover
toEl directorio donde lo quieres mover
forceFuerza a mover el archivo, ignora errores
db.moveFile({file: 'db', to: 'folders/relacional', force: true});

moveContent(Options)

Mueve un archivo hacia el directorio que quieras.

PropiedadesDescripción
OptionsContiene las opciones de la función
PropiedadesDescripción
filesEl directorio de los archivos a mover
toEl directorio donde los quieres mover
excludeExcluye algunos archivos
forceFuerza a mover los archivos, ignora errores
db.moveContent({file: 'folders/relacional', to: 'files', force: true});

Funciones

SQLite Plus incluye funciones y "setters" básicos. Es posible usar de forma nativa better-sqlite3 desde el módulo cosa que se desaconseja completamente.

//SQLitePlus
let get = db.get([
  'Users',
  {
    id: 1,
    name: 'Juán'
  }
])

//better-sqlite3
db.files.db.prepare(`SELECT * FROM Users WHERE id=1, name=Juán`).run([1, 'Alberto'])
//o si ya tienes seteado una db
let myDB = db.db
myDB.prepare(`SELECT * FROM Users WHERE id=1, name=Juán`).run([1, 'Alberto'])

Se recomienda usar estas funciones unicamente cuando algo no haya sido incluido dentro del módulo.

Nota: hay ciertas palabras que están reservadas las cuales no pueden ser usadas. Esta es al lista de palabras reservadas:

PalabraNombrar dbExplicación
defaultPointReservado para configuraciones
defaultFileStorageReservado para configuraciones
defaultConfigReservado para configuraciones
excludeReservado para configuraciones
NONAME_Reservado únicamente para cargar archivos sin nombre desde carpetas
NONAMEReservado únicamente para cargar archivos sin nombre sueltos
SímboloSignificado
Se puede usar
No se puede usar
Parcial

src

Escoge la base de datos sobre la que quieres actuar de forma sencilla e intuitiva.

PropiedadesDescripción
srcLa base de datos que quieres usar
/*
  > apps
    > relacional
      - Communities.sqlite
      - Extra.sqlite
    - Users.sqlite
    - Models.js
    - index.js
*/

//index.js
const myManager = new DatabaseManager({
    file: true
  }, 'Users.sqlite')

myManager.addFolders('relacional')//añadimos la carpeta relacional
myManager.src = 'Users'//vamos a emplear la base de datos "Users"

//o podríamos emplear...

myManager.src = 'relacional/Communities'//... la base de datos "Communities" guardada en una carpeta

createTables(...Models)

Crea tablas dentro de una base de datos de forma rápida y automática

PropiedadesDescripción
Models (rest)Los modelos de las bases de datos
//Models.js
module.exports = [
  [
    'Users', // tabla "Users" dentro de "Communities.sqlite"
    {
      id: undefined,
      name: undefined,
      roles: []
    }
  ],
  [
    'Roles',
    {
      id: undefined,
      name: undefined,
      membersCount: 0,
      membersIDs: []
    }
  ]
]

//index.js
const Models = require('./Models.js')
myManager.createTables(...Models)// => sucess!

all(object)

Obtén datos de la base de datos.

PropiedadesDescripción
object*Un array con la query completa

object*: recibe como primer parámetro un string con el nombre de la tabla sobre la cuál se va a buscar y como segundo parámetro un objeto con la query (opcional).

db.all([
  "Users",
  {
    id: 123,
    name: '167',
  }
]);// => sucess!

/*
{
  id: 123,
  name: '167',
  roles: ["rol1", "rol2"]
}
*/

get(object)

Obtén datos específicos de la base de datos.

PropiedadesDescripción
object*Un array con la query completa

object*: recibe como primer parámetro un string con el nombre de la tabla sobre la cuál se va a buscar y como segundo parámetro un objeto con la query.

db.get([
  "Users",
  {
    id: 123,
    name: '167',
  }
]);// => sucess!

/*
[
  {
    id: 123,
    name: '167',
    roles: ["rol1", "rol2"]
  }
]
*/

insert(object)

Inserta datos en la base de datos.

PropiedadesDescripción
object*Un array con la query completa

object*: recibe como primer parámetro un string con el nombre de la tabla sobre la cuál se va a actuar y como segundo parámetro un objeto con la query. El segundo dato puede estar vacio mediante null y se insertarán los datos por defectos establecidos.

db.insert([
  "Users",
  {
    id: 600,
    name: 'A name',
  }
]);// => sucess!

update(object)

Actualiza datos en la base de datos.

PropiedadesDescripción
object*Un array con la query completa

object*: recibe como primer parámetro un string con el nombre de la tabla sobre la cuál se va a actuar, como segundo parámetro un objeto con el filtro y como último parámetro los nuevos datos. El tercer dato puede estar vacio mediante null y se insertarán los datos por defectos establecidos.

db.update([
  "Users",
  {
    id: 600,
  },
  {
    name: "Godofredo"
  }
]);// => sucess!

delete(object)

Elimina datos en la base de datos.

PropiedadesDescripción
object*Un array con la query completa

object*: recibe como primer parámetro un string con el nombre de la tabla sobre la cuál se va a actuar y como segundo parámetro un objeto con la query. El segundo dato puede estar vacio mediante null y se eliminarán los datos por defecto establecidos.

db.delete([
  "Users",
  {
    name: 'Godofredo',
    id: 600,
  }
]);// => sucess!

close(Options)

Cierra la base de datos. Contiene opciones extra de personalización y manejo.

PropiedadesDescripción
OptionsContiene las opciones de la función
PropiedadesDescripción
timeUn tiempo en el que estará cerrada. Tras pasar el tiempo, volverá a abrir
dbCierra una base de datos en específico
myManager.close().then(x => console.log(x))// => Properly closed!

myManager.close({
  time: 10000,
  db: 'relacional/Communities'
}).then(x => console.log(x))// => Properly open!

open(Options)

Abre la base de datos. Contiene opciones extra de personalización y manejo.

PropiedadesDescripción
OptionsContiene las opciones de la función
PropiedadesDescripción
timeUn tiempo en el que estará abierta. Tras pasar el tiempo, volverá a cerrar
dbAbre una base de datos en específico
myManager.open().then(x => console.log(x))// => Properly open!'

myManager.open({
  time: 30000,
  db: 'relacional/Extra'
}).then().then(x => console.log(x))// => Properly closed!

Clase ManagerConfig(Options)

Genera una configuración para cargarla en el arranque. | Propiedades | Descripción | - | - | Options | Las opciones de la configuración

OptionsDescripción
defaultPointEs el punto por defecto donde el manejador mirará para setear una base de datos sobre la que actuar
defaultFileStorageEs el punto por defecto donde el manejador mirará donde se encuentra x base de datos si no es especificado su dirección
databasesLos modelos de las bases de datos
const {ManagerConfig} = require('sqliteplus');

const manager = new ManagerConfig({
  defaultPoint: 'test/db OR db OR :memory:',
  defaultFileStorage: __dirname,
  databases: {
    db: Options
  }
});

Funciones

La clase contiene funciones variadas y útiles para poder manejar tu configuración de la base de datos.

addDatabase(Name, Options)

Genera el modelo de una base de datos.

PropiedadesDescripción
NameEl nombre del modelo
OptionsLas opciones del modelo
OptionsDescripción
createIfNotExistsCrea la base de datos si no existe. También crea tablas si no existen
pathLa dirección donde se encuentra la base de datos en tu proyecto
closeAñade la base de datos cerrada por defecto
ModelsLos modelos de la base de datos
forceLoadObliga a añadir la base de datos como pueda
ModelsDescripción
[Name, Model, ModelOptions][]La estructura del modelo
ModelOptionsDescripción
createIfNotExistsCrea la tabla si no existe
config.addDatabase("db", {
  forceLoad: true,
  models: [
    [
      "User",
      {
        name: null,
        id: null
      },
      {
        createIfNotExists: true
      }
    ]
  ]
});

cloneDatabase(Options)

Clona un modelo con un nombre diferente. | Propiedades | Descripción | - | - | Options | Las opciones del modelo

OptionsDescripción
nameEl nombre del clon
cloneEl nombre del modelo a clonar
forceFuerza a clonar el modelo
config.clone({name: 'otherDB', clone: 'db'});

editDatabase(Name, Options)

Edita un modelo con un nombre.

Clona un modelo con un nombre diferente.

PropiedadesDescripción
NameEl nombre del modelo a editar
OptionsLas opciones del modelo
OptionsDescripción
createIfNotExistsCrea la base de datos si no existe. También crea tablas si no existen
pathLa dirección donde se encuentra la base de datos en tu proyecto
closeAñade la base de datos cerrada por defecto
ModelsLos modelos de la base de datos
forceLoadObliga a añadir la base de datos como pueda
ModelsDescripción
[Name, Model, ModelOptions][]La estructura del modelo
ModelOptionsDescripción
createIfNotExistsCrea la tabla si no existe
config.editDatabase('otherDB', {
  forceLoad: false,
  createIfNotExists: true,
});

removeDatabase(Name)

Elimina modelos de la configuración

PropiedadesDescripción
NameEl nombre del modelo a eliminar
config.removeDatabase('db');

removeDatabases(...Names)

Elimina modelos de la configuración

PropiedadesDescripción
NamesLos nombres de los modelos a eliminar
config.removeDatabases('db', 'secondDB', 'etcDb');

setDefaultFileStorage(Path)

Elige el punto de almacenamiento de bases de datos.

PropiedadesDescripción
PathLa dirección de la carpeta
config.setDefaultFileStorage(__dirname)

setDefaultPoint(Path)

Elige la dirección de la base de datos sobre la que actuar principalmente en el arranque.

PropiedadesDescripción
PathLa dirección en el manejador
config.setDefaultPoint('db OR test/db OR :memory:')
3.0.4

2 years ago

3.2.1

2 years ago

3.1.1

2 years ago

3.1.0

2 years ago

3.0.5

2 years ago

2.6.0

2 years ago

2.5.1

2 years ago

2.0.0

2 years ago