Custom Store
You can use your own store for the SocketDBClient as well as SocketDBServer. This allows you to, for example, add persistence to your application.
You might need to install the core utils package for this:
@socketdb/core
Simply write a function that returns an object with these functions:
type Store = {
get: (path?: string) => Node | null;
put: (diff: Node) => Node;
del: (path: string) => void;
};
getreturns a data node for a specific path. (e.g. path:users/thomas), ornullif there is no data for the given path.putsaves changed data in the store and returns an object containing a diff object with all updated data.deldeletes nodes for a given path
Node has following type definition:
type Node = {
meta?: { [namespace: string]: any };
value: { [key: string]: Node } | string | number | any[];
};
Or you can simply extend the default store:
import { createStore } from '@socketdb/core';
const { get, put, del } = createStore();
function myCustomStore() {
return {
get,
del,
put(diff) {
console.log('updated data', diff);
return put(diff);
},
};
}
This can be used instead of the default one on initialization:
client side:
const db = SocketDBClient({
store: myCustomStore(),
});
Server side:
SocketDBServer({
store: myCustomStore(),
});