Ohjelmointimallin yleiskatsaus

Rayfin SDK käyttää sisustajavetoista ohjelmointimallia, jossa määrittelet dataskeeman kerran TypeScriptissä ja saat automaattisesti tuotantovalmiit rajapinnat, tyyppiturvalliset asiakkaat ja infrastruktuurin.

Avainkäsitteet

Rayfin SDK yhdistää kolme ydinelementtiä:

  • Sisustajapohjainen skeema: Käytä TypeScript-koristelijoita määrittelemään tietomalleja, käyttöoikeuksia ja suhteita.
  • Automaattinen API:n generointi: Koristellut luokkasi muuttuvat GraphQL-päätepisteiksi ilman ohjauskoodin kirjoittamista.
  • Tyyppiturvalliset asiakkaat: Generoidut TypeScript-asiakkaat tarjoavat käännösaikaisen validoinnin kyselyille ja mutaatioille.

Näin se toimii

Kun luot Fabric-sovelluksen, koodisi kulkee näiden vaiheiden läpi:

# Näyttämö Mitä tapahtuu
1 Kehittäjä Kirjoitat sovelluksen valitsemassasi editorissa.
2 TypeScript Kirjoitat entiteettiluokkia TypeScriptissä.
3 Koristus Merkitset luokat ja kentät , @entity@uuid@text@roleja muilla sisustajilla.
4 Schema Komentojärjestelmä kääntää koristellut luokat tietokantaskeemaan, käyttöoikeuskäytäntöihin ja API-konfiguraatioon.
5 Ohjelmointirajapinnat Skeema julkaistaan GraphQL-päätepisteinä.
6 Asiakas Luotu RayfinClient avaa tyyppiturvallisen datan ja autentiusasiakkaan näiden päätepisteiden yli.
7 Sovellus Frontend-sovelluksesi käyttää asiakasta datan lukemiseen ja kirjoittamiseen.

1. Määrittele tietomalleja sisustajien avulla

Määrittelet tietorakenteesi TypeScript-luokkien ja koristelijoiden avulla:@microsoft/rayfin-core

import { entity, uuid, text, int } from '@microsoft/rayfin-core';

@entity()
export class Product {
  @uuid() id!: string;
  @text() name!: string;
  @text({ optional: true }) description?: string;
  @int() price!: number;
}

2. Skeeman generointi

Rayfin CLI (npx rayfin) analysoi palkitut luokkasi ja luo:

  • Tietokantaskeema – Taulukot, sarakkeet, rajoitteet ja indeksit
  • API-konfiguraatio - GraphQL-päätepisteiden määritelmät
  • Käyttöoikeuskäytännöt - Rivitason turvallisuus ja kenttätason käyttöoikeuksien hallinta

4. Tyyppiturvallinen asiakaskäyttö

GraphQL-rajapinnat ovat saatavilla CRUD-toimintojen suorittamiseen tietokannassasi. Rayfin SDK tarjoaa dataasiakastoiminnon suoraan datan lukemiseen, kirjoittamiseen tai poistamiseen.

import { RayfinClient } from '@microsoft/rayfin-client';

const client = new RayfinClient();

// TypeScript knows about Product fields
const products = await client.data.products.query()
  .select(['id', 'name', 'price'])
  .execute();

// Compile-time error if field doesn't exist
const invalid = await client.data.products.query()
  .select(['nonexistentField'])  // ❌ TypeScript error
  .execute();

Sisustusviite

Rayfin SDK tarjoaa koristelijoita yleisille datamallinnusmalleille:

Sisustajat

Sisustaja Käyttötarkoitus Esimerkki
@entity() Merkitse luokka tietokanta-entiteetiksi @entity() class Product

Kiinteistön sisustajat

Sisustaja Tietokantatyyppi TypeScript-tyyppi
@uuid() YKSILÖLLINEN TUNNUS string
@text() NVARCHAR string
@int() INT number
@decimal() DESIMAALI number
@bool() BITTI boolean
@date() DATETIME2 Date

Luvan sisustajat

Sisustaja Käyttötarkoitus
@role() Määrittele roolipohjaiset oikeudet

Katso Määrittele tietojen käyttöoikeudet valtuutustietojen yksityiskohtia varten.

Kehitystyönkulku

Tyypillinen kehityssykli noudattaa tätä kaavaa:

  1. Määrittele tai muokkaa tietomalleja - Lisää tai päivitä TypeScript-luokkia koristelujen avulla
  2. testaa paikallisesti etäbackendillä - Suorita npm run dev testataksesi frontend-koodin muutoksia sovelluksen taustalla Fabric.
  3. Deploy to Fabric - Suorita npx rayfin up käyttöönoton hallitulla Fabric-palvelulla ja skeemamuutokset toteutetaan.

Muutokset TypeScript-malleihisi etenevät automaattisesti koko pinossa — tietokantaskeemasta API-päätepisteisiin ja asiakastyyppeihin.

Authorization

Käyttöoikeudet määritellään yhdessä tietomalliesi kanssa koristelijan @role avulla:

@entity()
@role('authenticated', ['create', 'read', 'update', 'delete'], {
  policy: (claims, item) => claims.sub.eq(item.userId)
})
export class UserDocument {
  @uuid() id!: string;
  @text() userId!: string;
  @text() content!: string;
}

Tämä lähestymistapa takaa:

  • Turvallisuussäännöt elävät niiden suojaamien tietojen rinnalla
  • Tyypin turvalliset politiikkalausekkeet havaitsevat virheitä käännösvaiheessa
  • Entiteettikenttien refaktorointi päivittää automaattisesti käyttöoikeustarkistukset