Firebase SQL Connect'i kullanmaya başlama

Bu hızlı başlangıç kılavuzu, web ve mobil uygulamalarınızı PostgreSQL veritabanına bağlamak için Firebase SQL Connect hizmetini kullanmaya başlamanıza yardımcı olur. Bu kurstan sonra:

  • VS Code ve Firebase CLI ile yerel Firebase SQL Connect proje dizininizi oluşturun.
  • Doğal dildeki uygulama fikirlerinize göre SQL Connect şemaları, sorguları ve mutasyonları oluşturun.
  • SQL Connect sorgularını ve mutasyonlarını çalıştırmak için uygulamalarınızda kesin türlere sahip SDK'ları kullanın.
  • PostgreSQL için Cloud SQL örneği, SQL Connect şeması, sorgular ve mutasyonlar sağlayın.

Yerel proje dizinini oluşturma

SQL Connect için yerel geliştirme araçlarını iki şekilde yükleyebilirsiniz.

  1. Proje dizininde aşağıdaki komutu çalıştırın.

    Komut dosyası, Firebase CLI'yı ve SQL Connect VS Code uzantısını yükler ve projenizi ayarlamak için firebase init dataconnect üzerinden size yol gösterir. VS Code masaüstü uygulaması yüklü değilse komut dosyası, uygulamayı tarayıcıda açar.

    curl -sL https://firebase.tools/init/dataconnect | editor=true bash
  2. Visual Studio Code'un sol panelindeki Firebase simgesini tıklayarak SQL Connect VS Code uzantısı ekranını açın.

  3. Emülatörü yerel bir PGlite veritabanıyla çalıştırmak için Start emulators'ı (Emülatörleri başlat) tıklayın.

Yorum şeması

Firebase SQL Connect, veri modelinizi tanımlamak için GraphQL'i kullanır. @table yönergesi, bir GraphQL türünü PostgreSQL tablosuyla eşler. Türdeki alanlar PostgreSQL sütunlarıyla eşlenir. Diğer @table türlerine referans veren alanları kullanarak tablolar arasında ilişkiler tanımlayabilirsiniz. Buna, bileşik birincil anahtarlara sahip birleştirme tablolarını kullanan çoktan çoğa ilişkiler de dahildir.

Varsayılan kurulumda, SQL Connect şema dosyalarını dataconnect/schema/ dizininde bulabilirsiniz. Aşağıda, film şablonu şemasından iki örnek tablo verilmiştir. Şemanızı oluşturmak için Gemini'ı kullandıysanız şemanız farklı olabilir.

type Movie @table {
  # Every table has an implicit primary key field that looks something like:
  #  id: UUID! @default(expr: "uuidV4()")
  title: String!
  imageUrl: String!
  genre: String
}

type Review @table(key: ["movie", "user"]) {
  user: User!
  movie: Movie!
  rating: Int
  reviewText: String
  reviewDate: Date! @default(expr: "request.time")
}

SQL Connect şemaları hakkında daha fazla bilgi edinin.

Sorgu ve mutasyon geliştirme

Firebase SQL Connect, sorgular ve mutasyonlar için GraphQL'i kullanır. Bunları .gql dosyalarında tanımlar ve uygulamanızdan adlarıyla çağırırsınız. GraphQL söz dizimi, uygulamanızın ihtiyaç duyduğu verileri tam olarak getirmek için güçlü türlere sahip SDK'lar ve esnek bir API sağlar.

Veritabanınızdaki verileri besleme

Emülatör çalışırken ilk verilerle doldurabilirsiniz. Sağlanan dataconnect/seed_data.gql dosyasını kullanabilir veya kendi mutasyonlarınızı yazabilirsiniz.

Mutasyonları yürütmek ve yerel PGlite veritabanınızı doldurmak için VS Code'daki Run (local) (Çalıştır (yerel)) Code Lens düğmesini kullanın.

Firebase SQL Connect için CodeLens Çalıştır düğmesi

Sorguları ve mutasyonları inceleme

Varsayılan kurulumda, SQL Connect sorgularını ve mutasyonlarını dataconnect/example/ dizininde bulabilirsiniz.

İlişkisel verileri iç içe yerleştirilmiş sorgularla tam olarak sorgulayabilirsiniz.

query ListMovies @auth(level: PUBLIC, insecureReason: "Anyone can list all movies and their reviews.") {
  movies {
    title imageUrl genre
    reviews_on_movie {
      rating reviewDate
      user { username }
    }
  }
}

SQL Connect, Firebase Auth ile güvenli sorgular ve mutasyonlar oluşturmanıza yardımcı olur.

Uygulamanızın güvenliğini sağlamak için web ve mobil uygulamalar yalnızca @auth yönergeleriyle SQL Connect sorgularına ve mutasyonlarına erişebilir. Sorgular ve mutasyonlar, {field}_expr: "auth.uid" gibi bir ifade kullanarak Firebase Auth UID'sine güvenli bir şekilde erişebilir.

mutation AddReview($movieId: UUID!, $rating: Int!, $reviewText: String!) @auth(level: USER) {
  review_upsert(
    data: {
      userId_expr: "auth.uid"
      movieId: $movieId
      rating: $rating
      reviewText: $reviewText
    }
  )
}

SQL Connect sorguları hakkında daha fazla bilgi SQL Connect mutasyonları hakkında daha fazla bilgi SQL Connect Auth hakkında daha fazla bilgi

Sorgu ve mutasyon oluşturma

SQL Connect aracını etkili bir şekilde kullanmak için GraphQL uzmanı olmanız gerekmez. Doğal dildeki açıklamalardan SQL Connect sorguları ve mutasyonları oluşturabilirsiniz.

Herhangi bir .gql dosyasında, yorum başlatmak ve bir sorguyu veya mutasyonu açıklamak için # yazın. Ardından, GraphQL işlemini oluşturmak için Generate/Refine Operation (İşlem Oluştur/İyileştir) Code Lens düğmesini kullanın.

Firebase SQL Connect için CodeLens "Oluştur" düğmesi

Oluşturulan SDK'yı uygulamanızda kullanma

firebase init dataconnect, projenizdeki uygulamalar için tür güvenli SDK'ları otomatik olarak ayarlar. Gerekirse SQL Connect VS Code uzantısındaki Add SDK to app (Uygulamaya SDK ekle) düğmesini kullanarak veya firebase init dataconnect:sdk komutunu çalıştırarak SDK'yı manuel olarak ekleyebilirsiniz.

Web

  1. Firebase'i web uygulamanıza ekleyin.
  2. React uygulamanızın ana dosyasında:

    • Oluşturulan SDK'nızı içe aktarın:
    // Update as needed with the path to your generated SDK.
    import { listMovies, ListMoviesData } from '@dataconnect/generated';
    
    • Uygulamanızı SQL Connect emülatörüne bağlanacak şekilde ayarlayın:
    import { connectDataConnectEmulator } from 'firebase/data-connect';
    
    const dataConnect = getDataConnect(connectorConfig);
    connectDataConnectEmulator(dataConnect, 'localhost', 9399);
    
    • SQL Connect yöntemlerini çağırın.
    function App() {
      const [movies, setMovies] = useState<ListMoviesData['movies']>([]);
      useEffect(() => {
        listMovies.then(res => setMovies(res.data));
      }, []);
      return (
        movies.map(movie => <h1>{movie.title}</h1>);
      );
    }
    
    const root = ReactDOM.createRoot(document.getElementById('root'));
    root.render(<App />);
    

Swift

  1. Firebase'i iOS uygulamanıza ekleyin.
  2. Oluşturulan SDK'yı kullanmak için Xcode'da bağımlılık olarak yapılandırın.

    Xcode'un üst gezinme çubuğunda File > Add Package Dependencies > Add Local (Dosya > Paket Bağımlılıkları Ekle > Yerel Ekle) seçeneğini belirleyin ve oluşturulan Package.swift dosyasını içeren klasörü seçin.

  3. Uygulamanızın ana temsilcisinde:

    • SQL Connect SDK'sını ve oluşturduğunuz SDK'yı içe aktarın:

      import FirebaseDataConnect
      // Generated queries.
      // Update as needed with the package name of your generated SDK.
      import <CONNECTOR-PACKAGE-NAME>
      
      let connector = DataConnect.moviesConnector
      
    • Uygulamanızı SQL Connect emülatörüne bağlanacak şekilde ayarlayın:

      // Connect to the emulator on "127.0.0.1:9399"
      connector.useEmulator()
      
      // (alternatively) if you're running your emulator on non-default port:
      // connector.useEmulator(port: 9999)
      
    • SQL Connect yöntemlerini çağırın:

      struct ListMovieView: View {
          @StateObject private var queryRef = connector.listMovies.ref()
      
          var body: some View {
              VStack {
                  Button {
                      Task {
                          do {
                              try await refresh()
                          } catch {
                              print("Failed to refresh: \(error)")
                          }
                      }
                  } label: {
                      Text("Refresh")
                  }
      
                  // use the query results in a view
                  ForEach(queryRef.data?.movies ?? []) { movie in
                      Text(movie.title)
                  }
                  
              }
          }
      }
      
      @MainActor
      func refresh() async throws {
          _ = try await queryRef.execute()
      }
      
      struct ContentView_Previews: PreviewProvider {
          static var previews: some View {
              ListMovieView()
          }
      }
      

Kotlin Android

  1. Firebase'i Android uygulamanıza ekleyin.
  2. Oluşturulan SDK'yı kullanmak için Gradle'da SQL Connect öğesini bağımlılık olarak yapılandırın.

    app/build.gradle.kts hesabınızda plugins ve dependencies bilgilerini güncelleyin.

    plugins {
      // Use whichever versions of these dependencies suit your application.
      // The versions shown here were the latest as of March 14, 2025.
      // Note, however, that the version of kotlin("plugin.serialization") must,
      // in general, match the version of kotlin("android").
      id("com.android.application") version "8.9.0"
      id("com.google.gms.google-services") version "4.4.2"
      val kotlinVersion = "2.1.10"
      kotlin("android") version kotlinVersion
      kotlin("plugin.serialization") version kotlinVersion
    }
    
    dependencies {
      // Use whichever versions of these dependencies suit your application.
      // The versions shown here were the latest versions as of March 14, 2025.
      implementation("com.google.firebase:firebase-dataconnect:16.0.0-beta04")
      implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1")
      implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3")
    
      // These dependencies are not strictly required, but will very likely be used
      // when writing modern Android applications.
      implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0")
      implementation("androidx.appcompat:appcompat:1.7.0")
      implementation("androidx.activity:activity-ktx:1.10.1")
      implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7")
      implementation("com.google.android.material:material:1.12.0")
    }
    
  3. Uygulamanızın ana etkinliğinde:

    • Oluşturulan SDK'nızdan bir bağlayıcı örneği alın:
    private val connector = com.myapplication.MoviesConnector.instance
    
    • Uygulamanızı SQL Connect emülatörüne bağlanacak şekilde ayarlayın:
    private val connector = com.myapplication.MoviesConnector.instance
      .apply {
        // Connect to the emulator on "10.0.2.2:9399" (default port)
        dataConnect.useEmulator()
    
        // (alternatively) if you're running your emulator on non-default port:
        // dataConnect.useEmulator(port = 9999)
      }
    
    • SQL Connect yöntemlerini çağırın.
    class MainActivity : AppCompatActivity() {
    
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val textView: TextView = findViewById(R.id.text_view)
    
        lifecycleScope.launch {
          lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
            
            val result = connector.listMovies.runCatching { execute { } }
            
            val newTextViewText = result.fold(
              onSuccess = {
                val titles = it.data.movies.map { it.title }
                "${titles.size} movies: " + titles.joinToString(", ")
              },
              onFailure = { "ERROR: ${it.message}" }
            )
            textView.text = newTextViewText
          }
        }
      }
    }
    

Flutter

  1. Firebase'i Flutter uygulamanıza ekleyin.
  2. flutterfire CLI'yı yükleyin dart pub global activate flutterfire_cli.
  3. flutterfire configure komutunu çalıştırın.
  4. Uygulamanızın ana işlevinde:

    • Oluşturulan SDK'nızı içe aktarın:
    // Generated queries.
    // Update as needed with the path to your generated SDK
    
    import 'movies_connector/movies.dart';
    
    • Uygulamanızı SQL Connect emülatörüne bağlanacak şekilde ayarlayın:
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp(
        options: DefaultFirebaseOptions.currentPlatform,
      );
      
      MoviesConnector.instance.dataConnect
          .useDataConnectEmulator(Uri.base.host, 443, isSecure: true);
      
      runApp(const MyApp());
    }
    
    • SQL Connect yöntemlerini çağırın.
    class MyApp extends StatelessWidget {
      const MyApp({super.key});
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
            home: Scaffold(
                body: Column(children: [
          ConstrainedBox(
            constraints: const BoxConstraints(maxHeight: 200),
            child: FutureBuilder(
                future: MoviesConnector.instance.listMovies().execute(),
                builder: (context, snapshot) {
                  if (snapshot.connectionState == ConnectionState.done) {
                    return ListView.builder(
                      scrollDirection: Axis.vertical,
                      itemBuilder: (context, index) => Card(
                          child: Text(
                        snapshot.data!.data.movies[index].title,
                      )),
                      itemCount: snapshot.data!.data.movies.length,
                    );
                  }
                  return const CircularProgressIndicator();
                }),
          )
        ])));
      }
    }
    

Üretime dağıtma

Şemanızı, sorgularınızı ve mutasyonlarınızı üretime dağıtmak için:

  1. Fiyatlandırma sayfasındaki fiyatlandırma ve ücretsiz deneme bilgilerini inceleyin. Projeniz, Firebase SQL Connect deneme seçeneklerinden birine uygun olabilir.

  2. SQL Connect VS Code uzantısında Deploy to production (Canlı sürüme dağıt) düğmesini tıklayın veya terminalde şu komutu çalıştırın:

    firebase deploy --only dataconnect
    

    Dağıtımdan sonra şemanızı görüntüleyebilir ve Firebase konsolunda sorgular ve mutasyonlar çalıştırabilirsiniz (Veritabanları ve Depolama > SQL Connect'e gidin).

dataconnect.yaml hakkında daha fazla bilgi SQL Connect'ün Cloud SQL ile nasıl çalıştığı hakkında daha fazla bilgi

Sonraki adımlar

Hızlı başlangıç işlemlerini tamamladığınıza göre, sonraki adımlara geçebilirsiniz: