@trust0/ridb
v1.5.41
Published
Lightweight db encrypted and secure database wrapper for browser and nodejs.
Readme
RIDB Documentation
For detailed API documentation, please visit the RIDB Documentation.
Installling
In order to install simply run the following command npm:
npm i @trust0/ridb --saveyarn:
yarn add @trust0/ridbUsage
Creating your own database is pretty straight forward.
import {
RIDB,
SchemaFieldType
} from '@trust0/ridb';
(async () => {
const db = new RIDB({
demo: {
version: 0,
primaryKey: 'id',
type: SchemaFieldType.object,
properties: {
id: {
type: SchemaFieldType.string,
maxLength: 60
}
}
}
});
console.log("Starting the database");
await db.start({dbName: "demo"});
console.log("Ok :)");
})()Use with custom storage (IndexDB and InMemory)
import {
RIDB,
SchemaFieldType,
StorageType
} from '@trust0/ridb';
(async () => {
const db = new RIDB({
demo: {
version: 0,
primaryKey: 'id',
type: SchemaFieldType.object,
properties: {
id: {
type: SchemaFieldType.string,
maxLength: 60
}
}
}
});
console.log("Starting the database");
await db.start({dbName: "demo", storage: StorageType.IndexDB //or StorageType.InMemory});
console.log("Ok :)");
})()Extra options for constructor:
- worker: boolean - Use a SharedWorker to offload the database to a shared worker across all tabs and extensions using it. Default is false.
Specification
Storage
A valid storage must extend BaseStorage class here's some example:
export class InMemory<T extends SchemaTypeRecord> extends BaseStorage<T> {
static create<SchemasCreate extends SchemaTypeRecord>(
name: string,
schemas: SchemasCreate,
options: any
): Promise<
BaseStorage<
SchemasCreate
>
> {
throw new Error("Method not implemented.");
}
constructor(name: string, schemas: T, options: any) {
super(name, schemas, options);
}
findDocumentById(collectionName: keyof T, id: string): Promise<Doc<T[keyof T]> | null> {
throw new Error("Method not implemented.");
}
find(collectionName: keyof T, query: QueryType<T[keyof T]>): Promise<Doc<T[keyof T]>[]> {
throw new Error("Method not implemented.");
}
write(op: Operation<T[keyof T]>): Promise<Doc<T[keyof T]>> {
throw new Error("Method not implemented.");
}
count(collectionName: keyof T, query: QueryType<T[keyof T]>): Promise<number> {
throw new Error("Method not implemented.");
}
start(): Promise<void> {
throw new Error("Method not implemented.");
}
close(): Promise<void> {
throw new Error("Method not implemented.");
}
}Plugins
Plugins extend the functionality of the database by hooking into the database lifecycle.
/**
* A simple plugin that overrides the docCreateHook and docRecoverHook methods.
*/
class MySimplePlugin extends BasePlugin {
constructor() {
super();
this.docCreateHook = (
schema,
migration,
docs
) => docs;
this.docRecoverHook = (
schema,
migration,
docs
) => docs;
}
}