Ferreteria/v0.6/clade/Sys/Data/Engine/schema/Ops/MyMar/@fx/DoExport

From Woozle Writes Code
< Ferreteria‎ | v0.6‎ | clade‎ | Sys‎ | Data‎ | Engine‎ | schema/Ops‎ | MyMar
Revision as of 03:03, 3 December 2025 by Woozle (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

About

Code

as of 2025-12-02:

#
    // NOTE (2025-12-01): This and Ops\MyMar::DoExport() are *both* used.
    public function DoExport(FileIface $ofData) : ActionIface {
        $oScrn = self::Screen();

        #echo $this->ReflectThis()->Report();
        $fsData = $ofData->Ident()->SpecFull();
        $oOper = $this->DbOper();
        $sSchema = $this->SchemaName();

        $ftSpec = $oScrn->GreenIt($fsData);
        $ftName = $oScrn->BoldIt($oScrn->BlueIt($sSchema));
        echo $oScrn->BoldIt(str_repeat('=',40)).CRLF;
        echo "Exporting $ftName to $ftSpec: ".CRLF;

        $ofMPair = MetaClass::FromDataSpec_wSchema($this,$fsData);
        #$ofMPair = MetaClass::FromDataSpec($fsData);
        #echo $ofMeta->DataFile()->ReflectThis()->Report();
        $oaMeta = $ofMPair->InfoFile()->InOut()->OAData();
        $oaMeta->DataFormat('SQL');
        #echo "META (".$oaMeta->ObjectID().") PRESETS 1:".CRLF.$oaMeta->Inspect()->Render().CRLF;
        $ofMPair->SaveStart();

        // ++ OUTPUT FILE: open it for buffering
        $oFile = FileClass::FromSpec($fsData);
        $oExecBuff = new RecvBuffClass($oFile);
        $oAct = $oExecBuff->Open();
        // -- OUTPUT FILE

        $oActBuff = NULL;
        if ($oAct->GetOkay()) {
            #echo $oOper->ReflectThis()->Report();
            $oAct = $oOper->DoExport($sSchema,$oExecBuff);
            $oAct->HandleResults();
            #echo ' ' . ($oAct->GetOkay() ? $oScrn->GreenIt('Done.') : $oScrn->ErrorIt('Error:')) . CRLF;
        } else {
            $sMsg = $oScrn->ErrorIt('Error').': Could not open output buffer.'.CRLF.$oAct->GetStatusText().CRLF;
            $oAct->AddMsgString($sMsg);
        }
        $oActBuff = $oExecBuff->Shut(); // displays final status report and closes the buffer
        $ofMPair->SaveFinish($oAct);
        echo $oAct->RenderMessages();   // should go *after* buffer->Shut() so final message is on same line as earlier ones

        return $oAct;
    }