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

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

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

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

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

পূর্বশর্ত

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

  • একটি ফায়ারবেস প্রকল্প। আপনি যদি ইতিমধ্যে একটি তৈরি না করে থাকেন, তাহলে Firebase কনসোলে তা করুন৷

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

  1. আপনার স্থানীয় প্রকল্পের জন্য একটি নতুন ডিরেক্টরি তৈরি করুন।
  2. আপনার তৈরি করা নতুন ডিরেক্টরিতে নিম্নলিখিত কমান্ডটি চালান।

      curl -sL https://firebase.tools/dataconnect | bash

    এই স্ক্রিপ্টটি আপনার জন্য ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করার এবং একটি ব্রাউজার-ভিত্তিক IDE চালু করার চেষ্টা করে। এই IDE আপনাকে আপনার স্কিমা পরিচালনা করতে এবং আপনার অ্যাপ্লিকেশনে ব্যবহার করা প্রশ্ন এবং মিউটেশনগুলিকে সংজ্ঞায়িত করতে এবং দৃঢ়ভাবে টাইপ করা SDK তৈরি করতে সাহায্য করার জন্য একটি প্রাক-বান্ডেল করা VS কোড এক্সটেনশন সহ টুলিং প্রদান করে।

alias dataconnect='curl -sL https://firebase.tools/dataconnect | bash'

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

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

  1. সাইন ইন উইথ গুগল বোতামে ক্লিক করুন।
  2. একটি ফায়ারবেস প্রকল্প সংযুক্ত করুন বোতামে ক্লিক করুন এবং কনসোলে আপনি আগে তৈরি করা প্রকল্পটি নির্বাচন করুন৷
  3. রান ফায়ারবেস ইনিট বোতামে ক্লিক করুন।
  4. স্টার্ট এমুলেটর বোতামে ক্লিক করুন।

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

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

মুভি

Data Connect , গ্রাফকিউএল ক্ষেত্রগুলি কলামে ম্যাপ করা হয়। মুভিটির 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 এ গ্রাফকিউএল প্রকারের উপর কোডলেন্স বোতামগুলি উপস্থিত দেখতে পাবেন। আপনি ডেটা যোগ করুন এবং রান (স্থানীয়) বোতামগুলি আপনার স্থানীয় ডাটাবেসে ডেটা যোগ করতে পারেন।

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

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

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

  1. schema.gql এ ফিরে, Movie টাইপ ঘোষণার উপরে ডেটা পড়ুন বোতামে ক্লিক করুন।
  2. ফলস্বরূপ Movie_read.gql ফাইলে, কোয়েরি চালানোর জন্য রান (স্থানীয়) বোতামে ক্লিক করুন।

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

আপনার প্রশ্ন সংজ্ঞায়িত করুন

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

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

/dataconnect/connector/queries.gql ফাইলটি সম্পাদনা করা শুরু করুন। আপনি যদি সব সিনেমা পেতে চান, এই মত একটি প্রশ্ন ব্যবহার করুন.

# File `/dataconnect/connector/queries.gql`

# @auth() directives control who can call each operation.
# Anyone should be able to list all movies, so the auth level is set to PUBLIC
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

কাছাকাছি কোডলেন্স বোতাম ব্যবহার করে ক্যোয়ারীটি চালান।

এখানে একটি সত্যিই উত্তেজনাপূর্ণ বৈশিষ্ট্য একটি গ্রাফ মত ডাটাবেসের সম্পর্ক আচরণ করার ক্ষমতা. যেহেতু একটি MovieMetadata রেকর্ডে একটি movie ক্ষেত্র রয়েছে যা একটি চলচ্চিত্রকে উল্লেখ করে, আপনি ক্ষেত্রের মধ্যে নেস্ট করতে পারেন এবং চলচ্চিত্রের তথ্য সম্পর্কে তথ্য ফিরে পেতে পারেন। ListMovies ক্যোয়ারীতে জেনারেট করা ধরনের movieMetadata_on_movie যোগ করার চেষ্টা করুন।

query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
    movieMetadata_on_movie {
        rating
    }
  }
}

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

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

    • আপনার তৈরি 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 '@movie-app/movies';
    
    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 শীর্ষ নেভিগেশন বারে, ফাইল > প্যাকেজ নির্ভরতা যোগ করুন > স্থানীয় যোগ করুন নির্বাচন করুন এবং তৈরি করা 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. আপনার Android অ্যাপে 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();
            }),
      )
    ])));
  }
}

উত্পাদনে আপনার স্কিমা এবং ক্যোয়ারী স্থাপন করুন

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

  1. Firebase কনসোলের ডেটা কানেক্ট বিভাগে নেভিগেট করুন এবং একটি বিনামূল্যের ট্রায়াল ক্লাউড SQL দৃষ্টান্ত তৈরি করুন।

  2. IDE ইন্টিগ্রেটেড টার্মিনালে , firebase init dataconnect চালান এবং কনসোলে আপনার তৈরি করা অঞ্চল/পরিষেবা আইডি নির্বাচন করুন।

  3. "ফাইল dataconnect/dataconnect.yaml ইতিমধ্যেই বিদ্যমান, ওভাররাইট?" দিয়ে অনুরোধ করা হলে "Y" নির্বাচন করুন? .

  4. IDE উইন্ডোতে, VS Code Extension UI-তে, Deploy to Production বোতামে ক্লিক করুন।

  5. একবার স্থাপন করা হলে, ক্লাউডে আপলোড করা স্কিমা, অপারেশন এবং ডেটা যাচাই করতে Firebase কনসোলে যান। আপনি স্কিমা দেখতে সক্ষম হবেন এবং কনসোলে আপনার ক্রিয়াকলাপগুলিও চালাতে পারবেন। PostgreSQL দৃষ্টান্তের জন্য ক্লাউড এসকিউএল এর চূড়ান্ত স্থাপন করা জেনারেটেড স্কিমা এবং ডেটা সহ আপডেট করা হবে।

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

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

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

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

,

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

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

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

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

পূর্বশর্ত

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

  • একটি ফায়ারবেস প্রকল্প। আপনি যদি ইতিমধ্যে একটি তৈরি না করে থাকেন, তাহলে Firebase কনসোলে তা করুন৷

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

  1. আপনার স্থানীয় প্রকল্পের জন্য একটি নতুন ডিরেক্টরি তৈরি করুন।
  2. আপনার তৈরি করা নতুন ডিরেক্টরিতে নিম্নলিখিত কমান্ডটি চালান।

      curl -sL https://firebase.tools/dataconnect | bash

    এই স্ক্রিপ্টটি আপনার জন্য ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করার এবং একটি ব্রাউজার-ভিত্তিক IDE চালু করার চেষ্টা করে। এই IDE আপনাকে আপনার স্কিমা পরিচালনা করতে এবং আপনার অ্যাপ্লিকেশনে ব্যবহার করা প্রশ্ন এবং মিউটেশনগুলিকে সংজ্ঞায়িত করতে এবং দৃঢ়ভাবে টাইপ করা SDK তৈরি করতে সাহায্য করার জন্য একটি প্রাক-বান্ডেল করা VS কোড এক্সটেনশন সহ টুলিং প্রদান করে।

alias dataconnect='curl -sL https://firebase.tools/dataconnect | bash'

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

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

  1. সাইন ইন উইথ গুগল বোতামে ক্লিক করুন।
  2. একটি ফায়ারবেস প্রকল্প সংযুক্ত করুন বোতামে ক্লিক করুন এবং কনসোলে আপনি আগে তৈরি করা প্রকল্পটি নির্বাচন করুন৷
  3. রান ফায়ারবেস ইনিট বোতামে ক্লিক করুন।
  4. স্টার্ট এমুলেটর বোতামে ক্লিক করুন।

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

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

মুভি

Data Connect , গ্রাফকিউএল ক্ষেত্রগুলি কলামে ম্যাপ করা হয়। মুভিটির 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 এ গ্রাফকিউএল প্রকারের উপর কোডলেন্স বোতামগুলি উপস্থিত দেখতে পাবেন। আপনি ডেটা যোগ করুন এবং রান (স্থানীয়) বোতামগুলি আপনার স্থানীয় ডাটাবেসে ডেটা যোগ করতে পারেন।

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

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

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

  1. schema.gql এ ফিরে, Movie টাইপ ঘোষণার উপরে ডেটা পড়ুন বোতামে ক্লিক করুন।
  2. ফলস্বরূপ Movie_read.gql ফাইলে, কোয়েরি চালানোর জন্য রান (স্থানীয়) বোতামে ক্লিক করুন।

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

আপনার প্রশ্ন সংজ্ঞায়িত করুন

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

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

/dataconnect/connector/queries.gql ফাইলটি সম্পাদনা করা শুরু করুন। আপনি যদি সব সিনেমা পেতে চান, এই মত একটি প্রশ্ন ব্যবহার করুন.

# File `/dataconnect/connector/queries.gql`

# @auth() directives control who can call each operation.
# Anyone should be able to list all movies, so the auth level is set to PUBLIC
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

কাছাকাছি কোডলেন্স বোতাম ব্যবহার করে ক্যোয়ারীটি চালান।

এখানে একটি সত্যিই উত্তেজনাপূর্ণ বৈশিষ্ট্য একটি গ্রাফ মত ডাটাবেসের সম্পর্ক আচরণ করার ক্ষমতা. যেহেতু একটি MovieMetadata রেকর্ডে একটি movie ক্ষেত্র রয়েছে যা একটি চলচ্চিত্রকে উল্লেখ করে, আপনি ক্ষেত্রের মধ্যে নেস্ট করতে পারেন এবং চলচ্চিত্রের তথ্য সম্পর্কে তথ্য ফিরে পেতে পারেন। ListMovies ক্যোয়ারীতে জেনারেট করা ধরনের movieMetadata_on_movie যোগ করার চেষ্টা করুন।

query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
    movieMetadata_on_movie {
        rating
    }
  }
}

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

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

    • আপনার তৈরি 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 '@movie-app/movies';
    
    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 শীর্ষ নেভিগেশন বারে, ফাইল > প্যাকেজ নির্ভরতা যোগ করুন > স্থানীয় যোগ করুন নির্বাচন করুন এবং তৈরি করা 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. আপনার Android অ্যাপে 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();
            }),
      )
    ])));
  }
}

উত্পাদনে আপনার স্কিমা এবং ক্যোয়ারী স্থাপন করুন

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

  1. Firebase কনসোলের ডেটা কানেক্ট বিভাগে নেভিগেট করুন এবং একটি বিনামূল্যের ট্রায়াল ক্লাউড SQL দৃষ্টান্ত তৈরি করুন।

  2. IDE ইন্টিগ্রেটেড টার্মিনালে , firebase init dataconnect চালান এবং কনসোলে আপনার তৈরি করা অঞ্চল/পরিষেবা আইডি নির্বাচন করুন।

  3. "ফাইল dataconnect/dataconnect.yaml ইতিমধ্যেই বিদ্যমান, ওভাররাইট?" দিয়ে অনুরোধ করা হলে "Y" নির্বাচন করুন? .

  4. IDE উইন্ডোতে, VS Code Extension UI-তে, Deploy to Production বোতামে ক্লিক করুন।

  5. একবার স্থাপন করা হলে, ক্লাউডে আপলোড করা স্কিমা, অপারেশন এবং ডেটা যাচাই করতে Firebase কনসোলে যান। আপনি স্কিমা দেখতে সক্ষম হবেন এবং কনসোলে আপনার ক্রিয়াকলাপগুলিও চালাতে পারবেন। PostgreSQL দৃষ্টান্তের জন্য ক্লাউড এসকিউএল এর চূড়ান্ত স্থাপন করা জেনারেটেড স্কিমা এবং ডেটা সহ আপডেট করা হবে।

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

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

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

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

,

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

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

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

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

পূর্বশর্ত

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

  • একটি ফায়ারবেস প্রকল্প। আপনি যদি ইতিমধ্যে একটি তৈরি না করে থাকেন, তাহলে Firebase কনসোলে তা করুন৷

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

  1. আপনার স্থানীয় প্রকল্পের জন্য একটি নতুন ডিরেক্টরি তৈরি করুন।
  2. আপনার তৈরি করা নতুন ডিরেক্টরিতে নিম্নলিখিত কমান্ডটি চালান।

      curl -sL https://firebase.tools/dataconnect | bash

    এই স্ক্রিপ্টটি আপনার জন্য ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করার এবং একটি ব্রাউজার-ভিত্তিক IDE চালু করার চেষ্টা করে। এই IDE আপনাকে আপনার স্কিমা পরিচালনা করতে এবং আপনার অ্যাপ্লিকেশনে ব্যবহার করা প্রশ্ন এবং মিউটেশনগুলিকে সংজ্ঞায়িত করতে এবং দৃঢ়ভাবে টাইপ করা SDK তৈরি করতে সাহায্য করার জন্য একটি প্রাক-বান্ডেল করা VS কোড এক্সটেনশন সহ টুলিং প্রদান করে।

alias dataconnect='curl -sL https://firebase.tools/dataconnect | bash'

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

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

  1. সাইন ইন উইথ গুগল বোতামে ক্লিক করুন।
  2. একটি ফায়ারবেস প্রকল্প সংযুক্ত করুন বোতামে ক্লিক করুন এবং কনসোলে আপনি আগে তৈরি করা প্রকল্পটি নির্বাচন করুন৷
  3. রান ফায়ারবেস ইনিট বোতামে ক্লিক করুন।
  4. স্টার্ট এমুলেটর বোতামে ক্লিক করুন।

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

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

মুভি

Data Connect , গ্রাফকিউএল ক্ষেত্রগুলি কলামে ম্যাপ করা হয়। মুভিটির 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 এ গ্রাফকিউএল প্রকারের উপর কোডলেন্স বোতামগুলি উপস্থিত দেখতে পাবেন। আপনি ডেটা যোগ করুন এবং রান (স্থানীয়) বোতামগুলি আপনার স্থানীয় ডাটাবেসে ডেটা যোগ করতে পারেন।

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

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

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

  1. schema.gql এ ফিরে, Movie টাইপ ঘোষণার উপরে ডেটা পড়ুন বোতামে ক্লিক করুন।
  2. ফলস্বরূপ Movie_read.gql ফাইলে, কোয়েরি চালানোর জন্য রান (স্থানীয়) বোতামে ক্লিক করুন।

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

আপনার প্রশ্ন সংজ্ঞায়িত করুন

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

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

/dataconnect/connector/queries.gql ফাইলটি সম্পাদনা করা শুরু করুন। আপনি যদি সব সিনেমা পেতে চান, এই মত একটি প্রশ্ন ব্যবহার করুন.

# File `/dataconnect/connector/queries.gql`

# @auth() directives control who can call each operation.
# Anyone should be able to list all movies, so the auth level is set to PUBLIC
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

কাছাকাছি কোডলেন্স বোতাম ব্যবহার করে ক্যোয়ারীটি চালান।

এখানে একটি সত্যিই উত্তেজনাপূর্ণ বৈশিষ্ট্য একটি গ্রাফ মত ডাটাবেসের সম্পর্ক আচরণ করার ক্ষমতা. যেহেতু একটি MovieMetadata রেকর্ডে একটি movie ক্ষেত্র রয়েছে যা একটি চলচ্চিত্রকে উল্লেখ করে, আপনি ক্ষেত্রের মধ্যে নেস্ট করতে পারেন এবং চলচ্চিত্রের তথ্য সম্পর্কে তথ্য ফিরে পেতে পারেন। ListMovies ক্যোয়ারীতে জেনারেট করা ধরনের movieMetadata_on_movie যোগ করার চেষ্টা করুন।

query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
    movieMetadata_on_movie {
        rating
    }
  }
}

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

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

    • আপনার তৈরি 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 '@movie-app/movies';
    
    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 শীর্ষ নেভিগেশন বারে, ফাইল > প্যাকেজ নির্ভরতা যোগ করুন > স্থানীয় যোগ করুন নির্বাচন করুন এবং তৈরি করা 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. আপনার Android অ্যাপে 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();
            }),
      )
    ])));
  }
}

উত্পাদনে আপনার স্কিমা এবং ক্যোয়ারী স্থাপন করুন

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

  1. Firebase কনসোলের ডেটা কানেক্ট বিভাগে নেভিগেট করুন এবং একটি বিনামূল্যের ট্রায়াল ক্লাউড SQL দৃষ্টান্ত তৈরি করুন।

  2. IDE ইন্টিগ্রেটেড টার্মিনালে , firebase init dataconnect চালান এবং কনসোলে আপনার তৈরি করা অঞ্চল/পরিষেবা আইডি নির্বাচন করুন।

  3. "ফাইল dataconnect/dataconnect.yaml ইতিমধ্যেই বিদ্যমান, ওভাররাইট?" দিয়ে অনুরোধ করা হলে "Y" নির্বাচন করুন? .

  4. IDE উইন্ডোতে, VS Code Extension UI-তে, Deploy to Production বোতামে ক্লিক করুন।

  5. একবার স্থাপন করা হলে, ক্লাউডে আপলোড করা স্কিমা, অপারেশন এবং ডেটা যাচাই করতে Firebase কনসোলে যান। আপনি স্কিমা দেখতে সক্ষম হবেন এবং কনসোলে আপনার ক্রিয়াকলাপগুলিও চালাতে পারবেন। PostgreSQL দৃষ্টান্তের জন্য ক্লাউড এসকিউএল এর চূড়ান্ত স্থাপন করা জেনারেটেড স্কিমা এবং ডেটা সহ আপডেট করা হবে।

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

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

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

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

,

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

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

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

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

পূর্বশর্ত

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

  • একটি ফায়ারবেস প্রকল্প। আপনি যদি ইতিমধ্যে একটি তৈরি না করে থাকেন, তাহলে Firebase কনসোলে তা করুন৷

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

  1. আপনার স্থানীয় প্রকল্পের জন্য একটি নতুন ডিরেক্টরি তৈরি করুন।
  2. আপনার তৈরি করা নতুন ডিরেক্টরিতে নিম্নলিখিত কমান্ডটি চালান।

      curl -sL https://firebase.tools/dataconnect | bash

    এই স্ক্রিপ্টটি আপনার জন্য ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করার এবং একটি ব্রাউজার-ভিত্তিক IDE চালু করার চেষ্টা করে। এই IDE আপনাকে আপনার স্কিমা পরিচালনা করতে এবং আপনার অ্যাপ্লিকেশনে ব্যবহার করা প্রশ্ন এবং মিউটেশনগুলিকে সংজ্ঞায়িত করতে এবং দৃঢ়ভাবে টাইপ করা SDK তৈরি করতে সাহায্য করার জন্য একটি প্রাক-বান্ডেল করা VS কোড এক্সটেনশন সহ টুলিং প্রদান করে।

alias dataconnect='curl -sL https://firebase.tools/dataconnect | bash'

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

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

  1. গুগল বোতামের সাহায্যে সাইন ইন ক্লিক করুন।
  2. সংযুক্ত একটি ফায়ারবেস প্রকল্প বোতামটি ক্লিক করুন এবং কনসোলে আপনি আগে তৈরি প্রকল্পটি নির্বাচন করুন।
  3. রান ফায়ারবেস ইনিশ বোতামটি ক্লিক করুন।
  4. শুরু এমুলেটর বোতামটি ক্লিক করুন।

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

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

মুভি

Data Connect , গ্রাফকিউএল ক্ষেত্রগুলি কলামগুলিতে ম্যাপ করা হয়। মুভিতে 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 মধ্যে একটি সম্পর্ক এবং এটি আপনার জন্য এই সম্পর্কটি পরিচালনা করবে।

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

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

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

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

  1. schema.gql -এ, Movie ধরণের ঘোষণার উপরে ডেটা যুক্ত করুন বোতামটি ক্লিক করুন।
    কোডেলেনগুলি ফায়ারবেস ডেটা সংযোগের জন্য ডেটা বোতাম যুক্ত করুন
  2. Movie_insert.gql ফাইল যা উত্পাদিত হয়, তিনটি ক্ষেত্রের জন্য হার্ড কোড ডেটা।
  3. রান (স্থানীয়) বোতামটি ক্লিক করুন।
    ফায়ারবেস ডেটা সংযোগের জন্য কোডেলেন রান বোতাম
  4. MovieMetadata টেবিলে একটি রেকর্ড যুক্ত করার জন্য পূর্ববর্তী পদক্ষেপগুলি পুনরাবৃত্তি করুন, movieId ক্ষেত্রে আপনার চলচ্চিত্রের id সরবরাহ করে, উত্পন্ন MovieMetadata_insert মিউটেশনে অনুরোধ জানানো হয়েছে।

দ্রুত যাচাই করতে ডেটা যুক্ত করা হয়েছিল:

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

ডকুমেন্টেশনে ডেটা সংযোগ মিউটেশন সম্পর্কে আরও জানুন

আপনার প্রশ্ন সংজ্ঞায়িত করুন

এখন মজাদার অংশ: আসুন আপনার অ্যাপ্লিকেশনটিতে আপনার প্রয়োজনীয় প্রশ্নগুলি সংজ্ঞায়িত করা যাক। একজন বিকাশকারী হিসাবে, আপনি গ্রাফকিউএল প্রশ্নের চেয়ে এসকিউএল কোয়েরি লেখার অভ্যস্ত, তাই এটি প্রথমে কিছুটা আলাদা বোধ করতে পারে।

তবে গ্রাফকিউএল কাঁচা এসকিউএল এর চেয়ে অনেক বেশি টের এবং টাইপ-নিরাপদ। এবং, আমাদের ভিএস কোড এক্সটেনশন বিকাশের অভিজ্ঞতা সহজ করে।

/dataconnect/connector/queries.gql ফাইল সম্পাদনা শুরু করুন। আপনি যদি সমস্ত সিনেমা পেতে চান তবে এর মতো একটি ক্যোয়ারী ব্যবহার করুন।

# File `/dataconnect/connector/queries.gql`

# @auth() directives control who can call each operation.
# Anyone should be able to list all movies, so the auth level is set to PUBLIC
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

কাছাকাছি কোডেলেন বোতামটি ব্যবহার করে ক্যোয়ারীটি কার্যকর করুন।

এখানে একটি সত্যই উত্তেজনাপূর্ণ বৈশিষ্ট্য হ'ল গ্রাফের মতো ডাটাবেসের সম্পর্কগুলি চিকিত্সা করার ক্ষমতা। যেহেতু একটি MovieMetadata রেকর্ডে একটি movie ক্ষেত্র রয়েছে যা একটি চলচ্চিত্রের উল্লেখ করে, আপনি মাঠে বাসা বাঁধতে পারেন এবং সিনেমার তথ্য সম্পর্কে তথ্য ফিরে পেতে পারেন। ListMovies ক্যোয়ারিতে উত্পন্ন টাইপ movieMetadata_on_movie যুক্ত করার চেষ্টা করুন।

query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
    movieMetadata_on_movie {
        rating
    }
  }
}

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

এসডিকে উত্পন্ন করুন এবং সেগুলি আপনার অ্যাপ্লিকেশনটিতে ব্যবহার করুন

আইডিই বাম-হাতের প্যানেলে, ডেটা সংযোগ বনাম কোড এক্সটেনশন ইউআই খুলতে ফায়ারবেস আইকনটি ক্লিক করুন:

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

  3. আপনার অ্যাপ্লিকেশন প্ল্যাটফর্মটি নির্বাচন করুন, তারপরে নোট করুন যে এসডিকে কোডটি অবিলম্বে আপনার নির্বাচিত ডিরেক্টরিতে উত্পন্ন হয়।

একটি অ্যাপ্লিকেশন থেকে আপনার ক্যোয়ারী কল করতে এসডিকে ব্যবহার করুন

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

  1. আপনার ওয়েব অ্যাপ্লিকেশনটিতে ফায়ারবেস যুক্ত করুন।
  2. আপনার প্রতিক্রিয়া অ্যাপের মূল ফাইলটিতে:

    • আপনার উত্পন্ন এসডিকে আমদানি করুন
    • 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 '@movie-app/movies';
    
    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 শীর্ষ নেভিগেশন বারে, ফাইল > প্যাকেজ নির্ভরতা যোগ করুন > স্থানীয় যোগ করুন নির্বাচন করুন এবং তৈরি করা Package.swift ধারণকারী ফোল্ডারটি বেছে নিন।

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

    • আপনার উত্পন্ন এসডিকে আমদানি করুন
    • 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. আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে ফায়ারবেস যুক্ত করুন।
  2. উত্পন্ন এসডিকে ব্যবহার করতে, Data Connect

    আপনার app/build.gradle.kts plugins এবং 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. আপনার অ্যাপ্লিকেশনটির প্রধান ক্রিয়াকলাপে:

    • আপনার উত্পন্ন এসডিকে আমদানি করুন
    • 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. আপনার ফ্লটার অ্যাপে ফায়ারবেস যুক্ত করুন।
  2. ফ্লুটারফায়ার সিএলআই dart pub global activate flutterfire_cli ইনস্টল করুন।
  3. flutterfire configure চালান।
  4. আপনার অ্যাপের মূল ফাংশনে:
    • আপনার উত্পন্ন এসডিকে আমদানি করুন
    • 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();
            }),
      )
    ])));
  }
}

আপনার স্কিমা এবং ক্যোয়ারী উত্পাদন স্থাপন করুন

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

  1. Firebase কনসোলের ডেটা সংযোগ বিভাগে নেভিগেট করুন এবং একটি বিনামূল্যে ট্রায়াল ক্লাউড এসকিউএল উদাহরণ তৈরি করুন।

  2. আইডিই ইন্টিগ্রেটেড টার্মিনালে , firebase init dataconnect চালান এবং আপনি সবেমাত্র কনসোলে তৈরি করা অঞ্চল/পরিষেবা আইডি নির্বাচন করুন।

  3. "ফাইল ডেটাকনেক্ট/ডেটাকনেক্ট.ইএএমএল ইতিমধ্যে বিদ্যমান, ওভাররাইট রয়েছে" দিয়ে অনুরোধ করা হলে "y" নির্বাচন করুন ? " .

  4. আইডিই উইন্ডোতে, ভিএস কোড এক্সটেনশন ইউআই -তে, উত্পাদন বোতামটি ডিপ্লয়ে ক্লিক করুন।

  5. একবার মোতায়েন হয়ে গেলে, স্কিমা, অপারেশন এবং ডেটা মেঘে আপলোড করা হয়েছে তা যাচাই করতে Firebase কনসোলে যান। আপনার স্কিমাটি দেখতে সক্ষম হওয়া উচিত এবং কনসোলেও আপনার ক্রিয়াকলাপ চালানো উচিত। পোস্টগ্রেসকিউএল উদাহরণের জন্য ক্লাউড এসকিউএল এর চূড়ান্ত মোতায়েন উত্পন্ন স্কিমা এবং ডেটা সহ আপডেট করা হবে।

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

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

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

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