Javier-Rotelli / taperbot

5 stars 2 forks source link

Add simple storage module. #52

Closed emanuelandrada closed 2 years ago

emanuelandrada commented 2 years ago

Interfaz de Storage simple para en algún momento migrar a algo más complejo sin tocar tanto los plugins. Patea solo la escritura al archivo unos diez segundos para evitar escribir cada cambio al disco. Uso:

import createStorage from 'modules/storage'

const storage = createStorage("almuerzo", { log: logger })
const store = storage.createStore(nombre, defaultValue)
store.value // el valor actual
store.set(newValue) // para actualizar el valor
let valor = store.get(["path", "a", "valor"]) // para obtener un sub store a una clave en particular
valor.value // el valor de la clave
valor.set(newValue) // cambia el valor en la clave
valor.get(["mas", "claves"]) // entra más en profundidad
store.close() // si no se va a usar más

Las cosas que arrancan con _ están porque hacían falta en los tests pero la idea sería que no se usen. Revisar commit por commit.

emanuelandrada commented 2 years ago

Cambié el constructor del plugin para poder agregar más parámetros sin depender del orden (va un objeto ahora en vez de una lista de parámetros). Le agregué definiciones de ts precarias solo para tener un punto de inicio para usarlas aunque solo sirven para que sugiera mejor VSCode. Metí el directorio modules para meter modules que sean cross plugins ahí dentro. El primero es storage pero podrían ir otras cosas. No quise sobrediseñar la construcción de los mismos. El uso del storage en almuerzo es bien precario. En un PR más adelante va un uso mejor.

emanuelandrada commented 2 years ago

Ahora sí. Agregué la api para manejar partes del store y migré almuerzo y slackbot-reactions.