Siirry sisältöön

TypeScript-SDK

Paketti @basedb/sdk kutsuu REST API:a TypeScriptistä tai JavaScriptistä: tyypitetyt rivit, kaikki sivut, tiedostot, hylkäykset koodeineen. Ei riippuvuuksia: vakiomuotoinen fetch, Node 18:sta ja sitä uudemmista, Deno, Bun tai selain.

Fenêtre de terminal
npm install @basedb/sdk

Komento lukee tietokantojesi kuvauksen ja kirjoittaa niiden tyypit ohjelmasi tiedostoon:

Fenêtre de terminal
BASEDB_URL=https://basedb.exemple.fr BASEDB_TOKEN=bdb_… npx @basedb/sdk types --out src/basedb.ts

Jokaisesta tietokannasta, jonka tunnus avaa – tai niistä, jotka --base nimeää, toistettuna –, ja jokaisesta taulukosta kolme muotoa: rivi sellaisena kuin basedb sen lukee, sellaisena kuin sen luodaan, sellaisena kuin sitä muokataan. Yksi valinta -kentästä tulee sen arvojen unioni; kenttä, jonka basedb laskee – kaava, haku, kooste, määrä, automaattinen numero – luetaan kirjoittamatta sitä; pakollinen kenttä, jolla ei ole oletusarvoa, vaaditaan luotaessa. Suorita komento uudelleen, kun taulukot muuttuvat.

import { Basedb, BasedbError, filter } from '@basedb/sdk'
import type { Schema } from './basedb.js'
const db = new Basedb<Schema>({ url: 'https://basedb.exemple.fr', token: process.env.BASEDB_TOKEN! })
const opportunites = db.base('b_t4z56fq_ventes').table('opportunites')
const o = await opportunites.create({ titre: 'Audit', montant: 12500, statut: 'nouveau' })
await opportunites.update(o._id, { statut: 'gagne' })
for await (const ligne of opportunites.all({
filter: filter`statut eq ${'gagne'} and montant gte ${10000}`,
sort: '-montant',
})) {
console.log(ligne.titre, ligne.montant)
}

Taulukko, kenttä tai valinta, jota ei ole olemassa, on tyyppivirhe, jo ennen kuin ohjelma käynnistyy.

MetodiTehtävä
list(options)yksi sivu, ja next seuraavaan
all(options)suodattimen kaikki rivit, sivu kerrallaan, sitä mukaa kun niitä luetaan
first(options), count(filtre)ensimmäinen rivi, rivien määrä
get(id)yksi rivi
create(valeurs), createMany(lignes)rivin lisääminen; useita, kaikki tai ei yhtään
update(id, valeurs)kenttien muokkaaminen; puuttuva kenttä pysyy sellaisenaan, null tyhjentää sen
aggregate({ aggregates, filter, group })summat, keskiarvot, määrät suodattimen kaikilta riveiltä
comments(id).list(), .add(texte)rivin kommentit; @maininta ilmoittaa
upload(champ, octets, { name, type })tiedoston tallentaminen, jonka rivi mainitsee sen jälkeen id:llään
db.undo(ligne)tämän rivin tehneen kirjoituksen peruminen – hylätään, jos rivi on muuttunut sen jälkeen
  • filter kirjoittaa jokaisen liitetyn arvon arvona: käyttäjän kirjoittama teksti pysyy tekstinä, ei koskaan suodattimen palana.
  • Luvut luetaan desimaalitekstinä ("12500.0000000000"), jotta yksikään numero ei häviä; ne kirjoitetaan lukuna tai tekstinä.
  • Viittaus luetaan muodossa { id, display } ja kirjoitetaan linkitetyn rivin _id:llä; links: 'id' lukee vain _id:n.
  • Hylkäys on BasedbError: sen code – pysyvä, yksi kutakin syytä kohden, sama kaikilla kielillä –, status, details ja requestId. Hidastuspyyntö (429) yritetään uudelleen basedb:n ilmoittaman viiveen jälkeen.

Tietokanta, jolla on useita ympäristöjä – tuotanto, testi… –, säilyttää nimensä ja tyyppinsä ympäristöstä toiseen. Koko tietokannalle luodulla tunnuksella environment() kohdistuu yhteen ympäristöön, ja sama koodi toimii muualla:

const recette = db.environment('recette')
await recette.base('b_t4z56fq_ventes').table('opportunites').first()

Konstruktorin environment-asetus tekee saman koko asiakkaalle. SDK lähettää otsakkeen X-Basedb-Environment; ilman sitä jokainen tietokannan nimi osoittaa omaan ympäristöönsä (b_t4z56fq_ventes on tuotanto).

Integraatiotunnus luodaan käyttöliittymässä: tietokannan ⋯-valikko → API ja agentit → API- ja MCP-tunnukset…. Se avaa yhden tietokannan – kaikki sen ympäristöt tai vain yhden –, lukee sen rivejä, kirjoittaa niitä, jos se on luotu kirjoitusoikeuksin, eikä sillä ole koskaan enempää oikeuksia kuin sen luoneella henkilöllä, ja poistaa vain, jos se on luotu tätä varten (”Luku, kirjoitus ja poisto”): muuten delete() hylätään.

basedb on vapaa ohjelmisto, jonka tekee Eodia, tekoälynatiivi ohjelmistostudio.