Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aaronhuggins/storage-table-document
A library for treating flat storage table row schemes like a document (e.g. Azure Storage Table).
https://github.com/aaronhuggins/storage-table-document
Last synced: about 1 month ago
JSON representation
A library for treating flat storage table row schemes like a document (e.g. Azure Storage Table).
- Host: GitHub
- URL: https://github.com/aaronhuggins/storage-table-document
- Owner: aaronhuggins
- Created: 2020-03-31T21:19:24.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-01-28T22:40:34.000Z (almost 4 years ago)
- Last Synced: 2024-05-01T19:31:02.895Z (7 months ago)
- Language: TypeScript
- Size: 9.77 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# StorageTableDocument
A simple class for dealing with storage table rows as if they were a document.
This is useful for storing and reviving table rows dynamically. It works by making a shallow copy of the input object and then converting it to or from a table row. Deep references are kept, so do not expect a deep clone to take place. This is only a naive implementation. A proxy is returned so that the object can be used to directly get and set properties on its internal shallow copy.
## Usage
Install from NPM and import it.
```javascript
const { StorageTableDocument } = require('storage-table-document')const data = { some: { data: 'here' }, here: 2 }
const document = new StorageTableDocument(data)document.add = 'me'
console.log(data.add) // Expected output: undefined
console.log(document.add) // Expected output: meconst tableRow = document.toRow()
console.log(tableRow) // Expected output: { __jsonKeys: '["some"]', some: '{"data":"here"}', here: 2, add: 'me' }
console.log(StorageTableDocument.toRow(data)) // Expected output: { __jsonKeys: '["some"]', some: '{"data":"here"}', here: 2 }```
## API
### new StorageTableDocument(input: any)
Returns a proxied instance of the StorageTableDocument class and a shallow copy of the input object. Getters and setters on the instance will use the copied object to allow updating data prior to converting to a row or an object. If the input object has a `__jsonKeys` property, the copy will be revived internally.
- **toRow() =>** Returns the copied object as a flattened object with arrays and objects as jsonified strings and property `__jsonKeys`.
- **toObject() =>** Returns the copied object as a revived object using property `__jsonKeys`.### Static Methods
- **toRow(input: any) =>** Returns the input object as a flattened copy with arrays and objects as jsonified strings and property `__jsonKeys`.
- **toObject(input: any) =>** Returns the input object as a revived copy using property `__jsonKeys`.