Blob store implementation for storing content inside s3 compatible storage Key conceptions:

  • relative path created in format modelName|relativePathFromModelDir to hide real file place from client
  • OS user temp folder used for store temporary content
  • delete operation is forbidden since models must be under version control

Singleton

# new S3BlobStore (storeConfigobject, appInstanceServerApp, sessionInstanceUBSession, optionsobject)

Arguments:

Methods

# doDeletion (attributeUBEntityAttribute, IDnumber, blobInfoBlobStoreItem) instance

Arguments:

# fillResponse (requestBlobStoreRequest, blobInfoBlobStoreItem, reqTHTTPRequest, respTHTTPResponse, preventChangeRespOnErroroptboolean) → boolean instance

Fill HTTP response for getDocument request

Arguments:

# genNewPlacement (attributeUBEntityAttribute, dirtyItemBlobStoreItem, IDnumber) → Object instance

Calculate a relative path, file name and bucket for a new BLOB item

Arguments:

# getContent (requestBlobStoreRequest, blobInfoBlobStoreItem, optionsoptobject) → string | UBMail.TubSendMailAttachKind.Buffer | ArrayBuffer | null instance

Retrieve BLOB content from blob store

Arguments:
  • request: BlobStoreRequest
  • blobInfo: BlobStoreItem

    JSON retrieved from a DB.

  • options: object
    • encodingstring | null

      Possible values: 'bin' 'ascii' 'binary' 'hex' ucs2/ucs-2/utf16le/utf-16le utf8/utf-8 base64 if null will return Buffer, if bin - ArrayBuffer

# getContentFilePath (requestBlobStoreRequest, blobInfoBlobStoreItem) → string instance

Returns full path to the file with BLOB content. For s3 objects returns s3://bucket/path

Arguments:

# getPermanentFileName (blobItemBlobStoreItem, requestoptBlobStoreRequest) → string instance

If item stored in file system - returns full path to file, if in S3 - s3 URL

Return:

In case of item not exists - return empty string ''

Arguments:

# isStoredInS3 (requestoptBlobStoreRequest, blobInfoBlobStoreItem) → boolean instance

Returns true in case item stored in S3 storage

Arguments:

# persist (attributeUBEntityAttribute, IDnumber, dirtyItemBlobStoreItem, newRevisionnumber) → BlobStoreItem | null instance

Move content defined by dirtyItem from temporary to permanent store. TIPS: in v0 (UB<5) if file updated then implementation takes a store from old item. This raise a problem - old store may be in archive state (readonly) So in UB5 we change implementation to use a store defined in the attribute for new items

Return a new attribute content which describe a place of the BLOB in permanent store

Arguments: