Skip to content

Cap-go/capacitor-data-storage-sqlite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Capgo - Instant updates for capacitor


DATA STORAGE SQLITE

@capgo/capacitor-data-storage-sqlite


CAPACITOR 6



Note from the Owner


This Plugin has been transferred to Capgo org after his original creator @jepiqueau decide to retire.
We will forever be thankful for the work he did.


Capacitor Data Storage SQlite Plugin is a custom Native Capacitor plugin providing a key-value permanent store for simple data of type string only to SQLite on IOS, Android and Electron platforms and to IndexDB for the Web platform.

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 sync
  • On 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/electron

Go 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/electron

Then 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 serve

Configuration

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):


Jean Pierre Quéau

đź’»

Matthew Burke

đź“–

Kevin van Schaijk

đź’»

Andy Garbett

đź“–

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!

Retirement message of @jepiqueau -->


I have been dedicated to developing and maintaining this plugin for many years since the inception of Ionic Capacitor. Now, at 73+ years old, and with my MacBook Pro becoming obsolete for running Capacitor 6 for iOS, I have made the decision to cease maintenance of the plugin. If anyone wishes to take ownership of this plugin, they are welcome to do so.


It has been a great honor to be part of this development journey alongside the developer community. I am grateful to see many of you following me on this path and incorporating the plugin into your applications. Your comments and suggestions have motivated me to continuously improve it.


I have made this decision due to several family-related troubles that require my full attention and time. Therefore, I will not be stepping back. Thank you to all of you for your support.


End <--


About

Capacitor Plugin for Data Storage SQLite for IOS and Android

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Contributors 12