react-native-expo-raw-sql-migrations
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

react-native-expo-raw-sql-migrations

SQLite migration System to use raw SQL for expo managed react native app. Implemented with React Hooks and TypeScript.

Installation

yarn add react-native-expo-raw-sql-migrations
# or
npm install --save react-native-expo-raw-sql-migrations

Usage

Normal Way

Automatically migrate.

  1. Ready to DB object and migration JSON schema.
  2. Wrap with Provider Component.
  3. Handle to fetch DB with useMigrate custom hook.
// app.tsx
import React from 'react'
import { MigrationProvider, Migration } from "react-native-expo-raw-sql-migrations";
import * as SQLite from "expo-sqlite";
 
// 1) Ready to db and migration.
export const db = SQLite.openDatabase("myApp.db", "1"); // args are dbname, db-version.
export const migrations: Migration[] = [
  {
    name: "202004021800",
    query:
      "CREATE TABLE cycles (id TEXT PRIMARY KEY, startedAt TEXT, endedAt TEXT, createdAt TEXT, updatedAt TEXT)",
  },
  {
    name: "202004022100",
    query:
      "CREATE TABLE kpts (id TEXT PRIMARY KEY, cycleID TEXT, type TEXT, text TEXT, createdAt TEXT, updatedAt TEXT, FOREIGN KEY(cycleID) REFERENCES cycles(id))",
  },
];
 
// 2) Wrap provider
const App = () => {
  return(
    <MigrationProvider db={db} migrations={migrations}>
      { /* children components ... */ }
    </MigrationProvider>
  )
}
 
export default App;
// SomethingComponent.tsx
import React from 'react'
import { useMigrate } from "react-native-expo-raw-sql-migrations";
 
const fetchUser = () => { /* fetch data from db */ }
 
export const SomethingComponent = () => {
  // isFinished as flag will be true after migration.
  const { isFinished } = useMigrate()
 
  React.useEffect(() => {
    // 3) Handle operation for db.
    //    These operation for db should execute after migration.
    if(isFinished){
      fetchUser()
    }
  }, [isFinished, fetchUser])
}
 

Custom Way

If you would like to handle migration logic yourself, pass starts bootstrap handle options to Provider Component. e.g<MigrationProvider options={{ startsBootstrap: false }}>{...}</MigrationProvider>

Used by

This app is used by Keputo - KPT method - Keep/Problem/Try as expo mobile app.

etc

Package Sidebar

Install

npm i react-native-expo-raw-sql-migrations

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

13.3 kB

Total Files

8

Last publish

Collaborators

  • snamiki1212