Basic storage driver interface, describing the lifecycle of a storage driver

interface IStorageDriver {
    destroy?: (() => MaybePromise<void>);
    load?: (() => MaybePromise<void>);
    save?: (() => MaybePromise<void>);
    setup?: ((log: Logger) => void);
}

Implemented by

Properties

destroy?: (() => MaybePromise<void>)

Cleanup session and release all used resources.

May be called more than once, handle this with care (or use BaseStorageDriver that handles this for you)

load?: (() => MaybePromise<void>)

Load session from some external storage. Should be used either to load data from file/network/etc to memory, or to open required connections to fetch data on demand

May be called more than once, handle this with care (or use BaseStorageDriver that handles this for you)

save?: (() => MaybePromise<void>)

Save session to some external storage. Should be used to commit pending changes in the session. For example, saving session content to file/network/etc, or committing a database transaction

It is safe to batch all changes and only commit them here, unless stated otherwise in the method description

setup?: ((log: Logger) => void)

Setup the driver, passing the logger instance, in case your driver needs it