persisty 0.0.17

Creator: railscoder56

Last updated:

Add to Cart

Description:

persisty 0.0.17

Persisty - a better persistence Layer for Python
The objective of this project is to provide a resource oriented approach
accommodating both security and caching rich enough to handle most use
cases while still being independant of the underlying persistence
mechanism.
Using Servey to provide access via
REST and GraphQL in either a hosted environment or AWS lambda
environemnt, the project includes out of the box support for both
SQL (via SQLAlchemy) and Dynamodb.
Concepts
Stored Items
Stored items are marked by the stored decorator.
This decorator is similar to dataclass, and allows specifying attributes,
keys, schemas, and indexes.
Stores
A Store provides a unified interface for
interacting with stored items. StoreMeta contains
info on what exactly a store supports
Standard Actions are:

create an item
read and item given its key
update an item
delete and item given its key
search for items given filter and sort criteria
count items given filter criteria
read_batch read a batch of items given a list of keys
edit_batch execute a batch of edits (create, update, delete operations)

Keys
Each item within a store has a string key, derived from the item. (Possibly based on
one or more of it's attributes) A KeyConfig
controls this process
Attributes
Stored items have Attributes associated with them, similar
to columns in a relational database. Attributes can have generators associated with
them.
SearchFilters
Search operations can have SearchFilters
These can be natively supported (Converted to SQL or dynamodb query / scan criteria)
or run locally in python.
Auto User Interfaces
Since this is built on top of OpenAPI, user interface options supplied by Ewey
Examples
The messenger Example App demonstrates a step by step build of an
application with security and business logic.
Future Ideas


REDIS Storage


Elastic Search Storage


Remote HTTP Storage


A user app with support for OIDC, SAML and SCIM


A Rate Limiting app / Rate Limit Access Control


An Event Bridge Project (Backed by AWS Event bridge in AWS, or celery in other environments)


A Distributed Lock


An explicit custom index (Spatial RTree)


A Z order index


Installing local development dependencies
python setup.py install easy_install "persisty[all]"

Release Procedure

The typical process here is:

Create a PR with changes. Merge these to main (The Quality workflows make sure that your PR
meets the styling, linting, and code coverage standards).
New releases created in github are automatically uploaded to pypi

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.