স্থানীয়ভাবে Firebase ডেটা সংযোগ দিয়ে শুরু করুন, স্থানীয়ভাবে Firebase ডেটা সংযোগ দিয়ে শুরু করুন৷

এই কুইকস্টার্টে, আপনি শিখবেন কিভাবে আপনার অ্যাপ্লিকেশনে স্থানীয়ভাবে একটি প্রোডাকশন SQL ইনস্ট্যান্স সেট আপ না করেই Firebase Data Connect তৈরি করবেন। আপনি যা করবেন:

  • আপনার Firebase প্রকল্পে Firebase Data Connect যোগ করুন।
  • স্থানীয় ইনস্ট্যান্সের সাথে কাজ করার জন্য ভিজ্যুয়াল স্টুডিও কোড এক্সটেনশন সহ একটি ডেভেলপমেন্ট পরিবেশ সেট আপ করুন।
  • তারপর আমরা আপনাকে দেখাবো কিভাবে:
    • Gemini Code Assist সহ VS কোড এক্সটেনশন টুলিং ব্যবহার করুন, যাতে:
      • একটি অ্যাপের জন্য একটি স্কিমা তৈরি করুন
      • আপনার স্থানীয় ডাটাবেস পূরণ করার জন্য প্রশাসনিক প্রশ্ন এবং মিউটেশন তৈরি করুন।
      • একটি স্থাপনযোগ্য সংযোগকারীতে আপনার অ্যাপের জন্য কোয়েরি এবং মিউটেশন বাস্তবায়নে সহায়তা করুন
    • স্থানীয় এমুলেটরের বিরুদ্ধে নমুনা ডেটা দিয়ে আপনার প্রশ্ন এবং মিউটেশন পরীক্ষা করুন।
    • জোরালোভাবে টাইপ করা SDK তৈরি করুন এবং আপনার অ্যাপে ব্যবহার করুন।
    • আপনার চূড়ান্ত স্কিমা এবং সংযোগকারীটি ক্লাউডে স্থাপন করুন (ঐচ্ছিক, একটি ব্লেজ প্ল্যান আপগ্রেড সহ)।

স্থানীয় উন্নয়ন প্রবাহ নির্বাচন করুন

Data Connect আপনাকে ডেভেলপমেন্ট টুল ইনস্টল করার এবং স্থানীয়ভাবে কাজ করার দুটি উপায় অফার করে।

পূর্বশর্ত

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

উন্নয়ন পরিবেশ সেট আপ করুন

  1. আপনার স্থানীয় প্রকল্পের জন্য একটি নতুন ডিরেক্টরি তৈরি করুন।
  2. নতুন ডিরেক্টরিতে VS কোড খুলুন।
  3. ভিজ্যুয়াল স্টুডিও কোড মার্কেটপ্লেস থেকে ফায়ারবেস ডেটা কানেক্ট এক্সটেনশনটি ইনস্টল করুন।

আপনার প্রকল্প ডিরেক্টরি সেট আপ করুন

আপনার স্থানীয় প্রকল্প সেট আপ করতে, আপনার প্রকল্প ডিরেক্টরিটি শুরু করুন। IDE উইন্ডোতে, বাম দিকের প্যানেলে, Data Connect VS Code এক্সটেনশন UI খুলতে Firebase আইকনে ক্লিক করুন:

  1. "Google দিয়ে সাইন ইন করুন" বোতামে ক্লিক করুন।
  2. Connect a Firebase project বোতামে ক্লিক করুন এবং কনসোলে আপনার আগে তৈরি করা প্রকল্পটি নির্বাচন করুন।
  3. Run firebase init বাটনে ক্লিক করুন।
  4. স্টার্ট এমুলেটর বোতামে ক্লিক করুন।

একটি স্কিমা তৈরি করুন

আপনার Firebase প্রজেক্ট ডিরেক্টরিতে, /dataconnect/schema/schema.gql ফাইলে, সিনেমা পর্যালোচনা সম্পর্কে একটি GraphQL স্কিমা সংজ্ঞায়িত করা শুরু করুন।

স্কিমা তৈরি করতে Gemini Code Assist ব্যবহার করুন

Gemini Code Assist ব্যবহার করে একটি মুভি রিভিউ অ্যাপ স্কিমা তৈরি করতে:

  1. ডেটা কানেক্ট VS কোড এক্সটেনশন আইকনে ক্লিক করে এর সাইডবারটি খুলুন।
  2. "এআই দিয়ে তোমার স্কিমা এবং কোয়েরি তৈরি করো" এ ক্লিক করলে Gemini Code Assist চ্যাট উইন্ডোটি খোলে।
  3. চ্যাট উইন্ডোর নীচে, নিশ্চিত করুন যে এজেন্ট মোডটি টগল করা আছে।
  4. চ্যাট উইন্ডোর নীচের চ্যাট বক্সে ক্লিক করুন এবং আপনি যে ধরণের অ্যাপ তৈরি করছেন তার একটি স্বাভাবিক ভাষা বর্ণনা টাইপ করা শুরু করুন।
  5. এন্টার টিপুন, এবং জেমিনি স্কিমা তৈরি শুরু করার জন্য যে MCP সার্ভার কমান্ডটি কার্যকর করবে তা প্রদর্শন করবে।
  6. Accept এ ক্লিক করুন। কিছুক্ষণ পরে, একটি প্রস্তাবিত স্কিমা প্রদর্শিত হবে। স্কিমাটি পর্যালোচনা করুন।
  7. schema.gql এ কোড যোগ করতে:

    1. ফাইলটি আপডেট করার জন্য Gemini Code Assist আপনাকে অনুরোধ করার জন্য অপেক্ষা করুন।
    2. ফাইলটি পরিবর্তন করতে Accept এ ক্লিক করুন, অথবা কমিট করার আগে পরিবর্তনগুলি দেখুন এ ক্লিক করুন।

সিনেমা

Data Connect এ, GraphQL ক্ষেত্রগুলি কলামে ম্যাপ করা হয়। Movie-তে id , title , imageUrl এবং genre থাকে। Data Connect আদিম ডেটা প্রকারগুলিকে চিনতে পারে: String এবং UUID

নিম্নলিখিত স্নিপেটটি অনুলিপি করুন অথবা ফাইলের সংশ্লিষ্ট লাইনগুলি আনকমেন্ট করুন।

# By default, a UUID id key will be created by default as primary key.
# If you want to specify a primary key, say title, which you can do through
# the @table(key: "title") directive
type Movie @table {
  id: UUID! @default(expr: "uuidV4()")
  title: String!
  imageUrl: String!
  genre: String
}

মুভিমেটাডেটা

আপনি নিচের মতো একটি টাইপ সংজ্ঞা দেখতে পাবেন। অথবা, আপনি নিম্নলিখিত স্নিপেটটি অনুলিপি করতে পারেন অথবা ডিফল্ট ফাইলে সংশ্লিষ্ট লাইনগুলি আনকমেন্ট করতে পারেন।

# Movie - MovieMetadata is a one-to-one relationship
type MovieMetadata @table {
  # This time, we omit adding a primary key because
  # you can rely on Data Connect to manage it.

  # @unique indicates a 1-1 relationship
  movie: Movie! @unique
  # movieId: UUID <- this is created by the above reference
  rating: Float
  releaseYear: Int
  description: String
}

লক্ষ্য করুন যে movie ফিল্ডটি এক ধরণের Movie ম্যাপ করা হয়েছে। Data Connect বোঝে যে এটি Movie এবং MovieMetadata মধ্যে একটি সম্পর্ক এবং আপনার জন্য এই সম্পর্কটি পরিচালনা করবে।

ডকুমেন্টেশনে ডেটা কানেক্ট স্কিমা সম্পর্কে আরও জানুন।

আপনার টেবিলে ডেটা যোগ করুন

IDE এডিটর প্যানেলে, আপনি /dataconnect/schema/schema.gql তে GraphQL টাইপের উপরে CodeLens বোতামগুলি দেখতে পাবেন। আপনি আপনার স্থানীয় ডাটাবেসে ডেটা যোগ করার জন্য ডেটা যোগ করুন এবং (স্থানীয়) বোতামগুলি ব্যবহার করতে পারেন।

Movie এবং MovieMetadata টেবিলে রেকর্ড যোগ করতে:

  1. schema.gql তে, Movie type declaration এর উপরে Add data বাটনে ক্লিক করুন।
    Firebase Data Connect-এর জন্য CodeLens ডেটা যোগ করার বোতাম
  2. তৈরি হওয়া Movie_insert.gql ফাইলে, তিনটি ক্ষেত্রের জন্য হার্ড কোড ডেটা।
  3. রান (স্থানীয়) বোতামে ক্লিক করুন।
    ফায়ারবেস ডেটা কানেক্টের জন্য কোডলেন্স রান বোতাম
  4. MovieMetadata টেবিলে একটি রেকর্ড যোগ করার জন্য পূর্ববর্তী ধাপগুলি পুনরাবৃত্তি করুন, জেনারেট করা MovieMetadata_insert মিউটেশনে প্রম্পট করা movieId ক্ষেত্রে আপনার মুভির id সরবরাহ করুন।

তথ্য যোগ করা হয়েছে কিনা তা দ্রুত যাচাই করার জন্য:

  1. schema.gql এ ফিরে, Movie type ঘোষণার উপরে Read data বোতামে ক্লিক করুন।
  2. ফলাফলস্বরূপ Movie_read.gql ফাইলে, কোয়েরিটি কার্যকর করতে Run (Local) বোতামে ক্লিক করুন।

ডকুমেন্টেশনে ডেটা কানেক্ট মিউটেশন সম্পর্কে আরও জানুন।

একটি কোয়েরি সংজ্ঞায়িত করুন

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

তবে, GraphQL raw SQL এর তুলনায় অনেক বেশি সংক্ষিপ্ত এবং টাইপ-নিরাপদ। এবং, আমাদের VS কোড এক্সটেনশনটি কোয়েরি এবং মিউটেশন উভয়ের জন্যই ডেভেলপমেন্ট অভিজ্ঞতা সহজ করে তোলে।

Gemini Code Assist ব্যবহার করে একটি কোয়েরি তৈরি করতে:

  1. ডেটা কানেক্ট VS কোড এক্সটেনশন আইকনে ক্লিক করে এর সাইডবারটি খুলুন।
  2. "এআই দিয়ে তোমার স্কিমা এবং কোয়েরি তৈরি করো" এ ক্লিক করলে Gemini Code Assist চ্যাট উইন্ডোটি খোলে।
  3. চ্যাট উইন্ডোর নীচে, নিশ্চিত করুন যে এজেন্ট মোডটি টগল করা আছে।
  4. চ্যাট উইন্ডোর নীচের চ্যাট বক্সে ক্লিক করুন, এবং আপনি যে ধরণের অপারেশন তৈরি করতে চান তার একটি স্বাভাবিক ভাষা বর্ণনা টাইপ করা শুরু করুন।
  5. এন্টার টিপুন, এবং জেমিনি অপারেশনটি ডেভেলপ করার জন্য যে MCP সার্ভার কমান্ডটি কার্যকর করবে তা প্রদর্শন করবে।
  6. Accept এ ক্লিক করুন। কিছুক্ষণ পরে, একটি প্রস্তাবিত কোয়েরি প্রদর্শিত হবে। কোয়েরিটি পর্যালোচনা করুন।
  7. queries.gql এ কোড যোগ করতে:

    1. ফাইলটি আপডেট করার জন্য Gemini Code Assist আপনাকে অনুরোধ করার জন্য অপেক্ষা করুন।
    2. ফাইলটি পরিবর্তন করতে Accept এ ক্লিক করুন, অথবা কমিট করার আগে পরিবর্তনগুলি দেখুন এ ক্লিক করুন।

কাছাকাছি থাকা CodeLens বোতামটি ব্যবহার করে কোয়েরিটি কার্যকর করুন।

ডকুমেন্টেশনে ডেটা কানেক্ট কোয়েরি সম্পর্কে আরও জানুন।

SDK তৈরি করুন এবং আপনার অ্যাপে ব্যবহার করুন

IDE বাম-হাতের প্যানেলে, Data Connect VS Code এক্সটেনশন UI খুলতে Firebase আইকনে ক্লিক করুন:

  1. অ্যাপে SDK যোগ করুন বোতামে ক্লিক করুন।
  2. যে ডায়ালগটি প্রদর্শিত হবে, তাতে আপনার অ্যাপের জন্য কোড সম্বলিত একটি ডিরেক্টরি নির্বাচন করুন। Data Connect SDK কোড তৈরি হবে এবং সেখানে সংরক্ষণ করা হবে।

  3. আপনার অ্যাপ প্ল্যাটফর্ম নির্বাচন করুন, তারপর মনে রাখবেন যে SDK কোডটি আপনার নির্বাচিত ডিরেক্টরিতে অবিলম্বে তৈরি হয়েছে।

কোনও অ্যাপ থেকে আপনার কোয়েরি কল করতে SDK ব্যবহার করুন

আপনার ListMovies কোয়েরিতে কল বাস্তবায়নের জন্য Data Connect দ্বারা তৈরি SDK ব্যবহার করতে পারেন। এরপর আপনি Data Connect এমুলেটর ব্যবহার করে স্থানীয়ভাবে এই কোয়েরিটি কার্যকর করতে পারেন।

ওয়েব

  1. আপনার ওয়েব অ্যাপে Firebase যোগ করুন।
  2. আপনার React অ্যাপের প্রধান ফাইলে:

    • আপনার তৈরি SDK আমদানি করুন
    • Data Connect এমুলেটরের সাথে সংযোগ স্থাপনের জন্য আপনার অ্যাপটি ব্যবহার করুন
    • Data Connect পদ্ধতিতে কল করুন।
    import React from 'react';
    import ReactDOM from 'react-dom/client';
    
    import { connectDataConnectEmulator } from 'firebase/data-connect';
    
    // Generated queries.
    // Update as needed with the path to your generated SDK.
    import { listMovies, ListMoviesData } from '@dataconnect/generated';
    
    const dataConnect = getDataConnect(connectorConfig);
    connectDataConnectEmulator(dataConnect, 'localhost', 9399);
    
    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 />);
    

সুইফট

  1. আপনার iOS অ্যাপে Firebase যোগ করুন।
  2. জেনারেটেড SDK ব্যবহার করতে, এটিকে Xcode-এ একটি নির্ভরতা হিসেবে কনফিগার করুন।

    Xcode এর উপরের নেভিগেশন বারে, File > Add Package Dependencies > Add Local নির্বাচন করুন এবং জেনারেট করা Package.swift ধারণকারী ফোল্ডারটি নির্বাচন করুন।

  3. আপনার অ্যাপের প্রধান প্রতিনিধিতে:

    • আপনার তৈরি SDK আমদানি করুন
    • Data Connect এমুলেটরের সাথে সংযোগ স্থাপনের জন্য আপনার অ্যাপটি ব্যবহার করুন
    • Data Connect পদ্ধতিতে কল করুন।
    import SwiftUI
    
    import FirebaseDataConnect
    // Generated queries.
    // Update as needed with the package name of your generated SDK.
    import <CONNECTOR-PACKAGE-NAME>
    
    let connector = DataConnect.moviesConnector
    
    // 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)
    
    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()
        }
    }
    

কোটলিন অ্যান্ড্রয়েড

  1. আপনার অ্যান্ড্রয়েড অ্যাপে Firebase যোগ করুন।
  2. জেনারেটেড SDK ব্যবহার করতে, Gradle-এ Data Connect নির্ভরতা হিসেবে কনফিগার করুন।

    আপনার app/build.gradle.ktsplugins এবং dependencies আপডেট করুন।

    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. আপনার অ্যাপের প্রধান কার্যকলাপে:

    • আপনার তৈরি SDK আমদানি করুন
    • Data Connect এমুলেটরের সাথে সংযোগ স্থাপনের জন্য আপনার অ্যাপটি ব্যবহার করুন
    • Data Connect পদ্ধতিতে কল করুন।
    import android.os.Bundle
    import android.widget.TextView
    import androidx.appcompat.app.AppCompatActivity
    import androidx.lifecycle.Lifecycle
    import androidx.lifecycle.lifecycleScope
    import androidx.lifecycle.repeatOnLifecycle
    import kotlinx.coroutines.launch
    
    
    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)
      }
    
    
    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
          }
        }
      }
    }
    

ঝাঁকুনি

  1. আপনার Flutter অ্যাপে Firebase যোগ করুন।
  2. flutterfire CLI dart pub global activate flutterfire_cli ইনস্টল করুন।
  3. flutterfire configure চালান।
  4. আপনার অ্যাপের প্রধান ফাংশনে:
    • আপনার তৈরি SDK আমদানি করুন
    • Data Connect এমুলেটরের সাথে সংযোগ স্থাপনের জন্য আপনার অ্যাপটি ব্যবহার করুন
    • Data Connect পদ্ধতিতে কল করুন।
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'firebase_options.dart';

// Generated queries.
// Update as needed with the path to your generated SDK

import 'movies_connector/movies.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  
  MoviesConnector.instance.dataConnect
      .useDataConnectEmulator(Uri.base.host, 443, isSecure: true);
  
  runApp(const MyApp());
}

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();
            }),
      )
    ])));
  }
}

আপনার স্কিমা এবং কোয়েরি প্রোডাকশনে স্থাপন করুন

আপনার অ্যাপে স্থানীয় সেটআপ হয়ে গেলে, এখন আপনি আপনার স্কিমা এবং সংযোগকারীকে ক্লাউডে স্থাপন করতে পারবেন। ক্লাউড SQL ইনস্ট্যান্স সেট আপ করার জন্য আপনার একটি ব্লেজ প্ল্যান প্রকল্পের প্রয়োজন।

  1. Firebase কনসোলের ডেটা কানেক্ট বিভাগে নেভিগেট করুন এবং একটি বিনামূল্যে ট্রায়াল ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি করুন।
  2. IDE ইন্টিগ্রেটেড টার্মিনালে , firebase init dataconnect চালান এবং কনসোলে আপনার তৈরি করা অঞ্চল/পরিষেবা আইডিটি নির্বাচন করুন।
  3. "File dataconnect/dataconnect.yaml already exists, Overwrite?" বলার সময় "Y" নির্বাচন করুন।
  4. IDE উইন্ডোতে, VS কোড এক্সটেনশন UI-তে, Deploy to production বোতামে ক্লিক করুন।
  5. একবার স্থাপন করা হয়ে গেলে, স্কিমা, অপারেশন এবং ডেটা ক্লাউডে আপলোড করা হয়েছে কিনা তা যাচাই করতে Firebase কনসোলে যান। আপনি স্কিমাটি দেখতে সক্ষম হবেন এবং কনসোলে আপনার অপারেশনগুলিও চালাতে পারবেন। PostgreSQL ইনস্ট্যান্সের জন্য ক্লাউড SQL তার চূড়ান্ত স্থাপন করা জেনারেটেড স্কিমা এবং ডেটা দিয়ে আপডেট করা হবে।

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

আপনার মোতায়েন করা প্রকল্পটি পর্যালোচনা করুন এবং আরও সরঞ্জাম আবিষ্কার করুন:

  • আপনার ডাটাবেসে ডেটা যোগ করুন, আপনার স্কিমাগুলি পরিদর্শন এবং সংশোধন করুন এবং Firebase কনসোলে আপনার ডেটা কানেক্ট পরিষেবা পর্যবেক্ষণ করুন।

ডকুমেন্টেশনে আরও তথ্য অ্যাক্সেস করুন। উদাহরণস্বরূপ, যেহেতু আপনি দ্রুত শুরু সম্পন্ন করেছেন: