0.3.0 • Published 1 year ago

@universal-health-chain/react-native-quick-websql-plugin v0.3.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

logo

React Native Quick WebSQL Plugin

Forked from https://github.com/craftzdog/react-native-quick-websql to solve some problems with Jest and to allow using other packages for web (to be used in Expo).

Jest Error:
node_modules/@craftzdog/pouchdb-adapter-websql-core/src/index.js:2
    import {
    ^^^^^^
    SyntaxError: Cannot use import statement outside a module

To solve this error, it exports the class instead of an instantiated object.

Example:

  • instead of the original
import WebSQLite from "react-native-quick-websql";
const db = WebSQLite.openDatabase('mydb.db')
  • now you can use it as follows
// first import the class
import { SQLitePlugin } from "react-native-quick-websql-plugin";

// then you can check if Platform.OS !== "web" before instantiating the SQLite plugin for react native
const pluginSQLite = new SQLitePlugin()

// now you can open the database
const db = pluginSQLite.openDatabase('mydb.db')

cover

This library provides a WebSQL-compatible API to store data in a react native app, by using a fast JSI implementation of the SQLite driver react-native-quick-sqlite.

Installation

expo install react-native-quick-websql @universal-health-chain/react-native-quick-sqlite

or

npm i react-native-quick-websql @universal-health-chain/react-native-quick-sqlite

or

yarn add react-native-quick-websql @universal-health-chain/react-native-quick-sqlite

and then:

npx pod-install

Usage

See an example project for more detail.

import { SQLitePlugin } from "@universal-health-chain/react-native-quick-sqlite";
// check if Platform.OS !== "web"
const pluginSQLite = new SQLitePlugin() // initializing the class  
const db = pluginSQLite.openDatabase('mydb.db')
db.transaction(
  (txn) => {
    console.log('Running transaction')
    txn.executeSql('DROP TABLE IF EXISTS Users', [])
    txn.executeSql(
      'CREATE TABLE IF NOT EXISTS Users(user_id INTEGER PRIMARY KEY NOT NULL, name VARCHAR(30))',
      []
    )
    txn.executeSql('INSERT INTO Users (name) VALUES (:name)', [
      'nora',
    ])
    txn.executeSql('INSERT INTO Users (name) VALUES (:name)', ['takuya'])
    txn.executeSql('SELECT * FROM `users`', [], function (_tx, res) {
      for (let i = 0; i < (res.rows?.length || 0); ++i) {
        console.log('item:', res.rows?.item(i))
      }
    })
  },
  (e) => {
    console.error(e)
  }
)

Limitations & Debugging

As the library uses JSI for synchronous native methods access, remote debugging (e.g. with Chrome) is no longer possible. Instead, you should use Flipper.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT by Takuya Matsuyama

0.3.0

1 year ago

0.3.2

1 year ago

0.3.1

1 year ago