Skip to content

About

🦅 A clean async-first Python library for automating CRUD operations and generating dynamic, filterable REST API endpoints

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

 A horizontal tech-noir banner for the 'Anisodactyl' library. The design features a dark, textured background composed of a grid of muted grey symbols that resemble futuristic or alien hieroglyphics. At the center, two large, minimalist white icons depict an artistic representation of anisodactyl bird footprints. A metaphorical nod to 'Crow’s Foot' database notation, where the hallux represents a parent table and the forward digits represent child relations. Below the icons, the word 'Anisodactyl' is rendered in a custom, geometric 'Modern Hieroglyphic' script, bridging the gap between ancient record-keeping and modern relational database architecture

PyPI version

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.

Installation

pip install anisodactyl

Anisodactyl Foot Prints

👀 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
Loading

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.


Anisodactyl Foot Prints

📚 Notes

Query Parameter Conventions

// ?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 %5B and %5D which makes URLs ugly and unreadable.

// ?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.


Anisodactyl Foot Prints

About

🦅 A clean async-first Python library for automating CRUD operations and generating dynamic, filterable REST API endpoints

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages