@magic-libraries/db
@magic-libraries/db
localstorage backed browser key value database for @magic
installation
npm install --save-exact magic-libraries/dbusage
in a page/component, just use the lib.db functions, either as action or effect.
see ExampleStore for a reference implementation and @magic-modules/gdpr for an actual usecase
export const View = ({ key, state }) =>div([div(["key: key]),div([h4("controls"),button({ onclick: [actions.examplestore.set, { key }] }, "write"),button({ onclick: [actions.examplestore.get, { key }] }, "read"),button({ onclick: [actions.examplestore.del, { key }] }, "delete"),]),div("value in local storage:"),state[key]? ["state is accessible via state["" + key + ""] div(state[key])]: div("no value in db"),])export const actions = {examplestore: {get: (state, { key }) => [state,[lib.db.get,{key,action: actions.examplestore.refresh,},],],set: (state, { key }) => [state,[lib.db.set,{key,value: "testing " + Math.ceil(Math.random() * 100000),action: actions.examplestore.refresh,},],],del: (state, { key }) => [state,[lib.db.del,{key,action: actions.examplestore.refresh,},],],refresh: (state, { key, value }) => {console.log("refresh { key, value })if (key) {state[key] = value}return {...state,}},},}
then use it in a page:
<ExampleStore state key="magic-examplestore"><ExampleStore>renders:
key: magic-examplestore
controls
value in local storage:
no value in db
source
the source for this page is in the example directory and gets built and published to github using @magic/core