Hasta ahora todo lo que hemos visto ha involucrado pruebas locales con nuestra db pero no hemos interactuado mucho con el resto de nuestros compas.
Es tiempo de cambiar eso.
Recuerdan que estamos usando hypercore y encima de el, hyperdb. Hagamos un breve repaso juntos, hasta ahora sabemos que:
- Dat es singlewriter, por ahora.
hypercore
es el 💗 de Dat.hypercore
nos permite crear un feed (estructura de datos) donde podemos escribir/leer y que podemos compartir.- Cada feed nos da una clave pública que nos sirve para identificarnos.
- Un feed puede ser visto como un append-only log.
hyperdb
es una db que opera sobre un conjunto de feeds (hypercores).hyperdb
habilita a Dat a soportar multiwriters
Funciona de la siguiente manera: una operación de escritura en el feed del autor original (el creador de nuestro chat, en nuestro caso), indica que determinado peer puede escribir. La forma de identificar al peer es mediante su clave pública (PK
), es decir, este peer 🐴 debe pasarme su PK
de alguna forma.
Internamente, hyperdb escribe en el feed, como si fuera un mensaje mas (aunque es un mensaje especial), que determinado peer 🐴 puede escribir.
Saga
debe soportar un nuevo metodo (API) que le permitira autorizar a un peer. Este método_authorize
recibirá como parámetro unaPK
.- Este nuevo método retorna una promesa que cuando resuelve exitosamente entrega un string:
AUTHORIZED
, y cuando hace el reject, devuelve el error.
Usaremos dos métodos de la API de hyperdb:
authorize
, nos sirve para autorizar.authorized
, nos sirve para chequear si ya autorizamos determinada key.
$ npm test ./08