Premiers pas avec Firebase SQL Connect sur iOS

Dans ce guide de démarrage rapide, vous allez créer et déployer une petite base de données exemple, puis y accéder à partir d'une application iOS.

Prérequis

Pour suivre ce guide de démarrage rapide, vous aurez besoin des éléments suivants :

  • Un environnement avec les outils suivants installés :
    • Une version récente de Xcode.
    • La CLI Firebase. Si NPM est installé, exécutez la commande suivante :
      npm install -g firebase-tools@latest
      Sinon, consultez la documentation pour obtenir des instructions d'installation.
  • Un compte Google.

Tutoriel

Tutoriel

1. Créer un projet Xcode

Dans Xcode, créez un projet avec le modèle App.

Nommez le projet Quickstart avec l'identifiant du bundle com.example.Quickstart.

Boîte de dialogue "Nouveau projet" Xcode

Créez le projet dans un dossier vide, comme ~/qs-ios. Xcode crée un dossier, ~/qs-ios/Quickstart, contenant les fichiers de votre projet.

2. Initialiser un projet Firebase

Accédez au répertoire du projet Xcode et initialisez-y un projet Firebase.

cd ~/qs-ios
firebase login --reauth
firebase init dataconnect

Lorsque vous y êtes invité, choisissez les options suivantes :

  • Créez un projet Firebase.
  • Ne créez pas de schéma avec Gemini (dans ce tutoriel, vous utiliserez un exemple de schéma prédéfini).
  • Provisionnez une instance et une base de données Cloud SQL en essai sans frais.

Acceptez les valeurs par défaut pour toutes les autres invites.

Ensuite, enregistrez l'application iOS dans votre projet Firebase.

firebase apps:create --bundle-id com.example.Quickstart ios ios-quickstart

Lorsque vous êtes invité à spécifier un ID App Store, appuyez sur Entrée pour ignorer l'étape.

firebase apps:sdkconfig ios -o Quickstart/GoogleService-Info.plist

Dans Xcode, sélectionnez File > Add Files to "Quickstart" (Fichier > Ajouter des fichiers à "Quickstart"), puis sélectionnez le fichier GoogleService-Info.plist.

3. Examiner les exemples de définitions GraphQL

Dans SQL Connect, vous définissez tous vos schémas et opérations de base de données à l'aide de GraphQL. Lorsque vous avez initialisé votre projet, la CLI Firebase a créé des exemples de définitions pour vous aider à démarrer.

dataconnect/schema/schema.gql (extrait)
type Movie @table {
  title: String!
  imageUrl: String!
  genre: String
}

type MovieMetadata @table {
  movie: Movie! @unique
  rating: Float
  releaseYear: Int
  description: String
}
dataconnect/example/queries.gql (extrait)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

4. Déployer vos schémas et opérations

Chaque fois que vous modifiez vos schémas de base de données, vos requêtes ou vos mutations, vous devez les déployer pour que vos modifications prennent effet sur la base de données.

firebase deploy --only dataconnect

5. Insérer des exemples de données dans la base de données

Ces données d'amorçage vous donneront un aperçu lorsque vous testerez l'application exemple. Notez que lors de cette étape, vous exécutez un code GraphQL arbitraire, ce qui est autorisé pour les tâches administratives.

firebase dataconnect:execute dataconnect/seed_data.gql

6. Générer un SDK client iOS

Cette commande utilise vos définitions GraphQL pour générer un SDK client iOS spécifiquement pour votre base de données. Vous utilisez cette bibliothèque dans votre application cliente pour effectuer toutes les opérations de base de données.

Vous pouvez générer des bibliothèques pour plusieurs plates-formes, y compris Kotlin pour Android, JavaScript pour le Web et Flutter, en ajoutant des définitions à connector.yaml.

firebase dataconnect:sdk:generate
SDK iOS généré automatiquement (extrait)
public class ListMoviesQuery {

  // ...

  @MainActor
  public func execute(
    fetchPolicy: QueryFetchPolicy = .preferCache,
  ) async throws -> OperationResult<ListMoviesQuery.Data> {
    var variables = ListMoviesQuery.Variables()

    let ref = dataConnect.query(
      name: "ListMovies", variables: variables, resultsDataType: ListMoviesQuery.Data.self,
      publisher: .observableMacro)

    let refCast = ref as! QueryRefObservation<ListMoviesQuery.Data, ListMoviesQuery.Variables>
    return try await refCast.execute(fetchPolicy: fetchPolicy)
  }
}

7. Ajouter des dépendances Firebase à votre projet Xcode

Ajoutez la bibliothèque générée à votre projet à l'aide de Swift Package Manager. Lorsque vous ajoutez la bibliothèque générée, elle inclut de manière transitive les bibliothèques Firebase Core et la bibliothèque Firebase SQL Connect.

Dans la barre de navigation Xcode, sélectionnez File > Add Package Dependencies > Add Local (Fichier > Ajouter des dépendances de package > Ajouter localement), puis choisissez le dossier contenant la bibliothèque générée, FirebaseDataConnectGenerated/DataConnectGenerated/. Le bon dossier contient un fichier nommé Package.swift.

8. Écrire un exemple de client iOS

Remplacez le contenu de Quickstart/QuickstartApp.swift par cette application iOS simple.

Notez que l'application effectue l'accès à la base de données nécessaire à l'aide d'une fonction du SDK généré.

import SwiftUI
import FirebaseCore
import FirebaseDataConnect
import DataConnectGenerated

@main
struct QuickstartApp: App {
  init() {
    FirebaseApp.configure()
  }
  var body: some Scene {
    WindowGroup {
      ListMovieView()
    }
  }
}

struct ListMovieView: View {
  @State private var moviesData: ListMoviesQuery.Data?

  var body: some View {
    VStack {
      ForEach(moviesData?.movies ?? []) { movie in
        Text(movie.title)
      }
    }
    .task {
      let result = try? await DataConnect.exampleConnector
          .listMoviesQuery.execute()
      self.moviesData = result?.data
    }
  }
}

9. Essayer l'appli

Dans Xcode, exécutez l'application exemple pour la voir en action.

Étapes suivantes

Essayer l'extension SQL Connect pour VS Code

Lorsque vous développez avec SQL Connect, nous vous recommandons vivement d'utiliser l'extension VS Code SQL Connect. Même si vous n'utilisez pas Visual Studio Code comme environnement de développement principal, l'extension fournit plusieurs fonctionnalités qui facilitent le développement de schémas et d'opérations :

  • Un serveur de langage GraphQL, qui fournit des suggestions de vérification de la syntaxe et de saisie semi-automatique spécifiques à SQL Connect
  • Boutons CodeLens alignés sur votre code qui vous permettent de lire et d'écrire des données à partir de vos fichiers de définition de schéma, et d'exécuter des requêtes et des mutations à partir de vos définitions d'opération.
  • Synchronisez automatiquement vos SDK générés avec vos définitions GraphQL.
  • Configuration simplifiée de l'émulateur local.
  • Déploiement simplifié en production.

Utiliser l'émulateur SQL Connect pour le développement local

Bien que ce tutoriel vous ait montré comment déployer des schémas et des opérations SQL Connect directement en production, vous ne souhaiterez probablement pas apporter de modifications à votre base de données de production pendant que vous développez activement votre application. À la place, configurez l'émulateur SQL Connect et effectuez votre travail de développement sur celui-ci plutôt que sur la production. L'émulateur configure une instance PGlite locale qui se comporte de la même manière qu'une instance PostgreSQL en direct sur Cloud SQL.

Découvrez comment rédiger des schémas et des opérations pour votre application

Lorsque vous développez des applications avec SQL Connect, la conception de vos schémas et opérations est l'une des premières et des plus importantes tâches de développement que vous effectuerez.

  • Gemini dans la console Firebase est un outil d'IA qui peut générer des schémas SQL Connect à partir d'une description en langage naturel de votre application. Cet outil peut vous aider à démarrer très rapidement, surtout si vous n'avez jamais travaillé avec des bases de données relationnelles.
  • Vous pouvez également écrire des schémas de base de données, des requêtes et des mutations directement à l'aide de GraphQL. Commencez par les conseils de la section Concevoir des schémas SQL Connect, puis consultez les pages suivantes pour découvrir comment écrire des opérations.

Découvrez comment obtenir des informations en temps réel de la part de SQL Connect

Vous pouvez utiliser SQL Connect pour écrire des applications clientes qui réagissent aux modifications de données en temps réel. Consultez Recevoir des informations en temps réel de SQL Connect.