2.4.2014
Aplikace Deko je postavena na distribuované databázi CouchDB, která ji dává neobyčejnou pružnost při použití v nejrůznějších podmínkách. Ať již je vaše podnikátní postaveno jako one-man-show, nebo jako kooperace dvou, či na spolupráci velkého týmu, vždy vám poskytne vše co k práci potřebujete.
Co když ale potřebujete data z aplikace Deko propojit s jinými, již zavedenými systémy, nebo třeba s firemním webem nebo intranetem? I na to jsme mysleli a proto vzniklo Deko API.
Deko API je poměrně jednoduchá PHP knihovna, která vám umožňuje připojit data uložená v CouchDB k jiným datovým zdrojům či vlastním aplikacím. API je postaveno objektově a pro jeho běh je potřeba PHP ve verzi 5.3 a vyšší.
Pro začátek si pojďme ukázat jak se dostat k přehledu projektů na nejvyšší úrovni (tedy v tzv. rootu). Základem všeho je stáhnout si Deko API do nějakého adresáře (například libs). Toho dosáhneme například příkazem verzovacího systému Git:
git clone https://github.com/hobrasoft-cz/deko-api.git
Nepoužíváte-li Git, lze si z našeho repozitáře na GitHubu stáhnout i ZIP soubor obsahující totéž.
Samotné použití je poměrně přímočaré a vypadá přibližně takto:
<?php
include_once('libs/deko-api/php/Api.php');
$configuration = array(
    // databáze se jmenuje deko
    'database' => 'deko',
    // databázovy stroj běží lokálně
    'host'     => 'localhost',
    // databázový uživatel, který může číst se jmenuje dekouser
    'user'     => 'dekouser',
    // je zabezpečen nějakým heslem
    'password' => 'Dek0Pa5sw0rd'
);
// vytvoříme instanci Deko API
$api = new Api($configuration);
try {
    // přihlásíme se do databáze
    $api->login();
    // načteme root projekt
    $rootProject = $api->get('root');
    // načteme všechny podprojekty root projektu
    $rootProject->loadProjects();
    // projdeme projekty a vypíšeme jejich jména
    foreach ($rootProject->projects as $id => $project) {
        echo $project->name.'<br>';
    }
} catch (ApiException $e) {
    // když se něco nepovede, dáme o tom vědět
    echo $e->getMessage();
}
?>
Prosté, že? Obdobným způsobem můžeme vypsat i další typy dokumentů, které jsou v projektu uloženy, jako jsou například pracovní výkazy. Ty vypíšeme takto:
$rootProject->loadTimesheets();
foreach ($rootProject->timesheets as $id => $timesheet) {
    echo $timesheet->name.'<br>';
}
Podrobnosti lze najít v dokumentaci API.
To by pro tentokrát stačilo. Příště si ukážeme něco složitějšího. Do té doby se můžete inspirovat webovým rozhraním, které zpřístupňuje našim zákazníkům pracovní výkazy (jedná se o ukázkový projekt).