Liigu sisu juurde

Skeem

Skeemid on valikulised. Skeem täidab kaht teineteisest sõltumatut ülesannet: valideerib iga kirjutuse ja määrab, millistele väljadele luuakse indeksid. Skeemita kogumid aktsepteerivad suvalisi massiivandmeid.

PHP
$schema = Schema::collection('posts')
    ->string('slug')->unique()
    ->string('status')->index()
    ->int('publishedAt')->range()
    ->bool('featured')
    ->required(['slug', 'status']);

$posts = new DocStore($root, 'posts', schema: $schema);

Skeemi koguminimi peab ühtima salvesti koguminimega, vastasel juhul viskab loomine vea. Skeemi edastamine konstruktorile sünkroonib kohe ka määratud indeksid.

Valideerimisreeglid

  • required väljad peavad kirjutatavates andmetes olemas olema. Kontrollitakse välja olemasolu: selgesõnaline null vastab nõutud väljale.
  • Tüübitud välju kontrollitakse ainult siis, kui need on olemas ega ole nullväärtusega. Väli string lükkab väärtuse int tagasi; väli float aktsepteerib nii float kui ka int.
  • mixed väljad aktsepteerivad kõike ning on kasulikud välja nõutuks või indekseerituks märkimiseks selle tüüpi piiramata.
  • Skeemis määramata väljadele piiranguid ei seata.

Valideerimise ebaõnnestumisel visatakse StorageException enne kirjutamist.

Väljatüübid ja lipud

Toetatud tüübid: string, int, float, bool, mixed.

Väljapõhised lipud: index() (võrdsusindeks), unique() (unikaalsust kontrollitakse kirjutamise ajal), range() (järjestatud indeks valikute gt/lt/between/prefix ja järjestatud vahemikupäringute jaoks) ning required().

Skeemi muutmine

Indeksid sünkroonitakse salvesti loomisel. Kui skeemimuutus muudab määratud indeksite hulka, muutub indeksimanifest ja mõjutatud indeksid luuakse olemasolevate kirjete põhjal uuesti; valideerimisreeglite muudatused kehtivad ainult tulevastele kirjutustele ega kirjuta salvestatud kirjeid kunagi ümber.

Sama Schema objekti saab korduskasutada tüübitud veergude vastendamiseks SQL peeglis], ka nende kogumite puhul, mille salvesti ise skeemi ei kasuta.