Ferreteria/v0.6/clade/Sys/Data/Engine/aux/msgs/Maria/Errors
Jump to navigation
Jump to search
| ||||||||||||||||||
Code
as of 2025-10-04
interface iErrors extends BaseIface {
// PRE-SETUP
static function FitsErrorMask(string $Msg) : bool;
static function ErrorIsKnown(int $nErr) : bool;
// SETUP
static function FromMessage(string $sMsg) : ?self;
}
abstract class caErrors extends BaseClass implements SelfIface {
// ++ CONFIG ++ //
private const sMaskPrefix = 'mysqldump: Got error:';
abstract protected function ErrNum() : int;
// ++ PRE-SETUP ++ //
public static function FitsErrorMask(string $sMsg) : bool { return str_starts_with($sMsg,self::sMaskPrefix); }
public static function ErrorIsKnown(int $nErr) : bool { return ($nErr === 1044) || ($nErr === 1142); }
// -- PRE-SETUP -- //
// ++ SETUP ++ //
public static function FromMessage(string $sMsg) : ?SelfIface {
$oMsg = NULL;
if (static::FitsErrorMask($sMsg)) {
$nlPfx = strlen(self::sMaskPrefix);
$sRem = trim(substr($sMsg,$nlPfx));
$nlNum = strpos($sRem,':'); // ASSUMES: err # always immedately followed by ":"
$sNum = substr($sRem,0,$nlNum); // the error number
if (static::ErrorIsKnown($sNum)) {
$sMsg = trim(substr($sRem,$nlNum+1));
$oMsg = static::FromErrorNumber($sNum,$sMsg);
}
}
return $oMsg;
}
// ++ SETUP: pieces ++ //
public static function FromErrorNumber(int $nErr,string $sMsg) : SelfIface {
switch($nErr) {
case 1044: $sc = Error1044::class; break;
case 1142: $sc = Error1142::class; break;
default: ThrowHissy("Unknown error #$nErr"); // shouldn't ever get here, actually
}
return new ($sc)($sMsg);
}
// -- SETUP -- //
// ++ OUTPUT ++ //
public function Full() : string {
#echo self::ShowStack('Who dares summon me?');
$oScrn = self::Screen();
$ftNum = $oScrn->BlueIt($this->ErrNum());
$sOut = $oScrn->YellowIt('DB error ') . $ftNum . ': ['.$this->Text().']';
return $sOut;
}
// -- OUTPUT -- //
}