npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

sqliteplus

v3.2.1

Published

A simple SQLite3 synchronous module

Downloads

20

Readme

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 |

| Options | Descripción | Default | | -- | -- | -- | | folder | Recibe un boleano. Añade varias bases de datos | false | file | Recibe un boleano. Añade una única base de datos | false | memory | Recibe un boleano. Añade una base de datos en memoria | true | configPath | Recibe un string. Añade las configuraciones globales e individuales de tus bases de datos | null

/*
> 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.

| Propiedades | Descripción | | -- | -- | | Files | La 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.

| Propiedades | Descripción | | -- | -- | | Folders | La 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.

| Propiedades | Descripción | | -- | -- | | Path | La ruta donde quieres guardar el archivo | Name | El 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.

|Propiedades | Descripción | -- | -- | Options | Contiene las opciones de la función

| Propiedades | Descripción | -- | -- | pathway | La ruta dónde quieres crear la carpeta dentro de tu proyecto | name | El nombre de la carpeta tanto en tu proyecto como en el manejador | force | Fuerza 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.

|Propiedades | Descripción | -- | -- | Options | Contiene las opciones de la función

| Propiedades | Descripción | -- | -- | files | Las bases de datos a eliminar del manejador | force | Fuerza 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.

|Propiedades | Descripción | -- | -- | Options | Contiene las opciones de la función

| Propiedades | Descripción | -- | -- | folders | Las carpetas a eliminar del manejador | force | Fuerza 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.

|Propiedades | Descripción | -- | -- | Options | Contiene las opciones de la función

| Propiedades | Descripción | -- | -- | file | El archivo que quieres mover | to | El directorio donde lo quieres mover | force | Fuerza 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.

|Propiedades | Descripción | -- | -- | Options | Contiene las opciones de la función

| Propiedades | Descripción | -- | -- | files | El directorio de los archivos a mover | to | El directorio donde los quieres mover | exclude | Excluye algunos archivos | force | Fuerza 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:

| Palabra | Nombrar db | Explicación | -- | -- | -- | defaultPoint | ❌ | Reservado para configuraciones | defaultFileStorage | ❌ | Reservado para configuraciones | defaultConfig | ❌ | Reservado para configuraciones | exclude | ❌ | Reservado para configuraciones | NONAME_ | ⚠ | Reservado únicamente para cargar archivos sin nombre desde carpetas | NONAME | ⚠ | Reservado únicamente para cargar archivos sin nombre sueltos

| Símbolo | Significado | -- | -- | ✅ | Se puede usar | | ❌ | No se puede usar | | ⚠ | Parcial |

src

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

| Propiedades | Descripción | | -- | -- | src | La 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

| Propiedades | Descripció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.

| Propiedades | Descripció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.

| Propiedades | Descripció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.

| Propiedades | Descripció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.

| Propiedades | Descripció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.

| Propiedades | Descripció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.

|Propiedades | Descripción | -- | -- | Options | Contiene las opciones de la función

| Propiedades | Descripción | -- | -- | time | Un tiempo en el que estará cerrada. Tras pasar el tiempo, volverá a abrir | db | Cierra 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.

|Propiedades | Descripción | -- | -- | Options | Contiene las opciones de la función

| Propiedades | Descripción | -- | -- | time | Un tiempo en el que estará abierta. Tras pasar el tiempo, volverá a cerrar | db | Abre 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

| Options | Descripción | -- | -- | defaultPoint | Es el punto por defecto donde el manejador mirará para setear una base de datos sobre la que actuar | defaultFileStorage | Es el punto por defecto donde el manejador mirará donde se encuentra x base de datos si no es especificado su dirección | databases | Los 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.

| Propiedades | Descripción | - | - | Name | El nombre del modelo | Options | Las opciones del modelo

| Options | Descripción | - | - | createIfNotExists | Crea la base de datos si no existe. También crea tablas si no existen | path | La dirección donde se encuentra la base de datos en tu proyecto | close | Añade la base de datos cerrada por defecto | Models | Los modelos de la base de datos | forceLoad | Obliga a añadir la base de datos como pueda

| Models | Descripción | - | - [Name, Model, ModelOptions][] | La estructura del modelo

| ModelOptions | Descripción | - | - | createIfNotExists | Crea 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

| Options | Descripción | - | - | name | El nombre del clon | clone | El nombre del modelo a clonar | force | Fuerza 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.

| Propiedades | Descripción | - | - | Name | El nombre del modelo a editar | Options | Las opciones del modelo

| Options | Descripción | - | - | createIfNotExists | Crea la base de datos si no existe. También crea tablas si no existen | path | La dirección donde se encuentra la base de datos en tu proyecto | close | Añade la base de datos cerrada por defecto | Models | Los modelos de la base de datos | forceLoad | Obliga a añadir la base de datos como pueda

| Models | Descripción | - | - [Name, Model, ModelOptions][] | La estructura del modelo

| ModelOptions | Descripción | - | - | createIfNotExists | Crea la tabla si no existe

config.editDatabase('otherDB', {
  forceLoad: false,
  createIfNotExists: true,
});

removeDatabase(Name)

Elimina modelos de la configuración

| Propiedades | Descripción | - | - | Name | El nombre del modelo a eliminar

config.removeDatabase('db');

removeDatabases(...Names)

Elimina modelos de la configuración

| Propiedades | Descripción | - | - | Names | Los nombres de los modelos a eliminar

config.removeDatabases('db', 'secondDB', 'etcDb');

setDefaultFileStorage(Path)

Elige el punto de almacenamiento de bases de datos.

| Propiedades | Descripción | - | - | Path | La 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.

| Propiedades | Descripción | - | - | Path | La dirección en el manejador

config.setDefaultPoint('db OR test/db OR :memory:')