Futilities/v0.6/clade/Sys/dba/InReq

From Woozle Writes Code
< Futilities‎ | v0.6‎ | clade‎ | Sys‎ | dba
Jump to navigation Jump to search
clade: Sys\dba\InReq
Clade Family

[WFe]RqActor [t]
(base)InReq

InReq

DoExport
DoImport
DoList
DoSetup
DoTest
SetFile
SetFolder
Value

Clade Aliases
Alias Clade
Array* [i] [WFe]Sys\Data\Things\Array
Base* [c,i] \InReq
DbStuff* [i,t] Sys\dba\InReq\infmts\DbStuff
FilePaths* [c] [WFe]Sys\Data\tplts\FileName\Config
Kiosk* [e] Sys\dba\Kiosk
InData* [t] Sys\dba\InRqData
QObj* [c,i] [WFe]Data\Mem\QVar\Obj
QStr* [i] [WFe]Data\Mem\QVar\Str
Self* [i] Sys\dba\InReq
Subpages

About

  • Purpose: base class for DBA Action-classes

Each object encapsulates a given input (request) term. Podling-clades will implement actions and provide functions to access needed values from the input, which is encapsulated by a cInRqData object which can be retrieved from function OAUserInput().

To make use of additional user arguments (after the first), InputRq podlings (aka InReq podlings) can implement function ParseInputArgs(array $ar).

Doing Stuff

  • To access input arguments, get an appropriate cInRqData object:
    • $this->OAUserInput() returns the raw input value strings (split but not parsed), one element for each term in the user input

History

  • 2024-10-30 started
  • 2025-01-28 renamed Actor -> InReq
  • 2025-02-02 added SchemaTrait
  • 2025-09-21 moved all the New*Request() functions to respective [WFe]Sys\Data\reqs\Engine\ActionRq\Admin\dbase\EngDb* traits
    • ...or maybe in some cases [WFe]Sys\Data\reqs\Engine\ActionRq\Admin\ToSchema\EngSc*; still sorting this out as of 2025-09-25.
  • 2025-09-25 reparenting all Do* clades to their respective [WFe]Sys\Data\reqs\Engine\ActionRq\Admin\ToSchema\EngSc* clades
    • ...and moving most of the code into a trait

Code

interface iInReq extends BaseIface, DbStuffIface {
    // OUTPUT
    function ListHosts() : string;
}
trait tInReq {
    use DbStuffTrait; // 2025-10-11 needed for QOFData()
    use InDataTrait;  // 2025-09-25 might create a conflict

    // ++ OBJECTS: requests ++ //

    protected function QOSchemaMeta() : QObjIface {
        // check to see if we *can* get a Schema object
        $of = FilePaths::Me()->ImportFoNode();
        $oStat = $of->IndexIt();
        echo $oStat->RenderMessages();  // any messages, error or otherwise
        if ($oStat->GetOkay()) {
            $sScSlug = $this->QSSchema()->GetIt();
            $osSchNode = $of->FindSchema($sScSlug); // TODO: possibly this should go in aux\has\tSchema
        } else {
            $osSchNode = QObjClass::AsNew();
        }
        return $osSchNode;
    }

    // -- OBJECTS -- //
    // ++ INPUTS: processing ++ //

    // CEMENT
    protected function ParseInputArgs(array $ar) {
        $nXArgs = count($ar);
        if ($nXArgs > 0) {
            $this->AmHere('TODO 2025-10-04: interpret optional additional arguments');
        }
    }

    protected function SaveAsEngConnName(string $s) {
        $this->OAUserInput()->QDbConnSlug()->SetIt($s); // 2025-10-08 Does this work? (Fix it, if not.)
    }

    // ++ INPUTS: parsed/stored ++ //

    protected function QDbConnSlug() : QStrIface {
        return $this->OAUserInput()->QDbConnSlug();
    }
    protected function QSchemaSlug() : QStrIface {
        return $this->OAUserInput()->QSchemaSlug();
    }

    // -- INPUT -- //
}