ivpk / dsa

Duomenų struktūros aprašo specifikacija.
GNU Affero General Public License v3.0
0 stars 2 forks source link

Parametrų susiejimas su savybėmis #18

Open sirex opened 2 months ago

sirex commented 2 months ago

Šiuo metu parametrai deklaruojami taip:

resource model property type ref source prepare
resource1 json /cities/{id}
param id path()
City id
id integer
name@lt string

Problema yra tame, kad nėra aišku, kad id parametras yra siejamas su id savybe.

Kad tai išspręsti, galima property stulpelyje nurodyti savybės pavadinimą, su kuriuo siejame parametrą:

resource model property type ref source prepare
resource1 json /cities/{id}
id param id path()
City id
id integer
name@lt string

Taip, pasidaro aišku, kad id parametras, yra susietas su id savybe. Tokia informacija naudinga transformuojant UDTS užklausas į šaltinio užklausas.

Tais atvejais, kai parametro ir savybės pavadinimai sutampa, galima palikti tik savybės pavadinimą:

resource model property type ref source prepare
resource1 json /cities/{id}
id param path()
City id
id integer
name@lt string

Specifikacija

sirex commented 1 month ago

Gal būt geriau parametrus registruoti nenaudojant param, kaip atskiros dimensijos, o tiesiog property.prepare stulpelyje įrašant path(), query() ir kitas funkcijas, kurias panaudojus, savybė būtų interpretuojama kaip parametras.

Klausimas, tik kaip atskirti, kada įrašius path() norime transformuoti savybės reikšmę, o kada registruoti parametrą?

path() atveju, atskyrimą galima padaryti su uri().path(), kur uri() funkcija reikšmę paverčia į URI objektą, kuris turi path() metodą. Jei path() kviečiamas kaip Property arba String metodas, tada pridedam parametrą.