2.3.3 • Published 5 days ago

@amag-ch/sap_cap_common_objectstore v2.3.3

Weekly downloads
-
License
MIT
Repository
gitlab
Last release
5 days ago

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

2.3.3

5 days ago

2.3.0

11 days ago

2.3.2

11 days ago

2.3.1

11 days ago

2.2.4

11 days ago

2.2.3

3 months ago

2.2.2

3 months ago

2.2.1

3 months ago

2.2.0

4 months ago

2.1.1

4 months ago

2.1.0

4 months ago

2.0.2

6 months ago

2.0.1

10 months ago

1.1.0

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago