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

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

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

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

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

ट्यूटोरियल

ट्यूटोरियल

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

Android Studio में, Empty Activity टेंप्लेट का इस्तेमाल करके एक नया प्रोजेक्ट बनाएं.

प्रोजेक्ट का नाम 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
अपने-आप जनरेट हुआ Android SDK (excerpt)
public interface ExampleConnector : GeneratedConnector<ExampleConnector> {
  override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect

  public val listMovies: ListMoviesQuery

  // ...
}

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

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

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

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 बटन. इनकी मदद से, स्कीमा की परिभाषा वाली फ़ाइलों से डेटा पढ़ा और लिखा जा सकता है. साथ ही, ऑपरेशन की परिभाषाओं से क्वेरी और म्यूटेशन लागू किए जा सकते हैं.
  • जनरेट किए गए एसडीके को GraphQL की परिभाषाओं के साथ अपने-आप सिंक करके रखें.
  • लोकल एम्युलेटर को आसानी से सेट अप किया जा सकता है.
  • आसानी से प्रोडक्शन में डिप्लॉय करने की सुविधा.

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

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

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

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

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