Capri: enlaces Gleam seguros para Khepri

Fuentes: Capri: type-safe Gleam bindings for Khepri

Capri es una biblioteca de enlaces seguros por tipos para Khepri, el sistema de persistencia de Erlang. Su objetivo es ofrecer una capa tipada y atómica para definir repositorios, transformar datos entre versiones y crear proyecciones derivadas, manteniendo la validación de esquemas y la integridad de las operaciones.

El flujo básico comienza con capri.init/2, que inicializa Khepri y devuelve un StoreHandle. A partir de este identificador, los desarrolladores definen un repositorio mediante capri.repository/3, lo abren o crean con capri.bind/3 y acceden a sus registros mediante operaciones tipadas como get y put. La biblioteca verifica que la identidad y la versión del repositorio coincidan con los metadatos almacenados en el prefijo. Las rutas derivadas incorporan la capacidad de descodificar y validar los registros.

Las migraciones son transformaciones atómicas, versionadas y reversibles. Cada versión objetivo incluye su propio descodificador y cada etapa debe aumentar exactamente en una unidad el número de versión. Capri permite crear migraciones irreversibles, pero advierte de que deben evitarse porque pueden impedir una recuperación segura del esquema anterior.

Las proyecciones ofrecen vistas tipadas mantenidas en tablas locales de ETS. Funcionan como memorias caché efímeras y no constituyen el estado autoritativo del repositorio. Pueden representar un único valor por clave, mediante projection.get/2, o varios registros asociados a una misma clave, mediante projection.all/2.

En entornos distribuidos, capri.reset_and_join_cluster/2 conecta la aplicación a un clúster, mientras que reset_and_join_cluster/2 y reset_local_member/1 eliminan los datos locales. Capri se distribuye como software libre bajo la licencia GNU Affero General Public License 3 o posterior.