Vue d’ensemble du modèle de programmation

Le Kit de développement logiciel (SDK) Rayfin utilise un modèle de programmation décoratif où vous définissez votre schéma de données une fois dans TypeScript et recevez automatiquement des API prêtes pour la production, des clients de type sécurisés et une infrastructure.

Concepts clés

Rayfin SDK combine trois éléments principaux :

  • Schéma orienté décorateur : utilisez des décorateurs TypeScript pour définir des modèles de données, des autorisations et des relations.
  • Génération automatique d’API : vos classes décorées deviennent des points de terminaison GraphQL sans écrire de code de contrôleur.
  • Clients de type sécurisé : les clients TypeScript générés fournissent une validation au moment de la compilation pour les requêtes et les mutations.

Fonctionnement

Lorsque vous créez une application Fabric, votre code passe par les étapes suivantes :

# Stage Que se passe-t-il ?
1 Développeur Vous créez l’application dans votre éditeur de choix.
2 TypeScript Vous écrivez des classes d’entité dans TypeScript.
3 Decorators Vous annotez des classes et des champs avec @entity, , @uuid@text, @roleet d’autres décorateurs.
4 Schema L’interface CLI compile les classes décorées dans un schéma de base de données, des stratégies d’autorisation et une configuration d’API.
5 API Le schéma est publié sous forme de points de terminaison GraphQL.
6 Client Le client RayfinClient généré expose des données et un client d’authentification de type sécurisé sur ces points de terminaison.
7 Application Votre application frontale consomme le client pour lire et écrire des données.

1. Définir des modèles de données avec des décorateurs

Vous définissez votre structure de données à l’aide de classes TypeScript et de décorateurs à partir de @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. Génération de schéma

Rayfin CLI (npx rayfin) analyse vos classes décorées et génère :

  • Schéma de base de données - Tables, colonnes, contraintes et index
  • Configuration de l’API - Définitions de point de terminaison GraphQL
  • Stratégies d’autorisation - Sécurité au niveau des lignes et contrôle d’accès au niveau du champ

4. Utilisation du client de type sécurisé

Les API GraphQL sont disponibles pour effectuer des opérations CRUD sur votre base de données. Rayfin SDK fournit une opération de client de données prête à l’emploi pour lire ou écrire ou supprimer des données.

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();

Référence de décorateur

Le Kit de développement logiciel (SDK) Rayfin fournit des décorateurs pour les modèles courants de modélisation des données :

Décorateurs d’entités

Décorateur Purpose Example
@entity() Marquer une classe en tant qu’entité de base de données @entity() class Product

Décorateurs de propriétés

Décorateur Type de base de données type TypeScript
@uuid() UNIQUEIDENTIFIER string
@text() NVARCHAR string
@int() INT number
@decimal() DÉCIMAL number
@bool() BIT boolean
@date() DATETIME2 Date

Décorateurs d’autorisation

Décorateur Purpose
@role() Définir des autorisations basées sur des rôles

Consultez Définir des autorisations de données pour plus de détails sur l’autorisation.

Flux de travail de développement

Un cycle de développement classique suit ce modèle :

  1. Définir ou modifier des modèles de données - Ajouter ou mettre à jour des classes TypeScript avec des décorateurs
  2. Test localement avec le back-end distant - Exécutez npm run dev pour tester les modifications de code front-end sur votre serveur principal d’application dans Fabric.
  3. Deploy to Fabric - Exécutez npx rayfin up pour déployer sur le service Fabric géré et appliquer vos modifications de schéma.

Les modifications apportées à vos modèles TypeScript se propagent automatiquement dans l’ensemble de la pile , du schéma de base de données aux points de terminaison d’API aux types clients.

Authorization

Les autorisations sont définies en parallèle de vos modèles de données à l’aide du décorateur @role :

@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;
}

Cette approche garantit les points suivants :

  • Les règles de sécurité vivent en regard des données qu’elles protègent
  • Les expressions de stratégie à typage sûr détectent les erreurs à la compilation
  • La refactorisation des champs d’entité met automatiquement à jour les vérifications d’autorisation