Ferreteria/v0.6/clade/Sys/Data/Engine/aux/ActionRq/Admin/ToDbConn: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| (One intermediate revision by the same user not shown) | |||
| Line 10: | Line 10: | ||
}} | }} | ||
==About== | ==About== | ||
* ''' | * '''Parallels''': | ||
** {{l/same|ToSchema}} | |||
** <s>{{l/same|ToDbOper}}</s> Removed on {{fmt/date|2025|10|26}} | |||
==Status== | ==Status== | ||
* '''{{fmt/date|2025|10|25}}''' under construction | * '''{{fmt/date|2025|10|25}}''' under construction | ||
* '''{{fmt/date|2025|10|26}}''' complete-ish, but still refactoring because stuff doesn't work yet | * '''{{fmt/date|2025|10|26}}''' complete-ish, but still refactoring because stuff doesn't work yet | ||
==Code== | ==Code== | ||
''as of 2025 | ''as of {{fmt/date|2025|11|10}}'' | ||
{{fmt/php/block|1= | {{fmt/php/block|1= | ||
interface iToDbConn { | interface iToDbConn { | ||
// objects | // objects | ||
function | function QODbOper() : QDbOperIface; | ||
} | } | ||
trait tToDbConn /* implements iToDbConn */ { | trait tToDbConn /* implements iToDbConn */ { | ||
| Line 32: | Line 34: | ||
private $qoOper = NULL; | private $qoOper = NULL; | ||
public function | public function QODbOper() : QDbOperIface { | ||
$qoOper = $this->qoOper; | $qoOper = $this->qoOper; | ||
if (is_null($qoOper)) { | if (is_null($qoOper)) { | ||
| Line 38: | Line 40: | ||
$this->qoOper = $qoOper; | $this->qoOper = $qoOper; | ||
} | } | ||
$qoConn = $this-> | $qoConn = $this->QODbConn(); | ||
$ok = $qoConn->HasIt(); | $ok = $qoConn->HasIt(); | ||
$ | $oItWent = $qoConn->HowItWent(); | ||
$oItWent->SetOkay($ok); | |||
if ($ok) { | if ($ok) { | ||
$oConn = $qoConn->GetIt(); | $oConn = $qoConn->GetIt(); | ||
| Line 46: | Line 49: | ||
$qoOper->SetIt($oOper); | $qoOper->SetIt($oOper); | ||
} | } | ||
$qoOper->HowItWent()->CopyFrom($oItWent); | |||
return $qoOper; | return $qoOper; | ||
} | } | ||
private $qoConn = NULL; | private $qoConn = NULL; | ||
public function QODbConn() : QDbConnIface { | |||
$qoConn = $this->qoConn; | $qoConn = $this->qoConn; | ||
$doFetch = FALSE; | |||
if (is_null($qoConn)) { | if (is_null($qoConn)) { | ||
$qoConn = QDbConnClass::AsNew(); | #$qoConn = QDbConnClass::AsNew(); | ||
$this->qoConn = $qoConn; | #$this->qoConn = $qoConn; | ||
$doFetch = TRUE; | |||
} elseif (!$qoConn->HasIt()) { | |||
$this->AmHere(); | |||
$doFetch = TRUE; | |||
} | } | ||
if ($ | if ($doFetch) { | ||
$qoConn = $this->FetchDBConn(); | $qoConn = $this->FetchDBConn(); | ||
$this->qoConn = $qoConn; | $this->qoConn = $qoConn; | ||
| Line 64: | Line 73: | ||
} | } | ||
private $oDBC=NULL; | private $oDBC=NULL; | ||
// ASSUMES: QODbConn() is successful | |||
protected function ODbConn(?ConnIface $o=NULL) : ConnIface { | protected function ODbConn(?ConnIface $o=NULL) : ConnIface { | ||
return is_object($o) ? ($this->oDBC = $o) : ($this->oDBC ?? ($this->oDBC = $this-> | return is_object($o) ? ($this->oDBC = $o) : ($this->oDBC ?? ($this->oDBC = $this->QODbConn()->GetIt())); | ||
} | } | ||
protected function FetchDbConn() : QDbConnIface { | protected function FetchDbConn() : QDbConnIface { | ||
$oScrn = self::Screen(); | $oScrn = self::Screen(); | ||
$qoConn = QDbConnClass::AsNew(); | $qoConn = QDbConnClass::AsNew(); | ||
$oItWent = $qoConn->HowItWent(); | |||
$ | |||
// STEP 1: retrieve the name for the requested DB (if any) | // STEP 1: retrieve the name for the requested DB (if any) | ||
$qsName = $this | $qsName = $this->QDbConnSlug(); | ||
$didFind = FALSE; | $didFind = FALSE; | ||
if ($qsName->HasIt()) { | if ($qsName->HasIt()) { | ||
| Line 88: | Line 96: | ||
$oItWent->AddMsgString(self::Screen()->ErrorIt('No DB connection-name specified.')); | $oItWent->AddMsgString(self::Screen()->ErrorIt('No DB connection-name specified.')); | ||
} | } | ||
if ($didFind) { | if ($didFind) { | ||
| Line 97: | Line 104: | ||
$oItWent->AddMsgString($oScrn->GreenIt("Using")." DB connection [$ftName]."); | $oItWent->AddMsgString($oScrn->GreenIt("Using")." DB connection [$ftName]."); | ||
$oaDBs = | # echo ConnAdmin::ReflectSelf()->Report(); | ||
$oaDBs = ConnAdmin::ObjectRoster(); | |||
$osDB = $oaDBs->QryIt($sName); | $osDB = $oaDBs->QryIt($sName); | ||
if ($osDB->HasIt()) { | if ($osDB->HasIt()) { | ||
Latest revision as of 19:59, 10 November 2025
| ||||||||||||||
About
Status
- 2025-10-25 under construction
- 2025-10-26 complete-ish, but still refactoring because stuff doesn't work yet
Code
interface iToDbConn {
// objects
function QODbOper() : QDbOperIface;
}
trait tToDbConn /* implements iToDbConn */ {
// ++ REGISTRY ++ //
// SHORTCUT
protected function DbasesOArray() : ObjListIface { return ConnAdmin::ObjectRoster(); }
// -- REGISTRY -- //
// ++ OBJECTS ++ /
private $qoOper = NULL;
public function QODbOper() : QDbOperIface {
$qoOper = $this->qoOper;
if (is_null($qoOper)) {
$qoOper = QDbOperClass::AsNew();
$this->qoOper = $qoOper;
}
$qoConn = $this->QODbConn();
$ok = $qoConn->HasIt();
$oItWent = $qoConn->HowItWent();
$oItWent->SetOkay($ok);
if ($ok) {
$oConn = $qoConn->GetIt();
$oOper = $oConn->OOper();
$qoOper->SetIt($oOper);
}
$qoOper->HowItWent()->CopyFrom($oItWent);
return $qoOper;
}
private $qoConn = NULL;
public function QODbConn() : QDbConnIface {
$qoConn = $this->qoConn;
$doFetch = FALSE;
if (is_null($qoConn)) {
#$qoConn = QDbConnClass::AsNew();
#$this->qoConn = $qoConn;
$doFetch = TRUE;
} elseif (!$qoConn->HasIt()) {
$this->AmHere();
$doFetch = TRUE;
}
if ($doFetch) {
$qoConn = $this->FetchDBConn();
$this->qoConn = $qoConn;
}
return $qoConn;
}
private $oDBC=NULL;
// ASSUMES: QODbConn() is successful
protected function ODbConn(?ConnIface $o=NULL) : ConnIface {
return is_object($o) ? ($this->oDBC = $o) : ($this->oDBC ?? ($this->oDBC = $this->QODbConn()->GetIt()));
}
protected function FetchDbConn() : QDbConnIface {
$oScrn = self::Screen();
$qoConn = QDbConnClass::AsNew();
$oItWent = $qoConn->HowItWent();
// STEP 1: retrieve the name for the requested DB (if any)
$qsName = $this->QDbConnSlug();
$didFind = FALSE;
if ($qsName->HasIt()) {
$sName = $qsName->GetIt();
if ($sName !== '') {
$didFind = TRUE;
}
} else {
$oItWent->SetError($oItWent::N_ERR_DB_SLUG);
$oItWent->AddMsgString(self::Screen()->ErrorIt('No DB connection-name specified.'));
}
if ($didFind) {
// STEP 2: try to get the DB connection spec object for that name:
$ftName = $oScrn->BoldIt($sName);
$oItWent->AddMsgString($oScrn->GreenIt("Using")." DB connection [$ftName].");
# echo ConnAdmin::ReflectSelf()->Report();
$oaDBs = ConnAdmin::ObjectRoster();
$osDB = $oaDBs->QryIt($sName);
if ($osDB->HasIt()) {
$oDB = $osDB->GetIt();
$qoConn->SetIt($oDB);
$oItWent->SetOkay(TRUE);
} else {
$noFind = TRUE;
$oItWent->SetError($oItWent::N_ERR_DB_DEFN);
$oItWent->AddMsgString($oScrn->ErrorIt('Input Error').": Could not find DB access specs for [$ftName].");
}
}
/*
if ($noFind) {
echo $oaDBs->ReflectThis()->Report();
echo 'Available:'.CRLF;
echo $oaDBs->Debug()->Render();
die();
// TODO: better error-handling
}
*/
return $qoConn;
}
// -- OBJECTS -- /
}
Removed
2025-10-26
// ACTION: tries to retrieve the slug-requested DB Connection object from the db registry
// 2025-10-26 old version
protected function FetchDbConn() : QDbConnIface {
$osDbSlug = $this->QDbConnSlug();
$doListFiles = FALSE; // flip this on if the user needs it
$qoDB = QDbConnClass::AsNew();
if ($osDbSlug->HasIt()) {
// Get DB Connection slug for UI display:
$sDbSlug = $osDbSlug->GetIt();
// TODO: Look up the DB object (there IS code for this, somewhere...)
$oaDBs = $this->DbasesOArray();
#echo 'oaDBs CLASS: '.get_class($oaDBs).CRLF;
$qoDbConn = $oaDBs->QryIt($sDbSlug);
if ($qoDbConn->HasIt()) {
$oDbConn = $qoDbConn->GetIt();
$qoDB->SetIt($oDbOper);
}
}
return $qoDB;
}