updated readme

This commit is contained in:
Shautvast 2025-10-29 22:50:53 +01:00
parent ddd7bd4472
commit a89b63b95a

View file

@ -17,18 +17,15 @@
- ease of use for CRUD operations, like automatic mapping from sql rows to json - ease of use for CRUD operations, like automatic mapping from sql rows to json
- a simple, yet powerful language - a simple, yet powerful language
- urls are made up of directories and filenames - urls are made up of directories and filenames
- a controller sourcefile is a file with the .ctl extension - a controller sourcefile is a file named web.crud
- likewise: - likewise:
- .svc services - service.crud for services
- .cl service clients (that call other services) - db.crud database access code
- .dao database access code (not objects) - util.crud utilities
- .qc queueconsumers - it is not mandatory to have services. You can put all your logic in a controller.
- .qp queueproducers
- .utl utilities
- there is a strict calling hierarchy. A service cannot call a controller. It can only go 'down'. - there is a strict calling hierarchy. A service cannot call a controller. It can only go 'down'.
- Services can not call other services, because that is the recipe for spaghetti. Refactor your logic, abstract and put lower level code in utilities. - and it can only access functions in its own subtree. Generic code should be put higher up in the tree.
- Utilities are allowed to call other utilities. OMG, spaghetti after all! TBD - Therefore, services cannot call other services, because that is the recipe for spaghetti. Refactor your logic, abstract and put lower level code in utilities.
- Automatic memory management using an arena per call
- openapi support - openapi support
### An interpreter written in Rust. ### An interpreter written in Rust.
@ -59,8 +56,12 @@ And I cherry picked things I like, mostly from rust and python.
- pluggability for middleware?, implement later? - pluggability for middleware?, implement later?
- JWT tokens, I guess - JWT tokens, I guess
## the example in /src: ## the example in /source:
- a very simple api that listens to GET /api/customers{:id} and returns a customer from the database - a very simple api that returns "hello world"
- but it demonstrates the basic concepts
- it starts an axum server
- go to http://localhost:3000/hello
- goal: it listens to GET /api/customers{:id} and returns a customer from the database
## Design ## Design
* heavily inspired by Crafting Interpreters. * heavily inspired by Crafting Interpreters.