npm.io
2.0.2 • Published 3 years ago

ngx-simple-indexeddb

Licence
ISC
Version
2.0.2
Deps
1
Size
263 kB
Vulns
0
Weekly
0

NGX-SIMPLE-INDEXEDDB

This library aims to give you one better way to implement IndexedDB in Angular and more easy

Version 2.0.2

  • Was optimized code
  • Added new features
    • Now you can create database after initialize
    • Now you can export database or just one table

Install

npm install ngx-simple-indexeddb

Setup

Step 1 Add the module in your application inside on imports

....
import { NgxSimpleIndexeddbModule } from  'ngx-simple-indexeddb';
....

const databases = [
  {
    dbName: 'BD1', 
    dbVersion: 5,
    dbStoresMetaData: [{
      store: 'languages',
      storeConfig: { 
        autoIncrement: false 
      },
      storeIndexes: [
        { name: 'name', keyPath: 'name', options: { unique: false } }
      ]
    }, {
      store: 'companies',
      storeConfig: { 
        autoIncrement: true 
      },
      storeIndexes: [
        { name: 'name', keyPath: 'name', options: { unique: true } },
        { name: 'antique', keyPath: 'antique', options: { unique: true } },
      ]
    }]
  }
];


@NgModule({
	declarations: [
	...
	],
	imports: [
		...,
		NgxSimpleIndexeddbModule.forRoot(databases),
		...
	]
})
export  class  AppModule { }

Step 2

  • Call service when you need to use it
  • Inject in constructor
import { NgxSimpleIndexeddbService } from  'ngx-simple-indexeddb';

....

constructor(
	private _sIDB: NgxSimpleIndexeddbService
) { }

...

ngOnInit(): void {
	/*This subscription listen events like save, update, delete, delete store, delete DB, you can apply your logic inside the this block subscription*/
	this._sIDB.eventsIndexedObs.subscribe(res => console.log(res));
}

Step 3 Execute operation needed

addItems
Attribute Type Default Description Required
database string Name of Database true
storeName string Name of Object Store true
data any Data to save true
  • Create record(s) with autoincrement true
this._sIDB.addRecords('BD1', 'companies', {name: 'AWS', antique: 25})
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
  • Create record(s) with autoincrement false (is necessary add to each item pk attribute)
//With pk
const  data = [
	{pk: 1, name:  'Java'}, 
	{pk: 2, name:  'Dart'},
	{pk: 3, name:  'C#'}
];
this._sIDB.addItems('BD1', 'languages', data)
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
getItem
Attribute Type Default Description Required
database string Name of Database true
storeName string Name of Object Store true
key `string number` Key object to find
indexName string Key Name index false
  • Get record without index
this._sIDB.getRecord('BD1', 2)
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
  • Get record with index
this._sIDB.getItem('BD1', 'languages', 'AWS' 'name')
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
getRecords
Attribute Type Default Description Required
database string Name of Database true
storeName string Name of Object Store true
withKeys boolean false If you set this attribute in true, the response of query will return the primary key of each object and value false
  • Get list records without primaryKey
this._sIDB.getRecords('BD1', 'languages')
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
  • Get list records with primaryKey
this._sIDB.getRecords('BD1', 'languages', true)
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
updateRecord
Attribute Type Default Description Required
database string Name of Database true
storeName string Name of Object Store true
key `string number` Key object to find
newValue any Object to save true
  • Update record
const data = {pk: 3, name: 'Rust'};
this._sIDB.updateRecord('BD1', 'languages', 3, data)
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
deleteRecord
Attribute Type Default Description Required
database string Name of Database true
storeName string Name of Object Store true
key `string number` Key object to delete
  • Delete record
this._sIDB.deleteRecord('BD1', 'languages', 2
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
countRecords
Attribute Type Default Description Required
database string Name of Database true
storeName string Name of Object Store true
  • Delete record
this._sIDB.countRecords('BD1', 'languages')
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
clearObjStore
Attribute Type Default Description Required
database string Name of Database true
storeName string Name of Object Store true
  • Delete object store
this._sIDB.clearObjStore('BD1', 'languages')
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
deleteObjStore
Attribute Type Default Description Required
database string Name of Database true
storeName string Name of Object Store true
  • Delete object store
this._sIDB.deleteObjStore('BD1', 'companies')
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
removeDB
Attribute Type Default Description Required
database string Name of Database true
  • Remove database
this._sIDB.removeDB(database)
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
addDatabase
Attribute Type Default Description Required
database IDBSchema Schema of new database true
  • Create database
const newDatabase = {
  dbName: 'BD2', 
  dbVersion: 5,
  dbStoresMetaData: [{
    store: 'cars',
    storeConfig: { 
      autoIncrement: true 
    },
    storeIndexes: [
      { name: 'name', keyPath: 'name', options: { unique: false } }
    ]
  }]
};

this._sIDB.addDatabase(newDatabase)
    .subscribe({
        next: (data) => console.log(data),  
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });
exportToJSON
Attribute Type Default Description Required
database string Name of database true
storeName string Name of Object Store false
withKeys boolean false If you set this attribute in true, the response of query will return the primary key of each object and value false
  • Export database or table
this._sIDB.exportToJSONDatabase(newDatabase)
    .subscribe({
        next: (data) => console.log(data), //Observable return data exported
        error: (error) => console.error(error),
        complete: () => console.log("Complete")
      });

Catalog Objects and Interfaces

This interface contain the data structure when observable emit data: ResponseStoreIndexedDB

Attribute Type Description Required
event string Emitted event executed true
dbName string Name of database true
storeName string Name of store false
data any Emitted data result of execution false

This class contain the main structure to build database IDBSchema

Attribute Type Description Required
dbName string Name database true
dbVersion number Number version false
dbStoresMetaData Array<StoreMetaDataConfig> Contains config stores true

This class contain the structure of store StoreMetaDataConfig

Attribute Type Description Required
store string Name store true
storeConfig StoreConfig Config store true
storeIndexes Array<IndexObj> Contains indexes of stores false

This interface contain the structure of store StoreConfig

Attribute Type Description Required
keyPath string Name key path false
autoIncrement boolean Set if key is autoincrement true

This interface contain the structure when you needed add to store indexes IndexObj

Attribute Type Description Required
id string Id index true
keyPath string Name of key path true
options OptionsIndex Set options index true

This interface contain the structure of options to each index OptionsIndex

Attribute Type Description Required
unique boolean Set if data is unique true

Keywords