Příloha 1

Volání GraphQL dotazu z Java Scriptu

if (GraphQL.HasQuery('Dotaz')) //ověření, že dotaz opravdu existuje
{
    var result = GraphQL.Execute('Dotaz'); //volání GraphQL dotazu
}

Vložení záznamu do tabulky v DB

Pro vložení záznamu do tabulky je nutné mít připravený GraphQL dotaz a JS, který bude tento dotaz spouštět (viz výše).

Tabulka v DB pro příklad vypadá následovně:

Název sloupce Typ Poznámka

id_p

int

primární klíč, auto-increment

jmeno

nvarchar(MAX)

prijmeni

nvarchar(MAX)

decimal

decimal(18, 5)

integer

int

Ve formuláři jsou definované variables: sloupec_jmeno (string), sloupec_prijmeni (string), sloupec_decimal (decimal), sloupec_integer (integer)

Obecně GraphQL mutace pro vložení vypadá následovně:

mutation nazev_mutace(definice promennych)
{
  alias:insertnazev_tabulky(hodnoty_pro_vlozeni)
  {
    vraceny_objekt
  }
}

Konkrétní mutace pro tento případ (pro správnou funkčnost je nutno nahradit název tabulky názvem tabulky z vlastní firmy):

mutation vlozeni_zaznamu($sloupec_jmeno: String!, $sloupec_prijmeni: String!, $sloupec_decimal: Decimal!, $sloupec_integer: Int!)
{
  vracena_data:insertPokus(jmeno: $sloupec_jmeno, prijmeni: $sloupec_prijmeni, decimal: $sloupec_decimal, integer: $sloupec_integer)
  {
    id_p
  }
}

Úprava záznamu na základě ID

Záznam se musí upravovat vždy na základě primárního klíče (v tomto případě id_p). Do id_p se pošle hodnota primárního klíče řádku, který se má upravovat.

mutation upravaZaznamu($sloupec_id: Int!, $sloupec_jmeno: String!, $sloupec_prijmeni: String!, $sloupec_decimal: Decimal!, $sloupec_integer: Int!)
{
  updatePokus(id_p: $sloupec_id, jmeno:$sloupec_jmeno, prijmeni:$sloupec_prijmeni, decimal: $sloupec_decimal, integer: $sloupec_integer)
  {
    id_p
  }
}

Dotaz na konkrétní záznam

Využívá se stejná tabulka jako v předchozím případě. Hledá se záznam s ID = 6.

query selectId
{
  pokus(id_p:6) {
    decimal
    integer
    jmeno
    prijmeni
  }
}

Dotaz na všechny záznamy v tabulce

Využívá se stejná tabulka jako v předchozích příkladech. Pozor, je nutné hlídat, že se používá množné číslo v názvu tabulky (s na konci).

query selectAll {
  pokuss {
    edges {
      node {
        jmeno
        prijmeni
      }
    }
  }
}

Počet uživatelů zadaného křestního jména

Využívá se stejná tabulka jako v předchozích příkladech.

query countaNames($zadanejmeno:String!)
{
  Jmena: pokuss
    (where:
        {
           containsString:
             {
                expr:
                  {
                   col: JMENO
                  }, value: $zadanejmeno
              }
         }
     )
     {
     aggregate
        {
            count
        }
     }
}

Počet uživatelů zadaného stringu v zadaném sloupci

Využívá se stejná tabulka jako v předchozích příkladech.

query countStringColumn($zadanejmeno: String!, $jmenosloupce: Pokus2StringColumns!)
{
  Jmena: pokuss
  (where:
      {
          and:
             [
                {
                   containsString:
                      {
                          expr:
                                {
                                   col: $jmenosloupce}, value: $zadanejmeno
                                }
                       }
                {
                   containsString:
                       {
                          expr:
                                 {
                                   col: JMENO
                                 }, value: $zadanejmeno
                       }
                 }
             ]
    }
)
{
    aggregate
    {
      count
    }
  }
}

Výpis všech záznamů, kde je ve sloupci Integer zadaná hodnota seřazené podle jména vzestupně, v případě shodných jmen podle příjmení vzestupně

Využívá se stejná tabulka jako v předchozích příkladech.

query searchInt($nasInt:Int!)
{
  vysledek: pokuss(orderBy:
  [
    {
      jmeno: ASC
    }
    {
      prijmeni: ASC
    }
  ], where:
  {
    eqInt:
    {