Skip to main content

createStore()

Create the object relationship store.

Basic usage

import { createStore, createRelationalObject } from "@jjmyers/object-relationship-store";

const user = createRelationalObject("user");
const image = createRelationalObject("image");

const store = createStore({
relationalCreators: [
user,
image,
],
identifier: {
user: o => "username" in o,
image: o => "uri" in o,
}
});

Properties

relationalCreators

Expects an Array of ORS.RelationalCreator objects.

createStore({
relationalCreators: [
user,
image,
]
});

identifier

Expects an object where the keys are the names of the ORS.RelationalCreator objects and value is an identifier Function that returns a boolean. This Function will be used to identify an object when it is passed into the store.

createStore({
identifier: {
user: object => "username" in object,
image: object => "uri" in object,
}
});

indexes

Expects an array of ORS.RelationalObjectIndex objects

import { createStore, createRelationalObjectIndex } from "@jjmyers/object-relationship-store";

const postFeed = createRelationalObjectIndex("postFeed", [post]);

createStore({
indexes: [
postFeed
]
});

Return values

const store = createStore({
// ...properties
});

store.mutate()
store.mutateWhere()
store.select()
store.selectIndex()
store.destroy()
store.purge()
store.getReferences()
store.getState()
store.restore()
store.save()
store.subscribe()

.mutate(payload)

Push a payload into the store. Can create, update or delete objects in the store

Find out more about store.mutate()

.mutateWhere(selector, callback)

Push a payload into the store. Can create, update or delete objects in the store. The difference here is that it take in a where clause.

.select(selector)

Select data from the store

Find out more about store.select()

.selectIndex(index, options)

Select data from an index in the store

Find out more about store.selectIndex()

.destroy(name)

Delete all objects associated with the name.

All user object in the store will be deleted.

store.destroy("user")

.purge()

Delete all objects in the store.

store.purge()

.getReferences()

Returns all object references

danger

Don't use this method, it will be removed in a future version. It's here just for debugging purposes.

store.getReferences()

.getState()

Returns all the objects in the store

info

Don't use this method, to get data from the store. Use store.select().

store.getState()

.save(callback)

Save the current state of the store.

info

Use store.restore() to restore the saved state.

store.save(currentState => {
// Save currentState to local storage.
})

.restore(savedState)

Restore state from the saved state

info

Use store.save() to get savedState


let savedState = null

store.save(currentState => {
// Save currentState to local storage.
savedState = currentState
})

store.restore(savedState)

.subscribe(listener)

Used to subscribe to changes in the store.

tip

This method was created to help when integrating this library with React's useSyncExternalStore()

function listener() {}
store.subscribe(listener)

API

Properties

PropertyTypeDefaultDescription
relationalCreatorsORS.RelationalCreator[]undefinedAn array of ORS.RelationalCreator objects.
identifierRecord<string, (object) => boolean>undefinedIdentifier function that will be called on objects to determine the type of the object.
indexesORS.RelationalObjectIndex[]undefinedIdentifier function that will be called on objects to determine the type of the object.

Return values

NameDescription
.mutate(payload)Push a payload into the store. Can create, update or delete objects in the store.
.mutateWhere(selector, callback)Push a payload into the store. Can create, update or delete objects in the store. The difference here is that it take in a `where` clause.
.mutateWhere(selector, callback)Push a payload into the store. Can create, update or delete objects in the store. The difference here is that it take in a `where` clause.
.select(selector)Select data from the store.
.selectIndex(index, options)Select data from the store.
.destroy(name)Delete all objects associated with the name.
.purge()Delete all objects in the store.
.getReferences()Returns all object references Don't use this method, it will be removed in a future version.
.getState()Returns all the objects in the store.
.save(callback)Save the current state of the store.
.restore(savedState)Restore state from the saved state.
.subscribe(listener)Used to subscribe to changes in the store.