One CRUD to rule them all
Project description
Anisodactyl
One CRUD to rule them all.
This tries to solve the following problems:
- Headless CRUD Wrapper - Programmatic and configurable CRUD system for models.
- Automatic CRUD API Endpoints - Create, Get, Get All, Patch Update and Delete REST API Endpoints for any database table.
- Schema Driven URL Sorting and Filtering - URL based sorting and filtering automatically available to all properties listed in schema.
- Swappable URL Conventions - Pick and choose between different URL conventions.
- Nested Database Mutations - Generic CRUD for nested databases. Eliminate N+1 network requests.
👀 Vision
A typical CRUD interfaces db structure in a way where each table is a node:
Parent? --- Current --< Children?
Every table in your interconnected database sits at the center of it's own
relationship graph; optional Parent pointing inwards and optional Children
pointing outwards.
graph TD
c1(
<b>Child 1</b>
Timetable
Appointments
)
c2(
<b>Child 2</b>
Schedule
Designations
)
c3(
<b>Child N</b>
Address
Contacts
)
s(
<b>Self</b>
Staffs,Teachers
Employees,Trainees
Students,etc.
)
p(
<b>Parent</b>
Company
School
Library
Bakery
etc.
)
c1 & c2 & c3 === s === p
The diagram above forms the shape of an anisodactyl "crow foot" - digits (children), hallux (parent), connected through the central tarsometatarsus self.
Current object can be anything. It can be one of the children as well, being able to create any graph like structure imaginable.
📚 Notes
Query Parameter Conventions
JSON API
// ?filter[key_name][operator]=value&[key_name][operator]=value
?filter%5Bkey_name%5D%5Boperator%5D=value&%5Bkey_name%5D%5Boperator%5D=value
but
[and]gets encoded into%5Band%5Dwhich makes URLs ugly and unreadable.
Django REST Framework
// ?post_tag=fiction&comment_count__gt=10
?key_name__operator=value&key_name__operator=value
The python standard due to Django influence.
Anisodactyl
// ?post_tag=fiction&comment_count=gt:10
?key_name=operator:value&key_name=operator:value
// ?fields=name,email
?fields=key1,key2,key3
// ?sort=-name
?sort=-field,field
Super clean, simple and developer centric.
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.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file anisodactyl-0.1.0.tar.gz.
File metadata
- Download URL: anisodactyl-0.1.0.tar.gz
- Upload date:
- Size: 106.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a8aa81d97e92736c52bf6cdff54c58174708460aa570e9c86d5bc33f7439b27
|
|
| MD5 |
7fee01ee43e58fc10aaa649cb48857f5
|
|
| BLAKE2b-256 |
2eae82a6c8aa4ac6c113fedf479603e0d035c59a751903b8080cfe79fb73e647
|
File details
Details for the file anisodactyl-0.1.0-py3-none-any.whl.
File metadata
- Download URL: anisodactyl-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a847108126f1972ea0b4388a97ffc906e17e4fc6c6ff6eeeb7773cfe6fa68ce
|
|
| MD5 |
e0a89ca4738010d5afcec37c66e30fb6
|
|
| BLAKE2b-256 |
cefca3a500afe8e50f1554bdec2a84cfcbcfadaa8b57e34764015c20d73188a9
|