Android-এ Firebase SQL Connect ব্যবহার শুরু করা

এই কুইকস্টার্টে, আপনি একটি ছোট স্যাম্পেল ডেটাবেস তৈরি ও ডিপ্লয় করবেন এবং Android অ্যাপ থেকে এটি অ্যাক্সেস করবেন।

পূর্বশর্ত

এই কুইকস্টার্ট সম্পূর্ণ করতে, আপনার নিম্নলিখিতগুলি প্রয়োজন হবে:

  • নিম্নলিখিত টুল ইনস্টল করা আছে এমন এনভায়রনমেন্ট:
    • Android Studio-এর সাম্প্রতিক ভার্সন।
    • Firebase CLI। আপনার NPM ইনস্টল করা থাকলে, রান করুন:
      npm install -g firebase-tools@latest
      অন্যথায়, ইনস্টলেশন সংক্রান্ত নির্দেশাবলীর জন্য ডকুমেন্ট দেখুন।
  • Google অ্যাকাউন্ট।

টিউটোরিয়াল

টিউটোরিয়াল

১. নতুন Android Studio প্রোজেক্ট তৈরি করুন

Android Studio-তে, খালি অ্যাক্টিভিটি টেমপ্লেট সহ একটি নতুন প্রোজেক্ট তৈরি করুন।

প্রোজেক্টের নাম Quickstart App এবং প্যাকেজের নাম com.example.quickstartapp দিন।

Android Studio নতুন প্রোজেক্ট ডায়ালগ

২. আপনার 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.5.0" 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:35.1.0"))
  implementation("com.google.firebase:firebase-dataconnect")
}

৩. Firebase প্রোজেক্ট শুরু করা

Android Studio প্রোজেক্ট ডিরেক্টরিতে পরিবর্তন করুন এবং এতে একটি Firebase প্রোজেক্ট ইনিশিয়ালাইজ করুন।

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

প্রম্পট করা হলে, নিম্নলিখিত বিকল্পগুলি বেছে নিন:

  • নতুন Firebase প্রোজেক্ট তৈরি করুন।
  • Gemini-র সাহায্যে স্কিমা তৈরি করবেন না (এই টিউটোরিয়ালে, আপনি আগে থেকে তৈরি করা উদাহরণ স্কিমা ব্যবহার করবেন)।
  • ফ্রি ট্রায়াল Cloud SQL ইনস্ট্যান্স ও ডেটাবেস প্রোভিশন করুন।

অন্যান্য সব প্রম্পটের জন্য ডিফল্ট ভ্যালু গ্রহণ করুন।

এরপর, আপনার Firebase প্রোজেক্টে Android অ্যাপ রেজিস্টার করুন।

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

৪. 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 (উদ্ধৃতি)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

৫. আপনার স্কিমা ও অপারেশন ডিপ্লয় করুন

আপনার ডেটাবেস স্কিমা, কোয়েরি বা মিউটেশনে যখনই কোনও পরিবর্তন করবেন, তখনই আপনাকে ডেটাবেসে আপনার পরিবর্তন কার্যকর করার জন্য সেগুলি ডিপ্লয় করতে হবে।

firebase deploy --only dataconnect

৬. নমুনা ডেটা দিয়ে ডেটাবেস সিড করুন

এই সিড ডেটা আপনাকে স্যাম্পেল অ্যাপ পরীক্ষা করার সময় দেখার জন্য কিছু দেবে। মনে রাখবেন যে এই ধাপে আপনি নির্বিচারে GraphQL কার্যকর করছেন, যা প্রশাসনিক কাজের জন্য অনুমোদিত।

firebase dataconnect:execute dataconnect/seed_data.gql

৭. Android ক্লায়েন্ট SDK জেনারেট করুন

এই কমান্ডটি আপনার GraphQL সংজ্ঞা ব্যবহার করে একটি Android ক্লায়েন্ট SDK তৈরি করে বিশেষ করে আপনার ডেটাবেসের জন্য। আপনি এই লাইব্রেরি আপনার ক্লায়েন্ট অ্যাপে ব্যবহার করেন যাতে সব ডেটাবেস অপারেশন করা যায়।

আপনি iOS-এর জন্য Swift, ওয়েবের জন্য JavaScript এবং Flutter সহ একাধিক প্ল্যাটফর্মের জন্য লাইব্রেরি তৈরি করতে পারেন, connector.yaml-এ সংজ্ঞা যোগ করার মাধ্যমে।

firebase dataconnect:sdk:generate
অটোমেটিক জেনারেট করা Android SDK (উদ্ধৃতি)
public interface ExampleConnector : GeneratedConnector<ExampleConnector> {
  override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect

  public val listMovies: ListMoviesQuery

  // ...
}

৮. একটি নমুনা 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)
            }
          }
        }
      }
    }
  }
}

৯. অ্যাপটি ব্যবহার করে দেখুন

Android Studio থেকে, উদাহরণ হিসেবে দেখানো অ্যাপটি চালিয়ে দেখুন।

পরবর্তী ধাপ

SQL Connect VS Code এক্সটেনশন ব্যবহার করে দেখুন

SQL Connect-এর সাহায্যে ডেভেলপ করার সময়, আমরা SQL Connect VS Code এক্সটেনশন ব্যবহার করার জন্য বিশেষভাবে সাজেস্ট করি। আপনি যদি আপনার প্রাথমিক ডেভেলপমেন্ট এনভায়রনমেন্ট হিসেবে Visual Studio Code ব্যবহার নাও করেন, এক্সটেনশনটি বেশ কিছু ফিচার প্রদান করে যা স্কিমা এবং অপারেশন ডেভেলপমেন্টকে আরও সুবিধাজনক করে তোলে:

  • একটি GraphQL ল্যাঙ্গুয়েজ সার্ভার, যা SQL Connect-এর জন্য নির্দিষ্ট সিনট্যাক্স চেকিং এবং অটোকমপ্লিট সাজেশন প্রদান করে
  • আপনার কোডের সাথে সামঞ্জস্যপূর্ণ CodeLens বোতাম যা আপনাকে আপনার স্কিমা ডেফিনিশন ফাইল থেকে ডেটা পড়তে এবং লিখতে এবং আপনার অপারেশন ডেফিনিশন থেকে কোয়েরি এবং মিউটেশন এক্সিকিউট করতে দেয়।
  • আপনার GraphQL সংজ্ঞার সাথে আপনার জেনারেট করা SDK অটোমেটিক সিঙ্ক করে রাখুন।
  • সহজ করা লোকাল এমুলেটর সেট-আপ।
  • প্রোডাকশনে সহজ ডেপ্লয়মেন্ট।

লোকাল ডেভেলপমেন্টের জন্য SQL Connect এমুলেটর ব্যবহার করুন

যদিও এই টিউটোরিয়াল আপনাকে দেখিয়েছে কীভাবে সরাসরি প্রোডাকশনে SQL Connect স্কিমা ও অপারেশন ডেপ্লয় করতে হয়, আপনি হয়ত অ্যাপ ডেভেলপ করার সময় প্রোডাকশন ডেটাবেসে পরিবর্তন করতে চাইবেন না। এর পরিবর্তে, SQL Connect এমুলেটর সেট-আপ করুন এবং প্রোডাকশনের পরিবর্তে এর সাথে ডেভেলপমেন্টের কাজ করুন। এমুলেটর একটি লোকাল PGlite ইনস্ট্যান্স সেট-আপ করে যা Cloud SQL-এ লাইভ PostgreSQL ইনস্ট্যান্সের মতো কাজ করে।

আপনার অ্যাপের জন্য কীভাবে স্কিমা ও অপারেশন লিখতে হয় তা জানুন

SQL Connect-এর সাহায্যে অ্যাপ ডেভেলপ করার সময়, আপনার স্কিমা ও অপারেশনের ডিজাইন হল প্রথম ও সবচেয়ে গুরুত্বপূর্ণ ডেভেলপমেন্ট টাস্কগুলির মধ্যে একটি যা আপনাকে সম্পূর্ণ করতে হবে।

  • Firebase কনসোলে Gemini হল একটি AI টুল যা আপনার অ্যাপের ন্যাচারাল ল্যাঙ্গুয়েজ বিবরণ থেকে SQL Connect স্কিমা তৈরি করতে পারে। এই টুলটি আপনাকে খুব দ্রুত শুরু করতে সাহায্য করতে পারে, বিশেষ করে যদি আপনি আগে কখনও রিলেশনাল ডেটাবেস নিয়ে কাজ না করে থাকেন।
  • এছাড়াও, আপনি GraphQL ব্যবহার করে সরাসরি ডেটাবেস স্কিমা, কোয়েরি ও মিউটেশন লিখতে পারবেন। SQL Connect স্কিমা ডিজাইন করুন লিঙ্কে দেওয়া নির্দেশিকা দিয়ে শুরু করুন এবং তারপর অপারেশন কীভাবে লিখতে হয় তা জানতে ফলো-আপ পৃষ্ঠাগুলি দেখুন।

SQL Connect থেকে কীভাবে রিয়েল-টাইম আপডেট পাবেন তা জানুন

আপনি SQL Connect ব্যবহার করে এমন ক্লায়েন্ট অ্যাপ্লিকেশন লিখতে পারেন যা রিয়েল টাইমে পরিবর্তিত ডেটার প্রতিক্রিয়া দেয়। SQL Connect থেকে রিয়েল-টাইম আপডেট পান দেখুন।