TEMPLATE_CLASS_TEST_PDO, META_CLIENT => CLIENT_CLIENT, META_CLIENT_IP => STRING_SESSION_HOME, META_EVENT_GUID => guid(), // simulate a broker event by generating the event guid ]; if ($thisOperation != OP_FETCH_BY_GUID and $thisOperation != OP_AUDIT_RESTORE) { $objFactory = new gacFactory($meta, FACTORY_EVENT_NEW_CLASS, '', $errors); if (!$objFactory->status or !empty($errors)) { consoleLog($res, CON_ERROR, ERROR_TEMPLATE_INSTANTIATE . $meta[META_TEMPLATE]); foreach ($errors as $error) consoleLog($res, CON_ERROR, $error); exit; } /** @var gacPDO $objTest */ $objTest = $objFactory->widget; if (is_object($objFactory)) $objFactory->__destruct(); unset($objFactory); } switch ($thisOperation) { case OP_CREATE : $data = $objTest->template->buildTestData(100, true); $brokerPayload = [ BROKER_REQUEST => BROKER_REQUEST_FETCH, BROKER_DATA => $data, BROKER_META_DATA => $meta ]; if (!validateMetaData($brokerPayload, $errors)) exit('meta data validation failed'); $objTest->_createRecord($data); if ($objTest->status) { if (gasCache::mapOutboundPayload($objTest, $errors)) { var_export($objTest->getCK()); echo $eos; } else { var_export($objTest->eventMessages); echo $eos; } } else { var_export($objTest->eventMessages); echo $eos . ERROR_NOSQL_CREATE . $eos; } break; case OP_FETCH : $data = $objTest->template->buildTestData(1); //$objTest->_fetchRecords($data); $query = [ CM_TST_FIELD_TEST_STRING => [ OPERAND_NULL => [ OPERATOR_DNE => [ $jayne ] ] ] ]; $projection = [ CM_TST_TOKEN, CM_TST_FIELD_TEST_STATUS ]; $request = [ STRING_QUERY_DATA => $query, STRING_RETURN_DATA => $projection ]; $objTest->addMeta(META_LIMIT, 1); $brokerPayload = [ BROKER_REQUEST => BROKER_REQUEST_FETCH, BROKER_DATA => $request, BROKER_META_DATA => $meta ]; //$query = null; if (!validateMetaData($brokerPayload, $errors)) exit('meta data validation failed'); $objTest->_fetchRecords($brokerPayload[BROKER_DATA]); if ($objTest->status) { if (gasCache::mapOutboundPayload($objTest, $errors)) { var_export($objTest->getCK()); echo $eos; } else { var_export($objTest->eventMessages); echo $eos; } } else { var_export($objTest->eventMessages); echo $eos . ERROR_NOSQL_CREATE . $eos; } break; case OP_FETCH_ANY : $query = null; $objTest->addMeta(META_LIMIT,2); $meta[META_LIMIT] = 1; $request = [ STRING_QUERY_DATA => $query ]; $brokerPayload = [ BROKER_REQUEST => BROKER_REQUEST_FETCH, BROKER_DATA => $request, BROKER_META_DATA => $meta ]; if (!validateMetaData($brokerPayload, $errors)) exit('meta data validation failed'); $objTest->_fetchRecords($brokerPayload[BROKER_DATA]); if ($objTest->status) { if (gasCache::mapOutboundPayload($objTest, $errors)) { var_export($objTest->getCK()); echo $eos; } else { var_export($objTest->eventMessages); echo $eos; } } else { var_export($objTest->eventMessages); echo $eos . ERROR_NOSQL_CREATE . $eos; } break; case OP_FETCH_IN : // get any three active records; $query = null; $recordList = null; $projection = [ CM_TST_TOKEN ]; $request = [ STRING_QUERY_DATA => $query, STRING_RETURN_DATA => $projection ]; $brokerPayload = [ BROKER_REQUEST => BROKER_REQUEST_FETCH, BROKER_DATA => $request, BROKER_META_DATA => $meta ]; $objTest->addMeta(META_LIMIT, 3); if (!validateMetaData($brokerPayload, $errors)) exit('meta data validation failure'); $objTest->_fetchRecords($brokerPayload[BROKER_DATA]); if (!$objTest->status) { echo 'failed to fetch records' . PHP_EOL; var_export($objTest->eventMessages); echo PHP_EOL; exit; } foreach ($objTest->getData() as $record) $recordList[] = $record[DB_TOKEN . $objTest->ext]; // build the IN query $query = [ CM_TST_TOKEN => [ OPERAND_NULL => [ OPERATOR_IN => $recordList ]]]; $brokerPayload = [ BROKER_REQUEST => BROKER_REQUEST_FETCH, BROKER_DATA => [ STRING_QUERY_DATA => $query ], BROKER_META_DATA => $meta ]; if (!validateMetaData($brokerPayload, $errors)) exit('meta data validation failure'); $objTest->_fetchRecords($brokerPayload[BROKER_DATA]); if (!$objTest->status) { echo 'failed to fetch records' . PHP_EOL; var_export($objTest->eventMessages); echo PHP_EOL; exit; } break; case OP_BAD_FETCH : $query = [ CM_TST_FIELD_TEST_STRING => [ OPERAND_NULL => [ OPERATOR_EQ => ["some string"] ] ] ]; $request = [ BROKER_REQUEST => BROKER_REQUEST_FETCH, BROKER_DATA => [STRING_QUERY_DATA => $query], BROKER_META_DATA => $meta ]; if (!validateMetaData($request, $errors)) { var_export($errors); exit; } $objTest->_fetchRecords($request[STRING_QUERY_DATA]); if (!$objTest->status) var_export($objTest->eventMessages); break; case OP_DELETE : // fetch any one active record $query = [ CM_TST_FIELD_TEST_STATUS => [ OPERAND_NULL => [ OPERATOR_EQ => [ STATUS_ACTIVE ]]]]; $request = [ STRING_QUERY_DATA => $query]; $objTest->addMeta(META_DONUT_FILTER, 1); $objTest->addMeta(META_LIMIT, 1); $objTest->_fetchRecords($request); $data = $objTest->getData(); $query = [ DB_TOKEN => [ OPERAND_NULL => [ OPERATOR_EQ => [ $data[0][STRING_TOKEN . $objTest->ext ]]]]]; $data = [ STRING_QUERY_DATA => $query ]; // $objTest->useDeletes = true; // uncomment this line to test hard-deletes $objTest->_deleteRecord($data); consoleLog($res, CON_SUCCESS, $objTest->queryResults); break; case OP_FETCH_BY_GUID : // for this, you need to provide the GUID string of the record you wish to fetch // this section is provided to test for loading a record via instantiation $guid = 'FBF9C067-4B20-0F6D-B8EE-FD891D80EF7C'; if (empty($guid) or !validateGUID($guid)) { echo 'Missing or invalid guid for fetch by guid test' . $eos; exit; } // delete the pre-existing object and re-create so we can instantiate with a guid if (isset($objTest) and is_object($objTest)) { $objTest->__destruct(); unset($objTest); } $objFactory = new gacFactory($meta, FACTORY_EVENT_NEW_CLASS, $guid, $errors); if (!$objFactory->status) { var_export($objFactory->eventMessages); exit; } /** @var gatTestMySQL $objTest->template */ /** @var gacPDO $objTest */ $objTest = $objFactory->widget; $objFactory->__destruct(); unset($objFactory); $query = [ DB_TOKEN => [ OPERAND_NULL => [ OPERATOR_EQ => [ $guid ]]]]; $request = [ STRING_QUERY_DATA => $query ]; $objTest->_fetchRecords($request); if (!$objTest->status) { var_export($objTest->eventMessages); echo $eos; exit; } var_export($objTest->getData()); break; case OP_AUDIT_RESTORE : $query = null; $errors = []; $retData = []; // pre-determined DB_TOKEN of targeted audit record $queryData = [ STRING_KEY => "9E4CC946-BA7D-F329-AAA4-2471DB0AA829" ]; $meta[META_USER_INFO] = basename(__FILE__); $meta[JOURNAL_HISTORY_RESTORED_REASON] = 'testing journal recovery'; $meta[META_TEMPLATE] = TEMPLATE_CLASS_AUDIT; // instantiate the audit record $objFactory = new gacFactory($meta, FACTORY_EVENT_NEW_CLASS, $queryData[STRING_KEY], $errors); if (!$objFactory->status) { echo ERROR_FACTORY_LOAD_BROKER . TEMPLATE_CLASS_AUDIT . $eos; var_export($objFactory->eventMessages); exit; } $objAudit = $objFactory->widget; if (is_object($objFactory)) $objFactory->__destruct(); unset($objFactory); // launch the audit process $startTime = gasStatic::doingTime(); $rc = $objAudit->restoreAuditRecord($retData); $totalTime = gasStatic::doingTime($startTime); if ($rc === true) echo 'Audit record recovered in: ' . (string) $totalTime . ' seconds' . $eos; elseif (is_null($rc)) echo 'Audit method returned null' . $eos; else echo 'Audit request failed'; var_export($objAudit->eventMessages); break; case OP_UPDATE : $query = [ CM_TST_FIELD_TEST_STATUS => [ OPERAND_NULL => [ OPERATOR_EQ => [ STATUS_ACTIVE ]]]]; $update = [ CM_TST_FIELD_TEST_INT => 1319, CM_TST_FIELD_TEST_BOOL => true, CM_TST_FIELD_TEST_STRING => $jayne ]; $orderBy = [ CM_TST_FIELD_TEST_CDATE => STRING_SORT_DESC ]; $data = [ STRING_QUERY_DATA => $query, STRING_UPDATE_DATA => $update, STRING_ORDER_BY_DATA => $orderBy ]; $metaCopy = $meta; // limit the update to five records $metaCopy[META_LIMIT] = 5; $request = [ BROKER_REQUEST => BROKER_REQUEST_UPDATE, BROKER_DATA => $data, BROKER_META_DATA => $metaCopy ]; if (!validateMetaData($request, $errors)) { var_export($errors); exit; } $objTest->_updateRecord($request[BROKER_DATA]); $queryResults = (!gasCache::mapOutboundPayload($objTest, $errors)) ? $objTest->getData() : $objTest->getCK(); var_export($queryResults); break; case OP_CALL_SP : $query = [ STRING_PROCEDURE_NAME => 'testProc1', STRING_PARAM_LIST => [ 70 ]]; $query = [ STRING_PROCEDURE_NAME => 'testProc0', STRING_PARAM_LIST => null ]; $query = [ STRING_PROCEDURE_NAME => 'testProc2', STRING_PARAM_LIST => [12]]; $objTest->execSP($query); break; case OP_UPDATE_DELETE : $recordToken = '9A49D075-70B3-8087-407A-ADE7EBB06246'; $query = [ DB_TOKEN => [ OPERAND_NULL => [ OPERATOR_EQ => [ $recordToken ]]]]; $update = [ DB_STATUS => STATUS_DELETED ]; $objTest->addMeta(META_AUDIT_EVENT, 1); // simulate call to AdminIn broker audit restore event $objTest->_updateRecord([ STRING_QUERY_DATA => $query, STRING_UPDATE_DATA => $update]); var_export($objTest->eventMessages); break; case OP_UPDATE_MANY : $newMeta = $meta; $newMeta[META_LIMIT] = 3; // $query = [ CM_TST_FIELD_TEST_STATUS => [ OPERAND_NULL => [ OPERATOR_EQ => [ STATUS_ACTIVE ]]]]; $query = [ CM_TST_FIELD_TEST_STRING => [ OPERAND_NULL => [ OPERATOR_DNE => [ $jayne ]]]]; $update = [CM_TST_FIELD_TEST_STRING => $jayne, CM_TST_FIELD_TEST_INT => 12345 ]; $orderBy = [ CM_TST_FIELD_TEST_CDATE => STRING_SORT_DESC ]; $request = [ BROKER_REQUEST => BROKER_REQUEST_UPDATE, BROKER_DATA => [ STRING_QUERY_DATA => $query, STRING_UPDATE_DATA => $update, STRING_SORT_DATA => $orderBy ], BROKER_META_DATA => $newMeta ]; if (!validateMetaData($request, $errors)) { var_export($errors); exit; } // $bc = new gacBrokerClient(BROKER_QUEUE_W, basename(__FILE__) . AT . __LINE__); // if (!$bc->status) exit(ERROR_BROKER_CLIENT_DECLARE . BROKER_QUEUE_W); // $payload = gzcompress(json_encode($request)); // $response = json_decode(gzuncompress($bc->call($payload)), true); // var_export($response); $objTest->replaceMeta($newMeta); $objTest->_updateRecord($request[BROKER_DATA]); $queryResults = (!gasCache::mapOutboundPayload($objTest, $errors)) ? $objTest->getData() : $objTest->getCK(); var_export($queryResults); break; } if (!empty($objTest->eventMessages)) var_export($objTest->eventMessages); if (!$objTest->status) { echo 'test failed... ' . PHP_EOL; if (!empty($objTest->eventMessages)) foreach ($objTest->eventMessages as $msg) consoleLog($res, CON_ERROR, $msg); else echo 'no messages in error stack...'; } else { echo 'Test successfully completed' . $eos; }