@capgo/capacitor-data-storage-sqlite
v8.0.1
Published
SQLite Storage of key/value strings pair
Downloads
2,050
Maintainers
Readme
Why Data Storage SQLite?
A maintained, community-driven plugin providing simple key-value storage backed by SQLite. Originally created by @jepiqueau and now maintained by Capgo:
- Simple API - Easy key-value storage interface for string data
- Cross-platform - Works on iOS, Android, Electron, and Web (IndexedDB)
- SQLite backing - Reliable, encrypted storage on native platforms
- Import/Export - JSON import/export for data migration
- Multi-table support - Organize data across multiple tables
Perfect for apps needing simple, reliable local storage without complex SQL queries.
Maintainers
| Maintainer | GitHub | Social | | ----------------- | ----------------------------------------- | ------ | | Martin Donadieu | riderx | | | Quéau Jean Pierre | jepiqueau | |
Browser Support
The plugin follows the guidelines from the Capacitor Team,
meaning that it will not work in IE11 without additional JavaScript transformations, e.g. with Babel.
Documentation
The most complete doc is available here: https://capgo.app/docs/plugins/data-storage-sqlite/
Installation
npm install --save @capgo/capacitor-data-storage-sqlite
npx cap syncOn iOS, no further steps are needed.
On Android, no further steps are needed.
On Web,
npm install --save localforage- On Electron
npm install --save @capacitor-community/electron
npx cap add @capacitor-community/electronGo to the Electron folder of your application
cd electron
npm install --save sqlite3
npm install --save-dev @types/sqlite3
npm run build
cd ..
npx cap sync @capacitor-community/electronThen build YOUR_APPLICATION
npm run build
npx cap copy
npx cap copy @capacitor-community/electron
npx cap open ios
npx cap open android
npx cap open @capacitor-community/electron
ionic serveConfiguration
No configuration required for this plugin
Supported methods
| Name | Android | iOS | Electron | Web | | :--------------------------- | :------ | :-- | :------- | :-- | | openStore (non-encrypted DB) | ✅ | ✅ | ✅ | ✅ | | openStore (encrypted DB) | ✅ | ✅ | ❌ | ❌ | | closeStore | ✅ | ✅ | ✅ | ❌ | | isStoreOpen | ✅ | ✅ | ✅ | ❌ | | isStoreExists | ✅ | ✅ | ✅ | ❌ | | deleteStore | ✅ | ✅ | ✅ | ❌ | | setTable | ✅ | ✅ | ✅ | ✅ | | set | ✅ | ✅ | ✅ | ✅ | | get | ✅ | ✅ | ✅ | ✅ | | iskey | ✅ | ✅ | ✅ | ✅ | | keys | ✅ | ✅ | ✅ | ✅ | | values | ✅ | ✅ | ✅ | ✅ | | filtervalues | ✅ | ✅ | ✅ | ✅ | | keysvalues | ✅ | ✅ | ✅ | ✅ | | remove | ✅ | ✅ | ✅ | ✅ | | clear | ✅ | ✅ | ✅ | ✅ | | isTable | ✅ | ✅ | ✅ | ✅ | | tables | ✅ | ✅ | ✅ | ✅ | | deleteTable | ✅ | ✅ | ✅ | ❌ | | isJsonValid | ✅ | ✅ | ✅ | ✅ | | importFromJson | ✅ | ✅ | ✅ | ✅ | | exportToJson | ✅ | ✅ | ✅ | ✅ |
Documentation
Applications demonstrating the use of the plugin
Ionic/Angular
Ionic/React
React
Ionic/Vue
Vue
Usage
Dependencies
The IOS & Android code use SQLCipher allowing for database encryption.
The Android code is now based on androidx.sqlite. The database is not closed anymore after each transaction for performance improvement.
You must manage the close of the database before opening a new database.
The Web code use localforage package to store the datastore in the Browser.
The Electron code use sqlite3package
Contributors ✨
Thanks goes to these wonderful people (emoji key):
openStore(...)closeStore(...)isStoreOpen(...)isStoreExists(...)deleteStore(...)setTable(...)set(...)get(...)remove(...)clear()iskey(...)keys()values()filtervalues(...)keysvalues()isTable(...)tables()deleteTable(...)importFromJson(...)isJsonValid(...)exportToJson()getPluginVersion()- Interfaces
openStore(...)
openStore(options: capOpenStorageOptions) => Promise<void>Open a store
| Param | Type | Description |
| ------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------ |
| options | capOpenStorageOptions | : capOpenStorageOptions |
Since: 0.0.1
closeStore(...)
closeStore(options: capStorageOptions) => Promise<void>Close the Store
| Param | Type | Description |
| ------------- | --------------------------------------------------------------- | ---------------------------------------------------- |
| options | capStorageOptions | : capStorageOptions |
Since: 3.0.0
isStoreOpen(...)
isStoreOpen(options: capStorageOptions) => Promise<capDataStorageResult>Check if the Store is opened
| Param | Type | Description |
| ------------- | --------------------------------------------------------------- | ---------------------------------------------------- |
| options | capStorageOptions | : capStorageOptions |
Returns: Promise<capDataStorageResult>
Since: 3.0.0
isStoreExists(...)
isStoreExists(options: capStorageOptions) => Promise<capDataStorageResult>Check if the Store exists
| Param | Type | Description |
| ------------- | --------------------------------------------------------------- | ---------------------------------------------------- |
| options | capStorageOptions | : capStorageOptions |
Returns: Promise<capDataStorageResult>
Since: 3.0.0
deleteStore(...)
deleteStore(options: capOpenStorageOptions) => Promise<void>Delete a store
| Param | Type | Description |
| ------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------ |
| options | capOpenStorageOptions | : capOpenStorageOptions |
Since: 0.0.1
setTable(...)
setTable(options: capTableStorageOptions) => Promise<void>Set or Add a table to an existing store
| Param | Type | Description |
| ------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------- |
| options | capTableStorageOptions | : capTableStorageOptions |
Since: 0.0.1
set(...)
set(options: capDataStorageOptions) => Promise<void>Store a data with given key and value
| Param | Type | Description |
| ------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------ |
| options | capDataStorageOptions | : capDataStorageOptions |
Since: 0.0.1
get(...)
get(options: capDataStorageOptions) => Promise<capValueResult>Retrieve a data value for a given data key
| Param | Type | Description |
| ------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------ |
| options | capDataStorageOptions | : capDataStorageOptions |
Returns: Promise<capValueResult>
Since: 0.0.1
remove(...)
remove(options: capDataStorageOptions) => Promise<void>Remove a data with given key
| Param | Type | Description |
| ------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------ |
| options | capDataStorageOptions | : capDataStorageOptions |
Since: 0.0.1
clear()
clear() => Promise<void>Clear the Data Store (delete all keys)
Since: 0.0.1
iskey(...)
iskey(options: capDataStorageOptions) => Promise<capDataStorageResult>Check if a data key exists
| Param | Type | Description |
| ------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------ |
| options | capDataStorageOptions | : capDataStorageOptions |
Returns: Promise<capDataStorageResult>
Since: 0.0.1
keys()
keys() => Promise<capKeysResult>Get the data key list
Returns: Promise<capKeysResult>
Since: 0.0.1
values()
values() => Promise<capValuesResult>Get the data value list
Returns: Promise<capValuesResult>
Since: 0.0.1
filtervalues(...)
filtervalues(options: capFilterStorageOptions) => Promise<capValuesResult>Get the data value list for filter keys
| Param | Type | Description |
| ------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| options | capFilterStorageOptions | : capFilterStorageOptions |
Returns: Promise<capValuesResult>
Since: 2.4.2
keysvalues()
keysvalues() => Promise<capKeysValuesResult>Get the data key/value pair list
Returns: Promise<capKeysValuesResult>
Since: 0.0.1
isTable(...)
isTable(options: capTableStorageOptions) => Promise<capDataStorageResult>Check if a table exists
| Param | Type | Description |
| ------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------- |
| options | capTableStorageOptions | : capTableStorageOptions |
Returns: Promise<capDataStorageResult>
Since: 3.0.0
tables()
tables() => Promise<capTablesResult>Get the table list for the current store
Returns: Promise<capTablesResult>
Since: 3.0.0
deleteTable(...)
deleteTable(options: capTableStorageOptions) => Promise<void>Delete a table
| Param | Type | Description |
| ------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------- |
| options | capTableStorageOptions | : capTableStorageOptions |
Since: 3.0.0
importFromJson(...)
importFromJson(options: capStoreImportOptions) => Promise<capDataStorageChanges>Import a database From a JSON
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| options | capStoreImportOptions |
Returns: Promise<capDataStorageChanges>
Since: 3.2.0
isJsonValid(...)
isJsonValid(options: capStoreImportOptions) => Promise<capDataStorageResult>Check the validity of a JSON Object
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| options | capStoreImportOptions |
Returns: Promise<capDataStorageResult>
Since: 3.2.0
exportToJson()
exportToJson() => Promise<capStoreJson>Export the given database to a JSON Object
Returns: Promise<capStoreJson>
Since: 3.2.0
getPluginVersion()
getPluginVersion() => Promise<{ version: string; }>Get the native Capacitor plugin version
Returns: Promise<{ version: string; }>
Interfaces
capOpenStorageOptions
| Prop | Type | Description |
| --------------- | -------------------- | --------------------------------------------------------------------------- |
| database | string | The storage database name |
| table | string | The storage table name |
| encrypted | boolean | Set to true for database encryption |
| mode | string | * Set the mode for database encryption ["encryption", "secret","newsecret"] |
capStorageOptions
| Prop | Type | Description |
| -------------- | ------------------- | ---------------- |
| database | string | The storage name |
capDataStorageResult
| Prop | Type | Description |
| ------------- | -------------------- | --------------------------------------------- |
| result | boolean | result set to true when successful else false |
| message | string | a returned message |
capTableStorageOptions
| Prop | Type | Description |
| ----------- | ------------------- | ---------------------- |
| table | string | The storage table name |
capDataStorageOptions
| Prop | Type | Description |
| ----------- | ------------------- | ---------------------------- |
| key | string | The data name |
| value | string | The data value when required |
capValueResult
| Prop | Type | Description |
| ----------- | ------------------- | ----------------------------------- |
| value | string | the data value for a given data key |
capKeysResult
| Prop | Type | Description |
| ---------- | --------------------- | ----------------------------- |
| keys | string[] | the data key list as an Array |
capValuesResult
| Prop | Type | Description |
| ------------ | --------------------- | -------------------------------- |
| values | string[] | the data values list as an Array |
capFilterStorageOptions
| Prop | Type | Description |
| ------------ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| filter | string | The filter data for filtering keys ['%filter', 'filter', 'filter%'] for [starts with filter, contains filter, ends with filter] |
capKeysValuesResult
| Prop | Type | Description |
| ---------------- | ------------------ | ------------------------------------------------------------------ |
| keysvalues | any[] | the data keys/values list as an Array of {key:string,value:string} |
capTablesResult
| Prop | Type | Description |
| ------------ | --------------------- | --------------------------- |
| tables | string[] | the tables list as an Array |
capDataStorageChanges
| Prop | Type | Description |
| ------------- | ------------------- | ---------------------------------------------------- |
| changes | number | the number of changes from an importFromJson command |
capStoreImportOptions
| Prop | Type | Description |
| ---------------- | ------------------- | ----------------------------- |
| jsonstring | string | Set the JSON object to import |
capStoreJson
| Prop | Type | Description |
| ------------ | ----------------------------------------------- | --------------------- |
| export | JsonStore | an export JSON object |
JsonStore
| Prop | Type | Description |
| --------------- | ------------------------ | ------------------------------------------------------------ |
| database | string | The database name |
| encrypted | boolean | Set to true (database encryption) / false iOS & Android only |
| tables | JsonTable[] | * Array of Table (JsonTable) |
JsonTable
| Prop | Type | Description |
| ------------ | ------------------------------------ | ------------------------------------------------------------------------------ |
| name | string | The database name |
| values | capDataStorageOptions[] | * Array of Values (capDataStorageOptions) |
This project follows the all-contributors specification. Contributions of any kind welcome!
