예제 #1
0
 public function setUp()
 {
     $this->client = $this->createClient('connect');
     $this->client->connect();
     try {
         $this->client->dbDrop($this->db_name, Constants::STORAGE_TYPE_MEMORY);
     } catch (\Exception $e) {
         //            echo $e->getMessage();
         $this->client->getTransport()->debug($e->getMessage());
     }
     $this->client->dbCreate($this->db_name, Constants::STORAGE_TYPE_MEMORY, Constants::DATABASE_TYPE_GRAPH);
     $this->cluster_struct = $this->client->dbOpen($this->db_name, 'admin', 'admin');
     $this->thisTest = microtime(true);
 }
예제 #2
0
 /**
  *
  */
 public function testLinkSetCreation()
 {
     $config = static::getConfig('connect');
     $client = new PhpOrient('localhost', 2424);
     $client->configure(array('username' => $config['username'], 'password' => $config['password']));
     $client->connect();
     try {
         $client->dbDrop('temp', Constants::STORAGE_TYPE_MEMORY);
     } catch (\Exception $e) {
         //            echo $e->getMessage();
         $client->getTransport()->debug($e->getMessage());
     }
     $client->dbCreate('temp', Constants::STORAGE_TYPE_MEMORY, Constants::DATABASE_TYPE_DOCUMENT);
     $client->dbOpen('temp');
     $client->sqlBatch('
         create class Test1;
         create property Test1.aString string;
         insert into Test1 (aString) VALUES ("b"),("c"),("d");
         create class Test2;
         create property Test2.aString string;
         create property Test2.anEmbeddedSetOfString embeddedset string;
         create property Test2.aLinkedSetOfTest1 linkset Test1;');
     $clusterTest1 = $client->query("select classes[name='Test1'].defaultClusterId from 0:1", -1)[0]['classes'];
     $clusterTest2 = $client->query("select classes[name='Test2'].defaultClusterId from 0:1", -1)[0]['classes'];
     $this->assertEquals('9', $clusterTest1);
     $this->assertEquals('10', $clusterTest2);
     $newRecord = ['oClass' => 'Test2', 'oData' => ['aString' => 'Test record', 'anEmbeddedSetOfString' => ['something 1', 'something 2', 'more other'], 'aLinkedSetOfTest1' => [new ID($clusterTest1, 1), new ID($clusterTest1, 2)]]];
     $newRecordObject = Record::fromConfig($newRecord);
     $newRecordObject->setRid(new ID($clusterTest2));
     $tmp = $client->recordCreate($newRecordObject);
     $this->assertInstanceOf('\\PhpOrient\\Protocols\\Binary\\Data\\Record', $tmp);
     /**
      * @var \PhpOrient\Protocols\Binary\Data\Record $record
      */
     $record = $client->recordLoad($tmp->getRid())[0];
     $this->assertEquals('Test record', $record->aString);
     $this->assertArrayHasKey(0, $record->anEmbeddedSetOfString);
     $this->assertArrayHasKey(1, $record->anEmbeddedSetOfString);
     $this->assertArrayHasKey(2, $record->anEmbeddedSetOfString);
     $this->assertEquals('something 1', $record->anEmbeddedSetOfString[0]);
     $this->assertEquals('something 2', $record->anEmbeddedSetOfString[1]);
     $this->assertEquals('more other', $record->anEmbeddedSetOfString[2]);
     $this->assertArrayHasKey(0, $record->aLinkedSetOfTest1);
     $this->assertArrayHasKey(1, $record->aLinkedSetOfTest1);
     $this->assertInstanceOf('\\PhpOrient\\Protocols\\Binary\\Data\\ID', $record->aLinkedSetOfTest1[0]);
     $this->assertInstanceOf('\\PhpOrient\\Protocols\\Binary\\Data\\ID', $record->aLinkedSetOfTest1[1]);
     $aLinkedSetOfTest1 = $record->aLinkedSetOfTest1;
     /**
      * @var \PhpOrient\Protocols\Binary\Data\ID[] $aLinkedSetOfTest1
      */
     $this->assertEquals('#9:1', $aLinkedSetOfTest1[0]->jsonSerialize());
     $this->assertEquals('#9:2', $aLinkedSetOfTest1[1]->__toString());
 }
예제 #3
0
 public function testDoubleDeserialization()
 {
     $db_name = 'test_date';
     $client = new PhpOrient('localhost', 2424);
     $client->connect('root', 'root');
     try {
         $client->dbDrop($db_name, Constants::STORAGE_TYPE_MEMORY);
     } catch (\Exception $e) {
         //            echo $e->getMessage();
         $client->getTransport()->debug($e->getMessage());
     }
     $client->dbCreate($db_name, Constants::STORAGE_TYPE_MEMORY, Constants::DATABASE_TYPE_GRAPH);
     $client->dbOpen($db_name, 'admin', 'admin');
     $client->command("create class Test extends V");
     $client->command("create property Test.myDate date");
     $client->command("insert into Test set myDate='2015-01-01'");
     $start = microtime(true);
     $result = $client->query("SELECT FROM Test WHERE myDate <= '2015-10-17'");
     $end = microtime(true);
     $this->assertTrue($end - $start < 1);
     $this->assertNotEmpty($result);
 }
예제 #4
0
 public function testNullValueHandling()
 {
     try {
         $client = new PhpOrient('localhost', 2424);
         $client->username = '******';
         $client->password = '******';
         $client->connect();
         $this->skipTestByOrientDBVersion(['2.1.3', '2.0.13', '1.7.10']);
         try {
             $client->dbDrop('temp', Constants::STORAGE_TYPE_MEMORY, Constants::DATABASE_TYPE_DOCUMENT);
         } catch (\Exception $e) {
             //            echo $e->getMessage();
             $client->getTransport()->debug($e->getMessage());
         }
         $client->dbCreate('temp', Constants::STORAGE_TYPE_MEMORY, Constants::DATABASE_TYPE_GRAPH);
         $client->dbOpen('temp');
         $client->sqlBatch('create class Prova1;' . 'create property Prova1.aString string;' . 'insert into Prova1 (aString) VALUES ("b"),("c"),("d");' . 'create class Prova2;' . 'create property Prova2.aString string;' . 'create property Prova2.anEmbeddedSetOfString embeddedset string;' . 'create property Prova2.prova1 link Prova1;');
         $clusterProva1 = $client->query("select classes[name='Prova1'].defaultClusterId from 0:1", -1)[0]['classes'];
         $clusterProva2 = $client->query("select classes[name='Prova2'].defaultClusterId from 0:1", -1)[0]['classes'];
         //            echo "Default cluster for Prova1: $clusterProva1\n";
         //            echo "Default cluster for Prova2: $clusterProva2\n\n";
         $newRecord = ['oClass' => 'Prova2', 'oData' => ['aString' => 'record di prova', 'anEmbeddedSetOfString' => ['qualcosa 1', 'qualcosa 2', 'ancora altro'], 'prova1' => null]];
         $newRecordObject = Record::fromConfig($newRecord);
         $newRecordObject->setRid(new ID($clusterProva2));
         $tmp = $client->recordCreate($newRecordObject);
         $record = $client->recordLoad($tmp->getRid())[0];
         $this->assertEquals('record di prova', $record->getOData()['aString']);
         $this->assertEquals(null, $record->getOData()['prova1']);
         //            print_r($record->getOData());
     } catch (\Exception $e) {
         //            echo $e . "\n";
     }
 }
예제 #5
0
 public function testRecordData()
 {
     $db_name = 'test_record_data';
     $client = new PhpOrient('localhost', 2424);
     $client->connect('root', 'root');
     $this->skipTestByOrientDBVersion(['2.0.13', '1.7.10']);
     try {
         $client->dbDrop($db_name, Constants::STORAGE_TYPE_MEMORY);
     } catch (\Exception $e) {
         //            echo $e->getMessage();
         $client->getTransport()->debug($e->getMessage());
     }
     $client->dbCreate($db_name, Constants::STORAGE_TYPE_MEMORY, Constants::DATABASE_TYPE_GRAPH);
     $client->dbOpen($db_name, 'admin', 'admin');
     $client->command("create class Test extends V");
     $client->command("create property Test.id string");
     $client->command("alter property Test.id DEFAULT uuid()");
     $rec = (new Record())->setOData([])->setRid(new ID(11));
     $record = $client->recordCreate($rec);
     $this->assertArrayHasKey('id', $record);
     $this->assertNotEmpty($record['id']);
 }
<?php

use PhpOrient\PhpOrient;
use PhpOrient\Protocols\Binary\Data\ID;
use PhpOrient\Protocols\Binary\Data\Record;
require 'vendor/autoload.php';
$client = new PhpOrient('orientdb3', 2424);
$client->connect('root', 'rootpwd');
if ($client->dbExists('demo')) {
    $client->dbDrop('demo');
}
$client->dbCreate('demo');
$client->dbOpen('demo');
// Create a new collection
$clusterId = $client->command('create class Elements extends V');
// Add new documents
$document1 = new Record();
$document1->setOData(['now' => date('Y-m-d H:i:s')]);
$document1->setRid(new ID($clusterId));
$document2 = new Record();
$document2->setOData(["created" => ['during' => ['VilniusPHP', 'event']]]);
$document2->setRid(new ID($clusterId));
$record1 = $client->recordCreate($document1);
$record2 = $client->recordCreate($document2);
// Read them all
$documents = $client->query('select from Elements');
foreach ($documents as $document) {
    /** @var $document Record */
    echo '<h2>' . $document->getRid() . '</h2>';
    echo "<div><b>Class:</b> {$document->getOClass()}</b>";
    echo "<div><b>Revision:</b> {$document->getVersion()}</b>";
예제 #7
0
 public function testDatabaseOps()
 {
     // ROOT Table creation
     $client = new PhpOrient('localhost', 2424);
     $client->setSessionToken(true);
     $clusterID = $client->connect('root', 'root');
     if ($client->dbExists('new_test_db_2')) {
         $client->dbDrop('new_test_db_2', PhpOrient::STORAGE_TYPE_MEMORY);
     }
     $client->dbCreate('new_test_db_2', PhpOrient::STORAGE_TYPE_MEMORY);
     $this->assertNotEmpty($clusterID);
     $this->assertNotEmpty($client->getSessionToken());
     $this->assertEmpty($this->client->getSessionToken());
     $this->client->setSessionToken(true);
     $this->client->dbOpen('new_test_db_2', 'admin', 'admin');
     $admin_Token = $this->client->getSessionToken();
     $c = $this->client->command("Create class test_class extends V");
     $rec = (new Record())->setOClass('test_class')->setOData([true])->setRid(new ID(-1, -1));
     $rec = $this->client->recordCreate($rec);
     $rec1 = $this->client->recordLoad($rec->getRid());
     $rec2 = $this->client->query("select from {$rec->getRid()}");
     $this->assertEquals($rec1, $rec2);
     // useful?? they are empty
     //renew the token and connect to new database as user
     $this->client->setSessionToken(true);
     $this->client->dbOpen('new_test_db_2', 'admin', 'admin');
     $new_token = $this->client->getSessionToken();
     $this->assertNotEquals($admin_Token, $new_token);
     $GLOBALS['old_db_token'] = $new_token;
     $rec = (new Record())->setOClass('test_class')->setOData([true])->setRid(new ID(-1, -1));
     $rec = $this->client->recordCreate($rec);
     $rec2 = $this->client->query("select from {$rec->getRid()}");
     $this->assertEquals($rec, $rec2[0]);
     $this->client->setSessionToken($admin_Token);
     //Not valid token to perform database ops
     $this->setExpectedException('\\PhpOrient\\Exceptions\\PhpOrientException');
     $this->client->dbDrop('new_test_db_2');
 }