nvm-storage
TypeScript icon, indicating that this package has built-in type declarations

0.0.8 • Public • Published

# NvmStorage

nvm-storage

Обертка над IndexDb Api, предоставляющая более стандартный интерфейс Установка

npm install nvm-storage --save

Интеграция

import { IDBWrapperService } from 'nvm-storage';
 
@Injectable({
    providedIn: 'root'
})
export class StorageService {
    private static readonly DB_NAME: string = 'sample-db';
    public isActive: boolean = false;
 
    constructor(private _db: IDBWrapperService) {}
}

addMigration(migration: (db: IDBDatabase, ev: IDBRequest) => void): void

Регистрирует миграции базы, для поддержания актуальной версии. Регистрация должна производиться до установления соединения.

this._db.addMigration((db: IDBDatabase, ev: IDBRequest) => {
    db.createObjectStore('Entity', { autoIncrement: true });
});
this._db.addMigration((db: IDBDatabase, ev: IDBRequest) => {
    db.createObjectStore('Log', { autoIncrement: true });
});

open(name): Subject

Принимает в качестве параметра имя базы; Открывает соединение с базой и высталяет флаг isActive в true если все прошло успешно. Если версия базы ниже количества зарегистрированных миграций - обновляет базу. Возвращает Subject<boolean> который эмитит значение true/false по завершении соединения.

this._db.open(DB_NAME).subscribe((result: booleean) => {
    this.isActive = true;
    console.log(result ? 'success' : 'fail');
});

insert(obj: IdItem): Observable

Реализует добавление элемента в базу. Все сущности в базе должны реализовывать интерфейс IdItem. Данные добавляются в существующую таблицу по имени класса. В примере это будет таблица 'Entity'

export class Entity implements IdItem {
    constructor(public id: number, public name: string);
}
const item = new Entity(1, 'Иванов Иван Иванович');
this._db.insert(item).subscribe((result: IdItem) => {
    console.log(`объект добавлен успешно с id: ${result.id}`);
});

update(obj: IdItem, key: number): Observable

Реализует обновление элемента в базе

item.name = 'Петров Петр Петрович';
this._db.update(item, 1).subscribe((result: IdItem) => {
    console.log(`объект с id: ${result.id} обновлен: ${result.name}`);
});

select(table: string, query?: IDBKeyRange): Observable<Array>

Выборка из базы

this._db
    .select<Entity>('Entity', IDBKeyRange.bound(1, 20))
    .subscribe((items: Entity[]) => {
        console.log(
            `Найдено элементов в базе с id от 1 до 20: ${items.length} штук`
        );
    });

delete(table: string, key: string): Observable

Реализует удаление из базы.

this._db.delete('Entity', '1').subscribe((result: boolean) => {
    console.log(
        `объект с id: ${result.id} удален ${!result ? 'не ' : ''}успешно`
    );
});

Readme

Keywords

none

Package Sidebar

Install

npm i nvm-storage

Weekly Downloads

3

Version

0.0.8

License

MIT

Unpacked Size

118 kB

Total Files

23

Last publish

Collaborators

  • shark_vik