Ferreteria/v0.6/sys/Requests

From Woozle Writes Code
< Ferreteria‎ | v0.6‎ | sys
Jump to navigation Jump to search
Ferreteria v0.6: Request subsystems

There are (currently) the following types of request:

  • Requests to a database engine:
    • Admin is for administration operations: backup, restore, user management, etc.
    • Datex is for data operations (Data Exchange)
  • Input requests:

The purpose of engine requests is to allow consolidation of all the pieces needed to perform operations without knowing what engine or connection they will be used on.

Sequence of Events

  • Application defines podlings for [WFe]\boot\caPoinger and App
    • Poinger podling sets AppClass() to return the name of the App podling.
  • Application instantiates the Poinger-podling, which instantiates AppClass() and calls its Go() function.
  • Go() results in the following being called:
    • ReadAppConfig() – read the app's configuration
    • ShowAppConfig() – display the app's configuration, where appropriate
      • CLI apps generally display the app header, with app name and version.
    • ReadUserCommand() – decode/digest any user request (input) data
    • DescribeActions() – show what the app intends to try to do, based on the user input (UserCommand)
    • ExecuteActions() – attempt the actions requested by the user input
  • (in progress)

outdated docs

2025-10-17 this leaves out a lot of context and may be outdated

  • At execution time, something calls InputRq->Go()
  • ...which then calls the Engine object or a helper to do the operation, e.g. Schema->DoImport()
    • ...which is where the thing is actually done, e.g. SQL code is sent to the DB Engine through the Connection.

...but this also happens somewhere:

  • Conn->DoAdminRequest() calls ActionRq\Admin->AskEngine() with itself as the argument.
    • #TODO Both of these functions have been removed or possibly renamed.
  • ActionRq\Admin->AskEngine() does any necessary calculations, then calls the appropriate Engine object or sub-object to do the operation (e.g. Schema->DoExport()).