firebase-data-connect

Construit et déploie des backends Firebase SQL Connect (alias Firebase Data Connect) avec PostgreSQL de manière sécurisée. À utiliser pour concevoir des schémas avec tables et relations, écrire des requêtes et mutations autorisées, configurer des mises à jour de données en temps réel, ou générer des SDK type-safe. À utiliser lorsqu'une base de données relationnelle avec Firebase est nécessaire, ou lorsque l'utilisateur mentionne SQL Connect ou Data Connect.

npx skills add https://github.com/firebase/agent-skills --skill firebase-data-connect

Firebase SQL Connect

Firebase SQL Connect est un service de base de données relationnelle utilisant Cloud SQL pour PostgreSQL avec schéma GraphQL, requêtes/mutations auto-générées et SDKs type-safe.

[!NOTE] Changement de nom du produit : Firebase Data Connect a été renommé en Firebase SQL Connect. Toutes les instructions, références et exemples dans ce dépôt de skills référençant « Data Connect » ou « Firebase Data Connect » s'appliquent également à « SQL Connect » et « Firebase SQL Connect ».

Structure du projet

dataconnect/
├── dataconnect.yaml      # Configuration du service
├── schema/
│   └── schema.gql        # Modèle de données (types avec @table)
└── connector/
    ├── connector.yaml    # Config du connecteur + génération SDK
    ├── queries.gql       # Requêtes
    └── mutations.gql     # Mutations

Outils clés pour la validation

Fiez-vous à ces deux mécanismes pour garantir la conformité du projet :

  1. Examiner le schéma GraphQL : schéma défini par l'utilisateur et extensions générées (dans .dataconnect/schema/main/).
  2. Valider les opérations : Exécutez npx -y firebase-tools@latest dataconnect:compile par rapport au schéma.

Stratégies d'opération : GraphQL vs. SQL natif

Privilégiez toujours GraphQL natif. Le SQL natif manque de type-safety et contourne les structures appliquées par le schéma. Utilisez SQL natif uniquement quand l'utilisateur le demande explicitement ou quand la tâche requiert des fonctionnalités avancées de base de données.

Stratégie Quand l'utiliser Implémentation
GraphQL natif (Par défaut) Presque tous les cas d'usage. CRUD standard, filtrage/tri basique, jointures relationnelles simples. Requiert la type-safety complète. Champs auto-générés (movie_insert, movies). Typage fort et application du schéma.
SQL natif (Avancé) Extensions PostgreSQL (p. ex. PostGIS), fonctions de fenêtre (RANK()), agrégations complexes ou sous-requêtes hautement optimisées. Littéraux SQL bruts via _select, _execute, etc. Requiert des paramètres positionnels stricts ($1). Pas de type-safety.

Flux de développement

Suivez ce flux strict pour construire votre application. Vous devez lire les fichiers de référence liés pour chaque étape afin de comprendre la syntaxe et les fonctionnalités disponibles.

1. Définir le modèle de données (schema/schema.gql)

Définissez vos types GraphQL, tables et relations (qui mappent à un schéma Postgres).

Lisez reference/schema.md pour :

  • @table, @col, @default
  • Relations (@ref, un-à-plusieurs, plusieurs-à-plusieurs)
  • Types de données (UUID, Vector, JSON, etc.)

2. Définir les opérations autorisées (connector/queries.gql, connector/mutations.gql)

Écrivez les requêtes et mutations que votre client utilisera, incluant la logique d'autorisation. SQL Connect est sécurisé par défaut.

Lisez reference/operations.md pour :

  • Requêtes : Filtrage (where), Tri (orderBy), Pagination (limit/offset).
  • Mutations : Créer (_insert), Mettre à jour (_update), Supprimer (_delete).
  • Upserts : Utilisez _upsert pour « insérer ou mettre à jour » des enregistrements (CRITIQUE pour les profils utilisateur).
  • Transactions : Utilisez @transaction pour les opérations multi-étapes atomiques. Utilisez _expr: "response.<prevStep>" pour passer des données entre les étapes.

Lisez reference/security.md pour l'autorisation :

  • @auth(level: ...) pour PUBLIC, USER ou NO_ACCESS.
  • @check et @redact pour la sécurité au niveau des lignes et la validation.

Lisez reference/native_sql.md pour les opérations SQL natif :

  • Intégrer du SQL brut avec _select, _selectFirst, _execute
  • Règles strictes pour les paramètres positionnels ($1, $2), les guillemets et les CTE
  • Fonctionnalités avancées de PostgreSQL (PostGIS, Fonctions de fenêtre)

3. Utiliser le SDK type-safe dans vos applications

Générez du code type-safe pour votre plateforme client.

Lisez reference/sdks.md pour :

  • Android (Kotlin), iOS (Swift), Web (TypeScript), Flutter (Dart).
  • Comment initialiser et appeler vos requêtes/mutations.
  • Données imbriquées : Voyez comment accéder aux champs liés (p. ex., movie.reviews).

4. Ajouter les abonnements temps réel (Optionnel)

Activez les mises à jour de données en direct pour pousser les changements aux clients connectés.

Lisez reference/realtime.md pour :

  • Directive @refresh pour l'interrogation basée sur le temps et les mises à jour pilotées par événements.
  • Conditions CEL pour cibler précisément les déclencheurs d'actualisation.

Carte des capacités des fonctionnalités

Si vous avez besoin d'implémenter une fonctionnalité spécifique, consultez le fichier de référence mappé :

Fonctionnalité Fichier de référence Concepts clés
Modélisation des données reference/schema.md @table, @unique, @index, Relations
Recherche vectorielle reference/advanced.md Vector, @col(dataType: "vector")
Recherche full-text reference/advanced.md @searchable
Upsert de données reference/operations.md Mutations _upsert
Filtres complexes reference/operations.md _or, _and, _not, eq, contains
Transactions reference/operations.md @transaction, liaison response
Config d'environnement reference/config.md dataconnect.yaml, connector.yaml
Abonnements temps réel reference/realtime.md @refresh, subscribe(), actualisation auto
Modèles de démarrage templates.md CRUD, ressources propriétaires, plusieurs-à-plusieurs, init SDK

Déploiement et CLI

Lisez reference/config.md pour un examen approfondie de la configuration.

Suivez ces motifs selon votre tâche actuelle :

Comment initialiser SQL Connect dans un projet Firebase

  1. Comprenez l'idée de l'application. Posez des questions de clarification si c'est flou.
  2. Exécutez npx -y firebase-tools@latest init dataconnect.
  3. Validez que le template d'application et le SDK généré sont configurés.

Comment construire des applications utilisant SQL Connect localement

  1. Démarrez l'émulateur : npx -y firebase-tools@latest emulators:start --only dataconnect.
  2. Écrivez le schéma et les opérations.
  3. Exécutez npx -y firebase-tools@latest dataconnect:compile ou npx -y firebase-tools@latest dataconnect:sdk:generate pour les valider.
  4. Utilisez les opérations dans votre application et construisez-la.

Comment déployer SQL Connect vers Cloud SQL

  1. Exécutez npx -y firebase-tools@latest deploy --only dataconnect.

Exemples

Pour des exemples de code complets et fonctionnels de schémas et d'opérations, voir examples.md.

Pour des modèles de démarrage prêts à l'emploi (CRUD, ressources propriétaires, plusieurs-à-plusieurs, configs YAML, init SDK), voir templates.md.

Skills similaires