@amag-ch/sap_cap_common_objectstore

2.3.3 • Public • Published

npm version npm downloads

NodeJS library to communicate with an objectstore

Table of Contents

Features

  • Fully integrated in CAP as a Service
  • Support S3 objectstore and local objectstore for development testings
  • Autodeletion if corresponding entity entry is been deleted (Entity which uses File)
  • Autohandling streaming, if content is requested
  • Testfiles possible
  • Lazy deletion of objects and only executed, if transaction is successfull
  • Auto configuration with cds plugin feature

Installing

Using npm:

$ npm install @amag-ch/sap_cap_common_objectstore

Using yarn:

$ yarn add @amag-ch/sap_cap_common_objectstore

Configuration

{
    "cds": {
        "requires": {
            "objectstore": {
                "impl": "@amag-ch/sap_cap_common_objectstore",
                "kind": "objectstore"
            }
        }
    }
}

The name and kind must be named objectstore, otherwise CAP cannot inject the credentials from environment

Variant with local objectstore for development testings

{
    "cds": {
        "requires": {
            "objectstore": {
                "impl": "@amag-ch/sap_cap_common_objectstore",
                "kind": "local-objectstore",
                "[production]": {
                    "kind": "objectstore",
                }
            }
        }
    }
}

The local objectstore is saved in folder ~/.cds-objectstore

Standard configuration (cds-plugin)

{
    "cds": {
        "requires": {
            "objectstore": {
                "impl": "@amag-ch/sap_cap_common_objectstore",
                "kind": "local-objectstore",
                "[production]": {
                    "kind": "objectstore"
                }
            }
        }
    }
}

Implementation

Database Schema

using {amag.common.objectstore.File as File} from '@amag-ch/sap_cap_common_objectstore';

entity MyEntity {
    key ID      : UUID;
        file    : File
}

File is definied as Composition. Means if entry of MyEntity is been deleted, also the connected File would be deleted. File is per default defined as attachment (@Core.ContentDisposition.Type: 'attachment'), but could be overwriten with own annotations.

Service for add or read files

const objectstore = await cds.connect.to('objectstore')

const ID = await objectstore.create('Any File Content', { filename: 'Testfile.txt', contentType: 'text/plain' })

const file = await objectstore.read(ID)

console.log(file.modifiedAt)

const stream = await objectstore.readContent(ID)

Testing

Create a folder (e.g. test/objectstore) with all needed files named by ID, which is also used in test/data/amag.common.objectstore-Files.csv.

With cds-plugin mode this folder is automatically registered.

Otherwise add file test/init.js with following code snippet to register your folder.

module.exports = async () => {
    require('@amag-ch/sap_cap_common_objectstore').testing.register(`${__dirname}/objectstore`)
}

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i @amag-ch/sap_cap_common_objectstore

Weekly Downloads

66

Version

2.3.3

License

MIT

Unpacked Size

28.9 kB

Total Files

17

Last publish

Collaborators

  • thju-amag-ch
  • integration-amag-ch