Android पर Firebase SQL Connect का इस्तेमाल शुरू करना

इस क्विकस्टार्ट में, आपको डेटाबेस का एक छोटा सैंपल बनाने और उसे डिप्लॉय करने के साथ-साथ, Android ऐप्लिकेशन से उसे ऐक्सेस करने का तरीका बताया जाएगा.

ज़रूरी शर्तें

इस क्विकस्टार्ट को पूरा करने के लिए, आपको इनकी ज़रूरत होगी:

  • ऐसा एनवायरमेंट जिसमें ये टूल इंस्टॉल हों:
    • Android Studio का नया वर्शन.
    • Firebase CLI. अगर आपने एनपीएम इंस्टॉल किया है, तो यह कमांड चलाएं:
      npm install -g firebase-tools@latest
      इसके अलावा, इंस्टॉल करने के निर्देशों के लिए दस्तावेज़ देखें.
  • एक Google खाता.

ट्यूटोरियल

ट्यूटोरियल

1. Android Studio में नया प्रोजेक्ट बनाना

Android Studio में, खाली गतिविधि टेंप्लेट की मदद से एक नया प्रोजेक्ट बनाएं.

प्रोजेक्ट का नाम Quickstart App और पैकेज का नाम com.example.quickstartapp रखें.

Android Studio का नया प्रोजेक्ट डायलॉग

2. अपने Android Studio प्रोजेक्ट में Firebase जोड़ना

अपनी build.gradle.kts फ़ाइलों में, Firebase की डिपेंडेंसी और Kotlin सीरियलाइज़ेशन प्लगिन जोड़ें.

QuickstartApp/build.gradle.kts
plugins {
  alias(libs.plugins.android.application) apply false
  alias(libs.plugins.kotlin.compose) apply false

  // Add this line.
  id("com.google.gms.google-services") version "4.4.4" apply false
}
QuickstartApp/app/build.gradle.kts
plugins {
  alias(libs.plugins.android.application)
  alias(libs.plugins.kotlin.compose)

  // Add these lines.
  kotlin("plugin.serialization") version libs.versions.kotlin
  id("com.google.gms.google-services")
}

// ...

dependencies {
  // ...

  // Add these lines.
  implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.11.0")
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.11.0")

  implementation(platform("com.google.firebase:firebase-bom:34.14.0"))
  implementation("com.google.firebase:firebase-dataconnect")
}

3. Firebase प्रोजेक्ट को शुरू करना

Android Studio के प्रोजेक्ट डायरेक्ट्री में जाकर, उसमें Firebase प्रोजेक्ट शुरू करें.

cd ~/QuickstartApp
firebase login --reauth
firebase init dataconnect

प्रॉम्प्ट मिलने पर, ये विकल्प चुनें:

  • नया Firebase प्रोजेक्ट बनाएं.
  • Gemini की मदद से स्कीमा न बनाएं. इस ट्यूटोरियल में, आपको पहले से बने उदाहरण स्कीमा का इस्तेमाल करना है.
  • मुफ़्त में आज़माने की सुविधा वाला Cloud SQL इंस्टेंस और डेटाबेस चालू करें.

अन्य सभी प्रॉम्प्ट के लिए, डिफ़ॉल्ट वैल्यू स्वीकार करें.

इसके बाद, अपने Android ऐप्लिकेशन को Firebase प्रोजेक्ट में रजिस्टर करें.

firebase apps:create -a com.example.quickstartapp android android-quickstart
firebase apps:sdkconfig android -o app/google-services.json

4. GraphQL की परिभाषाओं का उदाहरण देखना

SQL Connect में, GraphQL का इस्तेमाल करके अपने डेटाबेस के सभी स्कीमा और कार्रवाइयां तय की जाती हैं. प्रोजेक्ट शुरू करने पर, Firebase CLI ने कुछ उदाहरण परिभाषाएं बनाई हैं, ताकि आपको शुरुआत करने में मदद मिल सके.

dataconnect/schema/schema.gql (excerpt)
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 (excerpt)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

5. अपने स्कीमा और कार्रवाइयों को डिप्लॉय करना

डेटाबेस के स्कीमा, क्वेरी या म्यूटेशन में बदलाव करने पर, आपको उन्हें डिप्लॉय करना होगा. ऐसा करने पर ही, डेटाबेस पर आपके बदलाव लागू होंगे.

firebase deploy --only dataconnect

6. डेटाबेस में सैंपल डेटा जोड़ना

सैंपल ऐप्लिकेशन की जांच करते समय, इस डेटा की मदद से आपको यह देखने में मदद मिलेगी कि ऐप्लिकेशन कैसा काम करता है. ध्यान दें कि इस चरण में, आपको GraphQL को अपनी मर्ज़ी के मुताबिक चलाना है. एडमिन से जुड़े टास्क के लिए, ऐसा किया जा सकता है.

firebase dataconnect:execute dataconnect/seed_data.gql

7. Android क्लाइंट SDK टूल जनरेट करना

इस कमांड से, GraphQL की परिभाषाओं का इस्तेमाल करके, आपके डेटाबेस के लिए खास तौर पर Android क्लाइंट SDK टूल जनरेट किया जाता है. डेटाबेस से जुड़ी सभी कार्रवाइयां करने के लिए, इस लाइब्रेरी का इस्तेमाल अपने क्लाइंट ऐप्लिकेशन में करें.

`connector.yaml` में परिभाषाएं जोड़कर, कई प्लैटफ़ॉर्म के लिए लाइब्रेरी जनरेट की जा सकती हैं. इनमें iOS के लिए Swift, वेब के लिए JavaScript, और Flutter शामिल हैं.

firebase dataconnect:sdk:generate
Auto-generated Android SDK (excerpt)
public interface ExampleConnector : GeneratedConnector<ExampleConnector> {
  override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect

  public val listMovies: ListMoviesQuery

  // ...
}

8. Android क्लाइंट का सैंपल लिखना

के कॉन्टेंट को इस आसान Android ऐप्लिकेशन से बदलें.app/src/main/java/com/example/quickstartapp/MainActivity.kt

ध्यान दें कि ऐप्लिकेशन, जनरेट किए गए SDK टूल के किसी फ़ंक्शन का इस्तेमाल करके, डेटाबेस को ऐक्सेस करने की ज़रूरी प्रोसेस पूरी करता है.

package com.example.quickstartapp

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import com.example.quickstartapp.ui.theme.QuickstartAppTheme
import com.google.firebase.dataconnect.generated.ExampleConnector
import com.google.firebase.dataconnect.generated.ListMoviesQuery
import com.google.firebase.dataconnect.generated.execute
import com.google.firebase.dataconnect.generated.instance

class MainActivity : ComponentActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()
    setContent {
      QuickstartAppTheme() {
        Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
          var movies by remember {
            mutableStateOf(emptyList<ListMoviesQuery.Data.MoviesItem>())
          }
          LaunchedEffect(Unit) {
            // Queries need to be executed in a coroutine context
            try {
              movies = ExampleConnector.instance.listMovies.execute().data.movies
            } catch (e: Exception) {
              // TODO: Handle error, e.g., show a Toast or update a state variable to
              //   display an error message.
            }
          }
          LazyColumn(modifier = Modifier.padding(innerPadding)) {
            items(movies) { movie ->
              Text(text = movie.title)
            }
          }
        }
      }
    }
  }
}

9. ऐप्लिकेशन आज़माएं

Android Studio से, सैंपल ऐप्लिकेशन चलाकर देखें कि यह कैसा काम करता है.

अगले चरण

SQL Connect VS Code एक्सटेंशन आज़माना

हमारा सुझाव है कि SQL Connect के साथ डेवलपमेंट करते समय, SQL Connect VS Code एक्सटेंशन का इस्तेमाल करें. अगर Visual Studio Code को अपने मुख्य डेवलपमेंट एनवायरमेंट के तौर पर इस्तेमाल नहीं किया जाता है, तब भी यह एक्सटेंशन कई ऐसी सुविधाएं देता है जिनसे स्कीमा और ऑपरेशन डेवलपमेंट को ज़्यादा आसानी से किया जा सकता है:

  • GraphQL लैंग्वेज सर्वर, जो सिंटैक्स की जांच करने और ऑटोकंप्लीट के सुझाव देने की सुविधा देता है, जो खास तौर पर SQL Connect के लिए है
  • आपके कोड के साथ-साथ CodeLens बटन, जिनकी मदद से स्कीमा की परिभाषा वाली फ़ाइलों से डेटा पढ़ा और लिखा जा सकता है. साथ ही, ऑपरेशन की परिभाषाओं से क्वेरी और म्यूटेशन चलाए जा सकते हैं.
  • जनरेट किए गए SDK टूल को GraphQL की परिभाषाओं के साथ अपने-आप सिंक करने की सुविधा.
  • स्थानीय एम्युलेटर को आसानी से सेट अप करने की सुविधा.
  • प्रोडक्शन पर आसानी से डिप्लॉयमेंट की सुविधा.

स्थानीय डेवलपमेंट के लिए, SQL Connect एम्युलेटर का इस्तेमाल करना

इस ट्यूटोरियल में, आपको SQL Connect स्कीमा और ऑपरेशन को सीधे प्रोडक्शन पर डिप्लॉय करने का तरीका बताया गया है. हालांकि, ऐसा हो सकता है कि ऐप्लिकेशन को डेवलप करते समय, आपको अपने प्रोडक्शन डेटाबेस में बदलाव न करना हो. इसके बजाय, SQL Connect एम्युलेटर सेट अप करें और प्रोडक्शन के बजाय, उसके साथ डेवलपमेंट का काम करें. एम्युलेटर स्थानीय PGlite इंस्टेंस सेट अप करता है. यह लाइव PostgreSQL इंस्टेंस की तरह काम करता है Cloud SQL.

अपने ऐप्लिकेशन के लिए स्कीमा और ऑपरेशन लिखने का तरीका जानना

SQL Connect की मदद से ऐप्लिकेशन डेवलप करते समय, स्कीमा और ऑपरेशन का डिज़ाइन, डेवलपमेंट के सबसे पहले और सबसे अहम टास्क में से एक है.

  • कंसोल में मौजूद Firebase Gemini, एक एआई टूल है. यह आपके ऐप्लिकेशन की सामान्य भाषा में दी गई जानकारी के आधार पर, SQL Connect स्कीमा जनरेट कर सकता है. इस टूल की मदद से, बहुत तेज़ी से काम शुरू किया जा सकता है. खास तौर पर, अगर आपने पहले कभी रिलेशनल डेटाबेस के साथ काम नहीं किया है, तो यह टूल आपके लिए बहुत मददगार साबित हो सकता है.
  • इसके अलावा, GraphQL का इस्तेमाल करके, डेटाबेस के स्कीमा, क्वेरी, और म्यूटेशन सीधे लिखे जा सकते हैं. स्कीमा डिज़ाइन करनेSQL Connect के बारे में जानकारी से शुरुआत करें, और इसके बाद, ऑपरेशन लिखने का तरीका जानने के लिए, अगले पेज पर जाएं.