This application named CluAPI is a generic database interface REST server. It can be used to query, search and modify database data. There is no complex infrastructure inbetween, a direct connection to the database. A mechanism of authentication and authorization exists inbetween REST query and database access. Some predefined database queries can be defined in an batch database record. The batch queries can be defined providing extra rest parameters. That's different to standard database views.
There should be no difference if the database is a SQL or a NoSQL database.
A list of data records should be able to be inserted or updated in one REST API call. May be as transaction or in an atomic matter.
Based on database layer Flynn at https://github.com/tknie/flynn the database is queryed and updated.
- Read, Search, Insert, Update and Delete of data records
- Search by passing database specific queries to be flexible for complex queries
- Large object support of big data
- binary data queries
- image data queries
- video data queries
- Support creating batch jobs for database-specific tasks like SQL scripts or a complex query
For possible detailed information about the Flynn layer, have a look at the API documentation. It can be referenced here: https://godoc.org/github.com/tknie/flynn
The version 1.0.0 is released. It is a stable version used for various projects giving access to audit data stored in the database. It is stable and no problem known. You can download the Docker image at https://hub.docker.com/r/thknie/cluapi or download it in Docker/Podman with
docker pull thknie/cluapiThere are several possibilities to use authentication
- Create a realm file containing user and password
- Use system user and password to authenticate
- Using LDAP password authentication
- Using a SQL query to authenticate using the SQL database
All these configuration are used from https://github.com/tknie/services.
You can use database roles and users authorization restriction if you use database users management. CluAPI provides a query entry role management to obmit user specific queries for read- or write-access. In addition you can define authorization access to some resources like tables or views.
For example in users.yaml you can define read or write restriction for table, views or batch scripts
- all tables and views are restricted using to prefix
- the prefix ^ restrict to batch processing tasks or complex queries
- the prefix < allows read/download file permissions
- the prefix > allows write/upload file permissions
You can define some predefined queries which are generated using the parameters given in an REST request.
Detail documentation about Batch store definition is found here.
Accept: application/json
Authorization: Base <base64>
GET http://localhost:8030/rest/view/Albums/ID,Title,published?limit=0&orderby=published:ASCAccept: application/json
Authorization: Base <base64>
PUT http://localhost:8030/rest/view/Albums/ID,Title,published?limit=0&orderby=published:ASC
{
"Records": [
{
"id": "18",
"title": "Der Ostergruss"
},
}Accept: application/json
Authorization: Base <base64>
PUSH http://localhost:8030/rest/view/Albums/ID,Title,published?limit=0&orderby=published:ASCTo evaluate the REST API look at Swagger Editor with clu REST API informations.
To exchange files into local file system like logs or extra information it is possible to upload or download files from a specific location.
Below a download location is defined which can be referenced using the download path.
fileTransfer:
Admin:
role: xxx
directories:
directory:
- name: download
location: ${HOME}/Downloads
- name: tmp
location: ${CURDIR}/tmp| Feature | Ready-State | Description |
|---|---|---|
| Login database | ✔️ | Draft |
| Query record | ✔️ | Draft |
| Search record | ✔️ | Draft |
| Insert record | ✔️ | Draft |
| Delete record | ✔️ | Draft |
| Load images out of database | ✔️ | Draft |
| Load videos out of database | ✔️ | Draft |
| Load binaries out of database | ✔️ | Draft |
| Insert Large Object (Image, binary or others) | ✔️ | Draft (not recommended if images is to big) |
| Create table | Draft | |
| Insert database | Draft | |
| Work with predefined batch queries | ✔️ | Draft |
| Complex search queries (common to SQL or NonSQL databases) | planned |