interface iOps extends BaseIface {
// DETAILS
function DbConn() : DbConnIface;
function DbOper() : DbOperIface;
function QSchemaName() : QStrIface;
function SchemaName() : string;
// ACTION
function DoExport(FileIface $ofData) : ActionIface;
function DoImport(FileIface $ofData, bool $okToReplace) : ActionIface;
// STATE
#function ActionStatus() : ActionIface;
}
abstract class caOps extends BaseClass implements SelfIface {
// ++ SETUP ++ //
# public function __construct(private DbOperIface $oDBO, private string $sSchema) {}
public function __construct(private DbConnIface $oDBC, private string $sSchema) {}
public function DbConn() : DbConnIface { return $this->oDBC; }
public function DbOper() : DbOperIface { return $this->oDBC->OOper(); }
public function QSchemaName() : QStrIface { return QStrClass::FromString($this->sSchema); } // 2025-11-09 Why do we need this?
public function SchemaName() : string { return $this->sSchema; }
// -- SETUP -- //
}