Releases: ApiLogicServer/ApiLogicServer-src
Security: Global Filters, Permissions
This release provides significant enhancements as described below.
Security
-
Global Filters simplify filters across multiple roles, such as multi-tenant support, hiding secure or soft-deleted rows, or rows outside the users region (etc)
-
Permissions designate which roles have read/update access to classes
-
Debugging Support is provided though sophisticated logging, enabling you to see what filters were applied, and how they affect the SQL select
Logic
The rule engine now support insert parent to create group-by parent rows automatically. There is also a new sample illustrating this feature.
Oracle connectivity support
For Oracle databases, ApiLogicServer create
builds a connection debug aid
Bug fixes
The release fixes:
AI Automation, DevOps
This release is provided on pip
and docker.
AI-Driven Automation
If you don't already have a database, AI-Driven Automation shows how to use ChatGPT to create a database, and execute a complete Agile cycle in 6 minutes:
- Create working software
- Deploy for collaboration
- Iterate
DevOps Automation
Support has been enhanced to minimize errors and effort in editing scripts to create and deploy images. For more information, see DevOps Automation.
Bug Fixes
This release includes an updated version of LogicBank that fixes a delete bug.
Oracle, AI Preview
This release is available both through pip install
and docker. It provides:
-
Oracle Support, as described here
-
** (AI-driven automation (preview)** using ChatGPT, as described here. Create and deploy a micro service, starting just from a natural language description. This realizes the Agile vision of
- Working Software, with instant creation of an executable, customizable project, driving
- Collaboration, with deployment automation
- Iteration, with logic automation
Oracle Support
API Logic Server now runs with Oracle, as described here.
Bug Fix admin.yml for converted table/class names
This release fixes Issue 16, where bad admin.yml was created when table names differ from SQLAlchemy class names. This occurs for singularization, use of under scores, etc.
It is currently released for PyPi; docker release is pending.
Cloud Deployment Automation, Security / Admin App Bug Fixes
Working software - deployed - to engage collaboration / iteration
The key theme of this release how API Logic Server supports the Agile vision of working software - instantly and deployed - to engage collaboration and iteration:
- Working Software Now: APIs and Admin apps created instantly
- Collaboration via Automated Cloud Deployment -- new in this release
- This makes dev previews available in the cloud for UI Developers (via the APIs) and Business Users (via the Admin App)
- Iteration: using rules and Python as required
Click here for more information.
Automated Cloud Deployment
The devops
directory provides scripts for automated cloud deployment, including:
- Containerizing your application
- Adding Security
- Multi-Container Docker Compose
- Azure Deployment Script Automation
The documentation contains Worked Examples, for creating and deploying multi-container applications, with test databases you can use for MySQL and Postgres.
Flexible AuthDB
You can now configure AuthDB
with different database types, and add your own custom user properties.
Docker Databases now include AuthDB
The Docker Test Databases now include AuthDB for MySQL and Postgres. These are used in the worked examples noted above.
Custom 'AuthDB`
The CLI now enables you to designate your own authdb:
-
this enables you to use your own User properties in
Grant
declarations. -
authdb
scripts are created to get you started
For example:
ApiLogicServer add-auth --project_name=. --db_url=mysql+pymysql://root:p@localhost:3306/authdb
meta data api (preview)
Created APIs now include an endpoint in api/customize_api.py
to return meta data:
curl -X GET "http://localhost:5656/metadata?include=attributes"
CORS enhancements
CORS support has been extended in api_logic_server_run.py
with:
flask_app = Flask("API Logic Server", template_folder='ui/templates') # templates to load ui/admin/admin.yaml
CORS(flask_app, resources=[{r"/api/*": {"origins": "*"}}],
allow_headers=["Content-Type", "Authorization", "Access-Control-Allow-Credentials"],supports_credentials=True)
Bug Fixes
Admin App: Favorites, UserKey, Lookups
The Predictive Joins, Lookups not working issue has been resolved. So, for example, the classicmodels
app looks like this:
Internals
The internal source code has been reworked significantly, including documentation enhancements and refactoring (e.g., introduction of metadata.py
.
SQLAlchemy Typing, Docker Python and ODBC
This release is available on Docker and pip. Key enhancements are noted below.
SQLAlchemy Typing - Attributes, Relationships
models.py
creation has been enhanced to take advantage of SQLAlchemy 2 typing improvements:
-
Decimal attributes are typed, complementing SQLAlchemy typing for int, string and date.
-
Relationship typing has been reworked.
These provide improved code completion in your IDE.
To see examples, click here.
In addition, projects now include a simple Python program to explore SQLAlchemy connectivity. To see it for the sample app, click here.
Breaking change: in the past, the parent accessor was named parent
. It is now the name of the parent class. See Department
in the sample database.
Docker Python and ODBC versions
Docker support has been upgraded:
- Python version: now 3.11.4
- ODBC Version: now version 18
Optimistic Locking, Dependencies Upgrade
This is a major new release, available via pip
and docker.
Optimistic Locking
Optimistic Locking enables you to optionally ensure your API rejects update attempts for rows that have been altered by other users since read.
Upgrade safrs, SQLAlchemy and Flask
A significant upgrade to dependencies:
- safrs>=3.1.0
- SQLAlchemy==2.0.15
- Flask==2.3.2
Source moved to ApiLogicServer
This is the last release of API Logic Server on this git account. The project source is now stored here. This does not affect user install options (pip
, docker installs are unchanged).
The old source is available here. Please do not use this source.
Also, note that the source tree has changed, and is reflected in the new dev install procedure.