0.0.8 • Published 4 years ago

nvm-storage v0.0.8

Weekly downloads
12
License
MIT
Repository
-
Last release
4 years ago

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 ? 'не ' : ''}успешно`
	);
});
0.0.8

4 years ago

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago