অ্যান্ড্রয়েডে ফায়ারবেস এসকিউএল কানেক্ট দিয়ে শুরু করুন

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

পূর্বশর্ত

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

  • এমন একটি পরিবেশ যেখানে নিম্নলিখিত টুলগুলি ইনস্টল করা আছে:
  • একটি গুগল অ্যাকাউন্ট।

টিউটোরিয়াল

টিউটোরিয়াল

১. একটি নতুন অ্যান্ড্রয়েড স্টুডিও প্রজেক্ট তৈরি করুন।

অ্যান্ড্রয়েড স্টুডিওতে, এম্পটি অ্যাক্টিভিটি টেমপ্লেট ব্যবহার করে একটি নতুন প্রজেক্ট তৈরি করুন।

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

অ্যান্ড্রয়েড স্টুডিও নতুন প্রজেক্ট ডায়ালগ

২. আপনার অ্যান্ড্রয়েড স্টুডিও প্রজেক্টে ফায়ারবেস যুক্ত করুন

আপনার 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")
}

৩. একটি ফায়ারবেস প্রজেক্ট শুরু করুন

অ্যান্ড্রয়েড স্টুডিও প্রজেক্ট ডিরেক্টরিতে যান এবং সেখানে একটি ফায়ারবেস প্রজেক্ট শুরু করুন।

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

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

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

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

এরপরে, আপনার ফায়ারবেস প্রজেক্টে আপনার অ্যান্ড্রয়েড অ্যাপটি রেজিস্টার করুন।

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 (উদ্ধৃতি)
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

৭. একটি অ্যান্ড্রয়েড ক্লায়েন্ট SDK তৈরি করুন

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

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

firebase dataconnect:sdk:generate
স্বয়ংক্রিয়ভাবে তৈরি অ্যান্ড্রয়েড এসডিকে (উদ্ধৃতাংশ)
public interface ExampleConnector : GeneratedConnector<ExampleConnector> {
  override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect

  public val listMovies: ListMoviesQuery

  // ...
}

৮. একটি নমুনা অ্যান্ড্রয়েড ক্লায়েন্ট লিখুন।

app/src/main/java/com/example/sequel/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)
            }
          }
        }
      }
    }
  }
}

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

অ্যান্ড্রয়েড স্টুডিও থেকে উদাহরণ অ্যাপটি রান করে এর কার্যকারিতা দেখুন।

পরবর্তী পদক্ষেপ

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

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

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

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

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

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

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

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