Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
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.
Funktiot
Luo yksi UserDataFunctions instanssi ja rekisteröi jokainen funktio kutsumalla udf.func(name, handler, connections?).
Noudata näitä sääntöjä määritellessäsi funktiota:
- Aseta
RayfinContextparametri mihin tahansa käsittelijän allekirjoitukseen. Ajonaika tunnistaa sen tyypin mukaan, injektoi sen ja sulkee sen pois generoiduista funktioiden syötteistä. - Ilmoita yhteys jokaiselle delegoidulle tokenille, jota funktio tarvitsee. Jätä connections array pois funktioille, jotka käyttävät vain sovellusdataa tai eivät tarvitse delegoituja tokeneita.
Seuraava esimerkki rekisteröi yksinkertaisen funktion ja funktion, joka käyttää kutsukontekstia:
import {
UserDataFunctions,
type RayfinContext,
} from '@microsoft/fabric-user-data-functions';
// Match rayfin/data/schema.ts so getDataClient() is fully typed.
import type { TripPlan } from '../../data/TripPlan.js';
type AppSchema = { TripPlan: TripPlan };
const udf = new UserDataFunctions();
udf.func('greet', async (name: string): Promise<string> => {
return `Hello, ${name}!`;
});
udf.func(
'whoAmI',
async (ctx: RayfinContext<AppSchema>): Promise<string> => {
return ctx.accessToken ? 'authenticated' : 'anonymous';
},
);
Se RayfinContext tarjoaa funktion ajonaikaiset palvelut:
| Jäsen | Käyttötarkoitus |
|---|---|
ctx.accessToken |
Tarjoaa kirjautuneelle käyttäjälle Rayfin JSON Web Token (JWT). Purkaa sub vaatimus saadaksesi vakaan käyttäjätunnuksen. |
ctx.Tokens.<Audience> |
Saa alustan tarjoaman resurssitokenin annotaatiossa ilmoitetulle yleisölle RayfinContext . Käyttöönotetut funktiot käyttävät sovelluksen identiteettiä ja sen käyttöoikeuksia. Lisätietoja löytyy kohdasta Yhdistä funktiot ulkoisiin resursseihin. |
ctx.getSecret('NAME') |
Saa salaisuuden nykyiselle kutsulle. Palaa undefined , kun salaisuus ei ole selvillä. |
ctx.getDataClient() |
Saa tyypitetyn datan API:n yksiköillesi. Asiakasohjelma tukee luomis-, findManypäivitys-, poisto- ja lisätoimintoja. |
ctx.baseUrl |
Tarjoaa Rayfin-päätepisteen nykyiselle tuotteelle. |
ctx.publishableKey |
Tarjoaa julkaistavan avaimen nykyiselle tuotteelle. |
Asennuksen, paikallisen virheenkorjauksen ja käyttöönotto-ohjeiden osalta Katso Use Functions in Fabric Apps.
Kehitystyönkulku
Tyypillinen kehityssykli noudattaa tätä kaavaa:
- Määrittele tai muokkaa tietomalleja - Lisää tai päivitä TypeScript-luokkia koristelujen avulla
-
testaa paikallisesti etäbackendillä - Suorita
npm run devtestataksesi frontend-koodin muutoksia sovelluksen taustalla Fabric. -
Deploy to Fabric - Suorita
npx rayfin upkä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