*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
require_once '../vendor/autoload.php';
require_once __DIR__ . '/schemas/PubSchema.php';
try {
    // We'll need an index
    $obj_index = new \Search\Index('pubs');
    // Schema
    $obj_pub_schema = new PubSchema();
    // First pub
    $obj_pub1 = $obj_pub_schema->createDocument(['name' => 'Euston Tap', 'location' => [51.5269059, -0.1325679], 'rating' => 5]);
    // Second pub
    $obj_pub2 = $obj_pub_schema->createDocument(['name' => 'Kim by the Sea', 'location' => [53.4653381, -2.2483717], 'rating' => 3]);
    // Insert
    $obj_index->put([$obj_pub1, $obj_pub2]);
    echo "OK";
} catch (\Exception $obj_ex) {
    echo $obj_ex->getMessage();
    syslog(LOG_CRIT, $obj_ex->getMessage());
}
<?php

/**
 * Copyright 2015 Tom Walder
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
require_once '../vendor/autoload.php';
require_once __DIR__ . '/schemas/BookSchema.php';
try {
    // Create Book (pre-defined Schema class)
    $obj_book_schema = new BookSchema();
    $obj_book = $obj_book_schema->createDocument(['title' => 'Romeo and Juliet', 'author' => 'William Shakespeare', 'isbn' => '1840224339', 'price' => 9.99]);
    // Insert - we'll need an index
    $obj_index = new \Search\Index('library');
    $obj_index->put($obj_book);
    echo "OK";
} catch (\Exception $obj_ex) {
    echo $obj_ex->getMessage();
    syslog(LOG_CRIT, $obj_ex->getMessage());
}
<?php

/**
 * Copyright 2015 Tom Walder
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
require_once '../vendor/autoload.php';
require_once __DIR__ . '/schemas/PersonSchema.php';
try {
    // We'll need an index
    $obj_index = new \Search\Index('friends');
    // Schema
    $obj_person_schema = new PersonSchema();
    // Insert
    $obj_index->put($obj_person_schema->createDocument(['name' => 'Marty McFly Jnr', 'age' => 0, 'dob' => new DateTime()]));
    echo "OK";
} catch (\Exception $obj_ex) {
    echo $obj_ex->getMessage();
    syslog(LOG_CRIT, $obj_ex->getMessage());
}
 /**
  * Test the delete document function failure
  *
  * @expectedException        InvalidArgumentException
  * @expectedExceptionMessage Parameter must be one or more \Search\Document objects
  */
 public function testDeleteFailureArray()
 {
     $obj_index = new \Search\Index('test');
     $obj_index->delete(['abc', 123]);
 }
 /**
  * Test a basic put call
  *
  * @todo Expand range of field types
  */
 public function testPut()
 {
     $str_index = 'library';
     // Schema describing a book
     $obj_schema = (new \Search\Schema())->addText('title');
     // Create and populate a document
     $obj_book = $obj_schema->createDocument(['title' => 'The Merchant of Venice']);
     // Prepare the proxy mock
     $obj_request = new \google\appengine\IndexDocumentRequest();
     $obj_params = $obj_request->mutableParams();
     $obj_params->mutableIndexSpec()->setName($str_index);
     $obj_doc = $obj_params->addDocument();
     $obj_doc->addField()->setName('title')->mutableValue()->setType(storage_onestore_v3\FieldValue\ContentType::TEXT)->setStringValue('The Merchant of Venice');
     $this->apiProxyMock->expectCall('search', 'IndexDocument', $obj_request, new \google\appengine\IndexDocumentResponse());
     // Write it to the Index
     $obj_index = new \Search\Index($str_index);
     $obj_index->put($obj_book);
     $this->apiProxyMock->verify();
 }