Metadata-Version: 2.1
Name: innoldb
Version: 1.0.14
Summary: a ORM model for AWS QLDB
Home-page: https://innolab-coverage.makpar-innovation.net
Author: Makpar Innovation Lab
Author-email: gmoore@makpar.com
License: GNU GPL v3
Project-URL: Documentation, https://makpar-innovation-laboratory.github.io/innoldb/
Project-URL: Source, https://github.com/Makpar-Innovation-Laboratory/innoldb
Keywords: aws,qldb,quantum-ledger-database,orm
Platform: any
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: jsonconversion (>=0.2.13)
Requires-Dist: pyqldb (>=3.2.2)
Requires-Dist: python-dotenv (>=0.19.2)

# makpar-innolab

## innoldb

A simple [Object-Relation-Mapping](https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping) for a serverless [AWS Quantum Ledger Database](https://docs.aws.amazon.com/qldb/latest/developerguide/what-is.html) backend, and a command line utility for querying tables on those ledgers.

**NOTE**: The user or process using this library must have an [IAM policy that allows access to QLDB](https://docs.aws.amazon.com/qldb/latest/developerguide/security-iam.html).


### ORM

The idea behind the *ORM* is to map document fields to native Python object attributes, so that document values can be accessed by traversing the object property tree.

**CRUD OPERATIONS**

```python
from innoldb.qldb import Document

# Create a document on `my_table` table.
document = Document('my_table')
document.field = {
  'nested_data': {
    'array': ['colllection', 'of', 'things']
  }
}
document.save()
```

```python
from innoldb.qldb import Document

# Load a document from `my_table` table.
document = Document('my_table', id="123456")
for val in document.field.nested_data.array:
  print(val)
```

**Queries**
```python
from innoldb.qldb import Query

query = Query('my-table').find_by(field_name='field value')
for document in query:
  print(f'Document({document.id}).field_name = {document.field_name}')
```

### CLI

**CRUD Operations**
```shell
innoldb --table your-table --insert col1=val1 col2=val2 ...
innoldb --table your-table --id 123 --update col1=newval1 col2=newval2
```

**Queries**
```shell
innoldb --table your-table --find column=this
```

### Read The Docs

- [innolqb documentation](https://makpar-innovation-laboratory.github.io/innoldb/)

### Code Quality

[![DeepSource](https://deepsource.io/gh/Makpar-Innovation-Laboratory/innoldb.svg/?label=active+issues&show_trend=true&token=0yUpU0SKBmqEg7qNHU2C65C6)](https://deepsource.io/gh/Makpar-Innovation-Laboratory/innoldb/?ref=repository-badge)
[![DeepSource](https://deepsource.io/gh/Makpar-Innovation-Laboratory/innoldb.svg/?label=resolved+issues&show_trend=true&token=0yUpU0SKBmqEg7qNHU2C65C6)](https://deepsource.io/gh/Makpar-Innovation-Laboratory/innoldb/?ref=repository-badge)


