@trust0/ridb
v0.6.5
Published
Dependency free wasm db encrypted and secure database wrapper for web and node.
Downloads
3,431
Readme
Install
In order to install simply run the following command npm:
npm i @trust0/ridb --save
yarn:
yarn add @trust0/ridb
Usage
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 :)");
})()
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;
}
}