Skip to content
Agustin Fernandez edited this page Jan 1, 2022 · 3 revisions

Instalación

Podrá realizarlo mediante NPM con el siguiente comando

    npm i solardb-core

Luego de esto, es necesario invocar el mismo desde el proyecto con la siguiente linea

    const solar = require("solardb-core")
  • El directorio no es necesario declararlo si se usa el de defecto, es el "./data/", este se puede reemplazar por uno personalizado pero debera ser un directorio absoluto

Crear Store

Creo Coleccion en directorio principal

    let r = solar.dbCreateCollection ("Metronica")

Especifico directorio de Store y su Coleccion

    let r = solar.dbCreateCollection ("Metronica", "./data/")

Usando la consulta anterior obtenemos

./data/Metronica

Inserto datos en DB

    let r = solar.dbInsert({
        nombre: "Agustin",
        edad: 28
    }, "usuarios")

Usando la consulta anterior obtenemos

    {
        "id": "1",
        "directory": "./data/usuarios/1.sol"
    }

Obtener Indices

Respondera un Array con objetos segun corresponda, puede ser el indice del Store que estra llamado segun lo nombre como el indice de colecciones

Obtener Index de una Coleccion

    let r = solar.dbGetIndex("usuarios", "/data2/")

        // OR

    let r = solar.dbGetIndex("usuarios")

Usando la consulta anterior obtenemos

    [ '1' ]

Obtener Colecciones de un Store especifico

    let r = solar.dbGetIndex(null, "/data2/")

        // Sin especificar directorio, se obtiene las Colecciones de /data

    let r = solar.dbGetIndex()

Usando la consulta anterior obtenemos

    [ 'usuarios' ]

Obtener Datos de un Indice

Mediante el metodo de dbGetData obtendremos un array de objetos pertenecientes a las versiones del Index. Podemos realizar filtro de este mediante metodos JS como .pop() por ejemplo. Con pop nos quedaremos como resultado, el ultimo registro que exista en el index.

  • Debe especificar el Indice que quiere obtener, Coleccion y Store. El Store, si no se indica, se tomara el predeterminado.
  • Para poder parsear la respuesta es necesario usar JSON.parse() ya que los elementos se guardan como JSON.stringify()
    let r = solar.dbGetData("1", "usuarios", "./data/")
        // or
    let r = solar.dbGetData("1", "usuarios")

Usando la consulta anterior obtenemos

    [
        { nombre: 'Agustin', edad: 28 },
        { nombre: 'Agustin', edad: 28, ciudad: 'San Martin' }
    ]

Actualizar Datos de un Indice

Indicamos el JSON, Index, Coleccion y Store. De esta forma actualizamos el Index:

    let r = solar.dbUpdate({
        nombre: "Agustin",
        edad: 28,
        ciudad: 'San Martin'
    }, "1", "Usuarios","./data2/")

Nos respondera

    {
        id: '1',
        directory: './data2/Usuarios/1.sol'
    }

Tip

Al momento de Actualizar el Index, no se pisaran los datos, si no, que se guardaran como versiones.

Obtener fecha de Modificacion

Con este metodo podremos obtener la fecha y hora en que se modifico por ultima vez el Index

Indicamos el Index, Coleccion y Store:

    let r = solar.dbGetDateModify("1", "usuarios", "./data/")

Nos respondera lo siguiente:

    [ 'Tue', '13', 'Jul', '2021', '21:30:08', 'GMT' ]

Obtener ultimo Index creado / modificado

Con este metodo podremos obtener el ultimo archivo modificado o creado de la Coleccion

Indicamos la Coleccion y Store

    let r = solar.dbGetLatestFile("usuarios", "./data/")

Nos respondera un String con el ID del Index

    {
        index: '1',
        date: [ 'Tue', '13', 'Jul', '2021', '21:30:08', 'GMT' ]
    }

Eliminar elementos de un Index

Con este método podremos eliminar elementos de un index sin necesidad de recrearlo

Indicamos Matriz, Index, Coleccion y Data Store

    let r = dbDeleteInsert( 0, 2, 'carrito' )

Nos respondera un String con el ID del Index

{
  id: 2,
  matrixID: 0,
  deleted: true,
  data: [
    '{"id":"2","timestamp":"asas","nombre":"as","descripcion":"assas","codigo":"assa","foto":"assas","precio":"asas","stock":"assa"}',
    '{"id":"3","timestamp":"asas","nombre":"as","descripcion":"assas","codigo":"assa","foto":"assas","precio":"asas","stock":"assa"}',
    '{"id":"4","timestamp":"asas","nombre":"as","descripcion":"assas","codigo":"assa","foto":"assas","precio":"asas","stock":"assa"}',
    '{"id":"5","timestamp":"asas","nombre":"as","descripcion":"assas","codigo":"assa","foto":"assas","precio":"asas","stock":"assa"}',
    '{"id":"6","timestamp":"asas","nombre":"as","descripcion":"assas","codigo":"assa","foto":"assas","precio":"asas","stock":"assa"}',
    '{"id":"7","timestamp":"asas","nombre":"as","descripcion":"assas","codigo":"assa","foto":"assas","precio":"asas","stock":"assa"}',
    '{"id":"8","timestamp":"asas","nombre":"as","descripcion":"assas","codigo":"assa","foto":"assas","precio":"asas","stock":"assa"}'
  ]
}

En el caso de que falle devolverá lo siguiente

 { 
    id: 2, 
    matrixID: 0, 
    deleted: false 
 }

Eliminar Indice

Indicamos el Index, Coleccion y Store. De esta forma Eliminamos el Index:

    let r = solar.dbDeleteData("1", "Usuarios","./data2/")

Nos respondera el valor 1 para la eliminacion correcta

Actualizar el Index Modificando Inserts

Con este metodo borramos todo el contenidos del Insert e ingresamos un nuevo valor

Especificamos el JSON a Agregar, ID de Insert, Colleccion y Datastore

    let r = dbFlushInsert(
                {
                    "id": "1", 
                    "timestamp": "a", 
                    "nombre": "as", 
                    "descripcion": "assas", 
                    "codigo": "assa", 
                    "foto": "assas", 
                    "precio": "asas",
                    "stock": "assa"
                },
                2, 
                'carrito'
            )

Nos respondera el valor ingresado con el ID afectado:

    {
        id: 2,
        data: {
            id: '1',
            timestamp: 'a',
            nombre: 'as',
            descripcion: 'assas',
            codigo: 'assa',
            foto: 'assas',
            precio: 'asas',
            stock: 'assa'
        }
    }

Manejador de Errores

En los casos que se mal indique un Index, Store o Coleccion nos encontraremos con el siguiente error

    [ 
        { 
            code: 'ENOENT',
            msj: 'El directorio o archivo no existe' 
        } 
    ]