====== Laboratorium, CouchDB 1 ======
Baza danych CouchDB jest dostępna w trakcie trwania ćwiczeń pod adresem: http://awing.kis.agh.edu.pl:5984
**Uwaga:** baza danych dostępna tylko po uwierzytelnieniu. Login i hasło na zajęciach.
Do wykonania poniższych ćwiczeń wykorzystaj dowolną znaną Ci technologie komunikacji z wykorzystaniem HTTP: ''curl'', ''telnet'', ''netcat'', PHP, Java...
cURL można pobrać ze strony: http://curl.haxx.se/download.html , najlepiej tą wersję: https://curl.se/windows/dl-7.80.0/curl-7.80.0-win64-mingw.zip - proszę otworzyć archiwum zip, wewnątrz w katalogu ''bin'' znajduje się plik ''curl.exe'' - proszę go rozpakować do katalogu w którym domyślnie pracuje powłoka cmd.
Jeżeli do uruchamiania cURL używana jest powłoka CMD w systemie Windows (''cmd.exe'') należy użyć innych ograniczników łańcuchów znaków dla wyrażeń JSON, niż te podane na wykładzie.
Przykładowo, zamiast:
curl ... -d '{"klucz":"wartosc"}'
należy zastosować:
curl ... -d "{\"klucz\":\"wartosc\"}"
===== Dokumenty =====
==== Ćwiczenie 0: Baza danych ====
Utwórz bazę danych o nazwie skłądającej się z Twojego nazwiska i pierwszej litery imienia.
Sprawdź, czy baza danych została utworzona.
==== Ćwiczenie 1: Dodawanie ====
Do zrealizowania poniższego ćwiczenia użyj Futon/Fauxton: http://awing.kis.agh.edu.pl:5984/_utils lub CURL i linii poleceń.
Do Twojej bazy danych dodaj przynajmniej trzy dokumenty. Każdy z nich reprezentuje "wpis w kalendarzu". Wpis posiada datę, treść, oraz wartość liczbową określającą ważność: 0 - najważniejsze, 1 - mniej ważne itd.
==== Ćwiczenie 2: Przeglądanie ====
Do zrealizowania poniższego ćwiczenia użyj przeglądarki WWW, albo CURL i linii poleceń.
- Ile dokumentów znajduje się w bazie? Jak to sprawdzić? Jakie są ich identyfikatory?
- Wyświetl zawartość dokumentu o wybranym identyfikatorze.
==== Ćwiczenie 3: Usuwanie ====
Do zrealizowania poniższego ćwiczenia użyj Futon/Fauxton: http://awing.kis.agh.edu.pl:5984/_utils lub CURL i linii poleceń.
- Usuń dokument o wybranym identyfikatorze.
- Sprawdź czy dokument został usunięty.
===== Widoki =====
==== Ćwiczenie 4 ====
- Zbuduj widok, tak aby udostępniał informacje o wpisach posortowane ze względu na datę.
- Korzystając z w/w widoku znajdź wpisy z aktualnego miesiąca. Podpowiedź: użyj ''startkey'' oraz ''endkey''.
- Zbuduj widok, który zliczy ilość ważnych wpisów (ważność=0) **Uwaga:** Jeżeli potrzeba dodaj nowe dokumenty do bazy danych, tak aby ilość zliczonych dokumentów była większa od 2.
Do zaprogramowania widoków użyj
- Futon/Fauxton: http://awing.kis.agh.edu.pl:5984/_utils , albo
- dowolnego edytora tekstu i curl.
Jeżeli korzystasz z CURL i zapisałeś widok w postaci Design Document (JSON) w pliku ''przyklad.json'':
{
"language": "javascript",
"views":
{
"widok": {
"map": "
function(doc) {
emit('klucz', 'wartosc')
}
"
}
}
}
możesz umieścić go jako widok stały w bazie danych ''moja_baza_danych'':
curl -X PUT http://awing.kis.agh.edu.pl:5984/moja_baza_danych/_design/przyklad -H "Content-Type: application/json" -d @przyklad.json
Do w/w widoku możesz się odwołać za pomocą:
curl -X GET http://awing.kis.agh.edu.pl:5984/moja_baza_danych/_design/przyklad/_view/widok
==== Ćwiczenie 5 (dla zainteresowanych) ====
Załóżmy, że w treści wpisów może wystąpić "hashtag", czyli łańcuch znaków poprzedzony znakiem "#".
Żeby móc przeszukiwać wpisy po w/w hashtagach zbuduj widok, który zwróci informacje o hastagach i w jakich wpisach występują, razem z treścią takiego wpisu.
Do zaprogramowania widoku możesz rozbudować poniższy kod. Możesz go również przetestować w konsoli narzędzi deweloperskich przeglądarki.
const tresc = 'Czas na #wagary?\nA może jednak #szkola?';
const regex = /#[a-zA-Z0-9]+/g;
const found = tresc.match(regex);
found.map(function (x) {console.log(x)})