Skip to content

Offline Database for use in React Native and Expo

License

Notifications You must be signed in to change notification settings

hasprLLP/haspr-rndb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Haspr Offline Database for React Native and Expo

NPM Version Licence Bundle file size Bundle file size (gzip) NPM Downloads GitHub Workflow Status

This package has been created by Haspr for use in their in-house projects. Others are free to use this package and leave their feedback for improvements

License - Copyright (c) 2022, Haspr. All rights reserved.

HASPR

Installation

Use the package manager yarn or npm to install haspr-rndb.

yarn add haspr-rndb

or

npm install haspr-rndb

Features

  • High Performance VM Storage
  • Offline Storage for instant access
  • CRUD Operations are a breeze
  • Works with Both React Native and Expo

Load Database

In order to use the database, you have to first declare it in your App.js file before the functions for best performance You only have to do this once at the top level of your React Native or Expo App, which will usually be App.js

import HasprDB from 'haspr-rndb'
import React from 'react'
import { View, Text } from 'react-native'

HasprDB() //` Start the Database

export default function App() {
  return (
    <View>
      <Text>Your App Here...</Text>
    </View>
  )
}

Performing CRUD Operations

You can use the build in operations create, read and remove to perform crud operations

1. create()

The create function can be used to create simple strings, Objects, Nested Objects, Arrays, and Booleans. The Create functions can also be used to update values as it creates new values and keeps the existing data intact.

import HasprDB, { create } from 'haspr-rndb'
import React from 'react'
import { View, Text, TouchableOpacity } from 'react-native'

HasprDB() //` Start the Database

export default function App() {
  const saveUser = () => {
    const OTP = 861245
    create('pin', OTP)
    const result = create('user.auth.name', 'The Rock')
    console.log(result)
    // result >>{ user: { auth: { name: "The Rock" } } }
    navigation.navigate('VerifyPin')
  }

  return (
    <View>
      <TouchableOpacity onPress={saveUser}>Save Pin</TouchableOpacity>
    </View>
  )
}

2. read()

The read function can be used to read simple strings, Objects, Nested Objects, Arrays, and Booleans using string path of objects connected with dots, e.g. , one may want to check if user is logged in from an object, read('user.auth.isLogin') if exists will return the value TRUE

import HasprDB, { read } from 'haspr-rndb'
import React from 'react'
import { View, Text, TouchableOpacity } from 'react-native'

HasprDB() //` Start the Database

export default function App() {
  const pin = read('pin')
  console.log(pin)
  // result >> 861245

  const user = read('user.auth')
  console.log(user)
  // result >> { name: "The Rock" }

  return (
    <View>
      <TouchableOpacity onPress={saveUser}>Save Pin</TouchableOpacity>
    </View>
  )
}

3. remove()

The remove function can be used to delete simple strings, Objects, Nested Objects, Arrays, and Booleans using string path of objects connected with dots.

import HasprDB, { remove } from 'haspr-rndb'
import React from 'react'
import { View, Text, TouchableOpacity } from 'react-native'

HasprDB() //` Start the Database

export default function App() {
  // Remove Single Data
  const deletePin = () => remove('pin')

  // Remove Nested Data
  const deleteName = () => remove('user.auth.name')

  // Remove Multiple Data
  const deleteMultiple = () => remove(['user.auth', 'theme'])

  // Clear All Data and Reset DB
  const deleteAllData = () => remove()

  return (
    <View>
      <TouchableOpacity onPress={deletePin}>Delete Pin</TouchableOpacity>
      <TouchableOpacity onPress={deleteName}>Delete Name</TouchableOpacity>
      <TouchableOpacity onPress={deleteMultiple}>Delete Multiple</TouchableOpacity>
      <TouchableOpacity onPress={deleteAllData}>Delete Everything</TouchableOpacity>
    </View>
  )
}

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

MIT

Feedback

If you have any feedback, please reach out to us at [email protected]

🔗 Links

portfolio

facebook

instagram

twitter

linkedin

youtube

pinterest

behance

dribbble

github

Logo

About

Offline Database for use in React Native and Expo

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published