1. Go to this page and download the library: Download fahara02/udb-laravel library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
fahara02 / udb-laravel example snippets
use Udb\Entity\V1\SelectRequest;
use Fahara02\UdbLaravel\Facades\Udb;
$req = (new SelectRequest())
->setMessageType('acme.healthcare.v1.Patient')
->setLimit(50);
$records = Udb::select($req);
foreach ($records->getRecords() as $record) {
// $record is a typed protobuf object.
}
use Udb\Entity\V1\UpsertRequest;
use Fahara02\UdbLaravel\Facades\Udb;
$response = Udb::upsert($upsertRequest);
use Udb\Entity\V1\DeleteRequest;
use Fahara02\UdbLaravel\Facades\Udb;
$response = Udb::delete($deleteRequest);
use Fahara02\UdbLaravel\UdbMetadata;
use Fahara02\UdbLaravel\WriteReceipt;
use function Fahara02\UdbLaravel\wasReplay;
$response = Udb::upsert($upsertRequest); // request carries an idempotency_key
if (wasReplay($response)) {
// durable-idempotency replay — no new side effect occurred
}
// Read-your-writes: fence the next read on the write's receipt.
$receipt = WriteReceipt::fromJson($response->getWriteReceiptJson());
$meta = UdbMetadata::fromContext(/* ... */)->afterWrite($receipt);
$dl = $storage->downloadFile($fileId, ['expiresInMinutes' => 15]);
$url = $dl->getDownloadUrl();
// `getDownloadUrl($fileId, $expiresInMinutes)` is the un-aliased equivalent.
// BLOCKING: PHP ext-grpc has no async API, so this returns only after the
// final chunk lands (or the deadline trips) and buffers the body in memory.
// Prefer the presigned URL above for large objects.
$bytes = $storage->downloadFileBytes($fileId); // server default chunk size
$bytes = $storage->downloadFileBytes($fileId, 1 << 20); // 1 MiB advisory chunk hint
use Fahara02\UdbLaravel\Generated\GeneratedClient;
use Udb\Core\Vault\Services\V1\EncryptRequest;
$gen = new GeneratedClient(config('udb'));
$stub = $gen->VaultServiceStub();
[$response, $status] = $stub->Encrypt(
(new EncryptRequest())->setTenantId($tenant)->setKeyName('docs')->setPlaintext('secret'),
Udb::context()->toGrpcMetadata(),
)->wait();
use Fahara02\UdbLaravel\Exceptions\UdbRpcException;
use Fahara02\UdbLaravel\Exceptions\UdbConfigurationException;
use Fahara02\UdbLaravel\Exceptions\UdbException;
try {
Udb::select($req);
} catch (UdbRpcException $e) {
// UDB returned a gRPC error. $e->status holds the \Grpc\STATUS_* code.
if ($e->status === \Grpc\STATUS_NOT_FOUND) { /* ... */ }
} catch (UdbConfigurationException $e) {
// Missing endpoint, invalid TLS config, or similar app setup problem.
} catch (UdbException $e) {
// Base exception for this package.
}
$this->app->bind('udb.tenant_resolver', function () {
return function (Request $request): ?string {
return $request->attributes->get('resolved_tenant_id');
};
});
use Fahara02\UdbLaravel\UdbClient;
$this->app->instance(UdbClient::class, $fakeClient = Mockery::mock(UdbClient::class));
$fakeClient->shouldReceive('select')->andReturn(new \Udb\Entity\V1\RecordSet());
bash
php artisan vendor:publish --tag=udb-config
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.