npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@incoqnito.io/healthstorage-odm

v0.0.2

Published

The healthstorage-odm serves the HS storage api. It provides a simple structure to use the interface efficiently and purposefully.

Downloads

3

Readme

HealthStorageODM

The healthstorage-odm serves the HS storage api. It provides a simple structure to use the interface efficiently and purposefully.

Installing

First install node.js.

npm install healthstorage-odm

Importing

// Using ES6 imports
import HealthStorageODM from 'healthstorage-odm';

Overview

Defining a HsClient

It is possible to create multiple HsClient instances for diffrent servers. Creating a new Hsclient works like this:

// By calling constructor
const CLIENT = new HealthStorageODM({
  serverUrl: 'https://your.server.url',
  adapter: 'adapter'
});

// By calling static createClient
const CLIENT = HealthStorageODM.createClient({
  serverUrl: 'https://your.server.url',
  adapter: 'adpater'
});

If there are no parameters set, it will take http://localhost:8080 as a default client server url and hsStorage as default adapter.

The created client returns an instance for further use.

Defining a HsInstance

Defining a HsInstance is realized by calling the define function from created Hsclient. It returns an instance of HsInstance which holds the api functionallity.

Example:

// Create a HsInstance with schema data
const sampleSchema = CLIENT.define({
  title: 'SomeSchema',
  properties: {
    title: {
      type: HealthStorageODM.STRING
    },
    description: {
      type: HealthStorageODM.STRING
    },
    price: {
      type: HealthStorageODM.DOUBLE
    },
    online: {
      type: HealthStorageODM.BOOLEAN
    },
    hits: {
      type: HealthStorageODM.INTEGER
    }
  },
  options: {
    required: [md],
    oId: '1a8a1956-fde7-486f-91b8-ce9a3d9b4be1', // uuid
    id: '5cc6ae3e-bf8f-4be5-b6fb-5de55ca9fd8a' // uuid
  }
})

HsModel

A HsModel is always used for a single item returned in list, create, update etc. It holds the single item information and function to update, lock, delete itself. The properties are dynamically assigned as getter/setter and stored additionally in the _dataValues property of the model.

  // Simple example of HsModel
  HsModel = {
    HsAdapter: HsAdapter {client: {…}},
    _dataValues: {
      id: "", //uuid
      title: "SampleTitle", 
      isCompleted: false, 
      blobRefs: […]
      md: {…}
    },
    id: (...),
    isCompleted: (...),
    lockValue: (...),
    md: (...),
    title: (...),
    get id: ƒ (),
    set id: ƒ (value),
    get isCompleted: ƒ ()
    set isCompleted: ƒ (value),
    get md: ƒ (),
    set md: ƒ (value),
    get title: ƒ (),
    set title: ƒ (value)
  }

HsInstance / HealthStorageODM Functions

Ereaser (during development)

deleteSchemaById(id)

Deletes during development a schema by its identifier.

  // Calling static function in HealthStorageODM
  HealthStorageODM.deleteSchemaById(id)
deleteById(id)

Deletes during development a sdo by its identifier.

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling from HsInstance
  CLIENT.deleteById(id)

  // Otherwise calling from HsModel
  model.destroy()

Schemas (during development)

createSchema()
// Calling static function create schema
HealthStorageODM.createSchema({
  title: 'SampleSchema',
  properties: {
    id: {
      type: HealthStorageODM.STRING
    },
    title: {
      type: HealthStorageODM.STRING
    },
    color: {
      type: HealthStorageODM.STRING
    }
  },
  options: {
    required: ['md']
  }

Sdo

findAll(options)

Finds all entries matched for given options and filters. Info: the HS API throws 500er on filter use

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling findAll
  await CLIENT.findAll({
      orderBy: CLIENT.MD_DATE, // Ordering by provieded meta field tsp
      orderByDirection: CLIENT.ASC, // Sortorder ASC or DESC
      from: "", // ISO-Date string from date
      until: "", // ISO-Date string to date
      pageSize: 5 // Integer value for page sizing,
      pageNum: 1 // define page to show
    })
findById(id)

Finds an entry by its identifier.

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling findById
  CLIENT.findById('5ea6caed-5c0c-4dd2-b46b-709ed0f2618a')
findOne(where)
  var published = COOMING_SOON;
create(data)

Creates new sdo in database.

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling create
  CLIENT.create({
    title: 'Title',
    isCompleted: false
  })
changedSince(id, r)

Checks if an item was changed since specified.

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling from HsInstance
  CLIENT.changedSince('5ea6caed-5c0c-4dd2-b46b-709ed0f2618a', 1) // id, revision

  // Calling from HsModel
  model.changedSince()
updateById(id)

Updates an item by its identifier.

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling update from HsInstance
  CLIENT.update('5ea6caed-5c0c-4dd2-b46b-709ed0f2618a', {
    title: 'New title',
    isCompleted: true 
  }) // id, new data

  // Calling from HsModel
  model.update()
update(where, data)
  var published = COOMING_SOON;
archiveById(id)
  var published = COOMING_SOON;
archive(where)
  var published = COOMING_SOON;
lockById(id)

Create lock value for item.

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling from HsInstance
  CLIENT.lockById('5ea6caed-5c0c-4dd2-b46b-709ed0f2618a')

  // Calling from HsModel
  model.lock()
unlockById(id, lockValue)

Removes a lock value for item.

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling from HsInstance
  CLIENT.unlockById('5ea6caed-5c0c-4dd2-b46b-709ed0f2618a', '8ea6caed-5c0d-4dd2-b46b-709ed0f7818a')

  // Calling from HsModel
  model.unlock()
getLockById(id, lockValue)

Get lock from item by identifier.

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling from HsInstance
  CLIENT.getLockById('5ea6caed-5c0c-4dd2-b46b-709ed0f2618a', '8ea6caed-5c0d-4dd2-b46b-709ed0f7818a')

  // Calling from HsModel
  model.getLock()
isLockedById(id, lockValue)

Check if item is locked by identifier.

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling from HsInstance
  CLIENT.isLockedById('5ea6caed-5c0c-4dd2-b46b-709ed0f2618a', '8ea6caed-5c0d-4dd2-b46b-709ed0f7818a')

  // Calling from HsModel
  model.isLocked()
isLockState(id, lockState)

Check if item exists in lock state by identifier.

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling from HsInstance
  CLIENT.isLockStateById('5ea6caed-5c0c-4dd2-b46b-709ed0f2618a', '8ea6caed-5c0d-4dd2-b46b-709ed0f7818a')

  // Calling from HsModel
  model.isLockState()

Sdo Blobs

createSdoBlob(opts)

This function is part of the ts HsInstance.create function. When a files field is present in the passed sdo object ts HsInstance.create calls ts creatSdoBlob(opts). HsModel returned with extended blobRef information.

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling from HsInstance
  CLIENT.create(opts) {
    if(data.files === undefined && data.files.length <= 0) {
      // create sdo
    } else {
      // create sdo blob
    }
  }
findBlobById(id)

Returns a complete sdoBlob object from the server. It is a multipart/form-data and contains the parts for sdo and files

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling from HsInstance
  CLIENT.findBlobById('5ea6caed-5c0c-4dd2-b46b-709ed0f2618a')
updateSdoBlob(opts)

This function is part of the ts HsInstance.update function. When a blobRef field is present in the passed sdo object the ts HsInstance.update calls ts editSdoBlob(opts). An updated HsModel returned.

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling from HsInstance
  CLIENT.update(opts) {
    if(data.files === undefined && data.files.length <= 0) {
      // create sdo
    } else {
      // create sdo blob
    }
  }

  // calling from model 
  model.update() // same procedure but looking for blobRef
getSdoBlobFile(id, blobId)

Returns the uploaded blob from sdo blob

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling from HsInstance (sdoId, blobId)
  CLIENT.getSdoBlobFile('5ea6caed-5c0c-4dd2-b46b-709ed0f2618a', '5ea6caed-5c0c-4dd2-b46b-709ed0f2618a') { }

  // calling from model 
  model.getBlobFile()

Sdo Collections

bulkCreate(bulkList)
  var published = COOMING_SOON;
bulkUpdate(bulkList)

Updates a given sdo list (bulk operation)

  // Define client...
  const CLIENT = HealthStorageODM.createClient() // no options using local address

  // Calling from HsInstance
  CLIENT.bulkUpdate(bulkList)

HsDebugger

The HsDebugger is buil at instance creation. It can be accessed by e.g. ts CLIENT.HsDebugger. It brings up some debug functions.

logConsole(key, value, stringified = false)

Logs a key value into the console.

  // Log to console without stringified value
  CLIENT.HsDebugger.logConsole("Key", "Value")

  // Log to console with stringified value
  CLIENT.HsDebugger.logConsole("Key", "Value", true)

logTable(mixed)

Logs a key value into the console as table format.

  // Log to console as table
  CLIENT.HsDebugger.logTable{'test': 'value'})

HS-CLI

  var published = COOMING_SOON;

Installing Sample App

Install npm-packages

Open console in healthstorage-odm package and move to ./src/example/todo. Type in npm install and install dependencies.

Run app

Important: First install all dependencies.

Open console healthstorage-odem package and move to ./src/example/todo. Type in npm start to run webpack. After successfully created the files move to the link shown in console (eg. http://localhost:8080, http://localhost:8081, http://localhost:8082, ...)

Enjoy.

Test cases

Under the folder ./src/__tests__/ are several tests stored. Run npm test in root directory of the project an see the tests running.