Low code API framework based on Dectate and FastAPI
Project description
Aurelix: Low Code API Framework Based on FastAPI, Dectate and SQLAlchemy
Installing
Aurelix requires Python 3.11+
Install full server
$ pip install aurelix[server]
Only install for client library use
$ pip install aurelix
Initializing application
To initialize and application, you can run
$ aurelix init myproject
And start it using
$ cd myproject/
$ alembic revision --autogenerate -m "initial model"
$ alembic upgrade head
$ aurelix run -c app.yaml
Example app
This example shows a bit more of Aurelix capabilities. Detailed documentation is still WIP.
Project directory of this sample app looks like this:
myproject/
`- app.yaml
`- models/
`- mymodel.yaml
`- libs/
`- myviews.py
Contents of app.yaml
:
title: MyApp
databases:
- name: default
url: sqlite:///./database.sqlite
Contents of libs/myviews.py
. Aurelix config can load views and modules from libs/
directory:
from fastapi import Request
async def myview(request: Request):
return {
'hello': 'world'
}
Contents of models/mymodel.yaml
. Automated API creation from model is where the bulk of Aurelix features are:
name: mymodel
storageType:
name: sqlalchemy
database: default
fields:
title:
title: Title
dataType:
type: string
size: 128
required: true
workflowStatus:
title: Workflow Status
dataType:
type: string
size: 64
required: true
indexed: true
views:
extensions:
- '/+custom-view':
method: GET
handler:
function: myviews:myview
stateMachine:
initialState: new
field: workflowStatus
states:
- value: new
label: New
- value: running
label: Processing
- value: completed
label: Completed
- value: failed
label: Failed
- value: terminated
label: Cancelled
transitions:
- trigger: start
label: Start
source: new
dest: running
- trigger: stop
label: Stop
source: running
dest: terminated
- trigger: complete
label: Mark as completed
source: running
dest: completed
- trigger: fail
label: Mark as failed
source: runnning
dest: failed
tags:
- custom tag
Start up the service:
Using docker
$ docker run -v /path/to/myproject:/opt/app -p 8000:8000 -ti --rm docker.io/kagesenshi/aurelix:latest
Using aurelix
command
$ export AURELIX_CONFIG='/path/to/myproject/app.yaml'
$ aurelix run -l 0.0.0.0
Configuration Spec
For more details about app.yaml
spec, checkout pydantic class aurelix.schema:AppSpec
.
For more details about model spec for mymodel.yaml
, check out the Pydantic model in aurelix.schema:ModelSpec
Client Library
Aurelix includes client library for interacting Aurelix server
from aurelix.client import Client
aurelix = Client('http://localhost:8000')
# create object
item = aurelix['mymodel'].create({'title': 'Title 1'})
# update object
item.update({'title': 'Title 2'})
# delete object
item.delete()
Changelog for Aurelix
0.1.2b2 (2023-08-23)
- Added hooks for field and model validation
- allow specifying function name in CodeRefSpec
- added field input/output transfomer hooks
- added alembic support
0.1.2.beta1 (2023-08-22)
- fixed after/before create/update/delete event hooks not triggering
- fixed transform create/update/output transform hooks not overriding correctly
- event hooks and transform hooks are now multi-item and chainable
- fix MANIFEST.in that caused failure to install from pip
0.1.1 (2023-08-21)
- added field level permission filter
- added encrypted-string field
- exclude null from response objects
- fixed startup issue when
swagger_ui_init_oauth
not configured - added
init
cli command to initialize project
0.1 (2023-08-21)
- initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.