@incoqnito.io/healthstorage-odm

0.0.2 • Public • Published

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.

Readme

Keywords

none

Package Sidebar

Install

npm i @incoqnito.io/healthstorage-odm

Weekly Downloads

0

Version

0.0.2

License

ISC

Unpacked Size

171 kB

Total Files

37

Last publish

Collaborators

  • dragonraider5
  • kodekid
  • misago
  • incoqnito