Firebase Data Connect দিয়ে শুরু করুন

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

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

একটি ফায়ারবেস প্রকল্প এবং ক্লাউড এসকিউএল ডাটাবেস তৈরি করুন

  1. যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে একটি Firebase প্রকল্প তৈরি করুন৷
    1. Firebase কনসোলে , প্রজেক্ট যোগ করুন ক্লিক করুন, তারপর অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন।
  2. Firebase কনসোলের Data Connect বিভাগে নেভিগেট করুন এবং পণ্য সেটআপ ওয়ার্কফ্লো অনুসরণ করুন।
  3. আপনার প্রকল্পকে ব্লেজ প্ল্যানে আপগ্রেড করুন। এটি আপনাকে PostgreSQL উদাহরণের জন্য একটি ক্লাউড SQL তৈরি করতে দেয়।

  4. PostgreSQL ডাটাবেসের জন্য আপনার ক্লাউড SQL এর জন্য একটি অবস্থান নির্বাচন করুন।

  5. পরে নিশ্চিতকরণের জন্য প্রকল্প, পরিষেবা এবং ডাটাবেসের নাম এবং আইডি নোট করুন।

  6. অবশিষ্ট সেটআপ ফ্লো অনুসরণ করুন তারপর সম্পন্ন ক্লিক করুন।

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

ডেটা কানেক্ট আপনাকে ডেভেলপমেন্ট টুল ইনস্টল করার দুটি উপায় অফার করে।

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

  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 , গ্রাফকিউএল ক্ষেত্রগুলি কলামে ম্যাপ করা হয়। Movie ধরন id , title , imageUrl এবং genre আছে। Data Connect আদিম ডেটা টাইপ String এবং UUID স্বীকৃতি দেয়।

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

# File `/dataconnect/schema/schema.gql`

# By default, a UUID id key will be created by default as primary key.
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 মধ্যে একটি সম্পর্ক এবং আপনার জন্য এই সম্পর্কটি পরিচালনা করবে।

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

উত্পাদনে আপনার স্কিমা স্থাপন করুন

চালিয়ে যাওয়ার আগে আপনাকে আপনার স্কিমা স্থাপন করতে হবে।

এক্সটেনশন UI-তে, Firebase Data Connect প্যানেলের অধীনে, Deploy to Production-এ ক্লিক করুন।

আপনার প্রোডাকশন ডাটাবেসে আপনার স্কিমা স্থাপন করার পরে, আপনি Firebase কনসোলে স্কিমা দেখতে সক্ষম হবেন।

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

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

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

  1. schema.gql এ, Movie ধরন ঘোষণার উপরে ডেটা যোগ করুন বোতামে ক্লিক করুন।
    ফায়ারবেস ডেটা সংযোগের জন্য কোড লেন্স ডেটা যোগ করার বোতাম
  2. Movie_insert.gql ফাইলে যেটি তৈরি হয়, চারটি ক্ষেত্রের জন্য হার্ড কোড ডেটা।
  3. রান (উৎপাদন) বোতামে ক্লিক করুন।
    ফায়ারবেস ডেটা সংযোগের জন্য কোড লেন্স রান বোতাম
  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
  }
}

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

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

SDK তৈরি করুন

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

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

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

আপনি একটি উন্নয়ন পুনরাবৃত্তি মাধ্যমে কাজ করেছেন. এখন আপনি আপনার স্কিমা, ডেটা এবং প্রশ্নগুলিকে Firebase এক্সটেনশন UI বা Firebase CLI দিয়ে সার্ভারে স্থাপন করতে পারেন, ঠিক যেমন আপনি আপনার স্কিমার সাথে করেছিলেন৷

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

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

ডকুমেন্টেশনে ডেটা কানেক্ট এমুলেটর ব্যবহার সম্পর্কে আরও জানুন

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

এখন যেহেতু আপনার স্কিমা এবং ক্যোয়ারী প্রোডাকশনে স্থাপন করা হয়েছে, আপনি আপনার ListMovies ক্যোয়ারীতে একটি কল বাস্তবায়নের জন্য Data Connect তৈরি করা SDK ব্যবহার করতে পারেন।

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

    • আপনার তৈরি SDK আমদানি করুন
    • কল Data Connect পদ্ধতি।

    আপনি নিম্নলিখিত স্নিপেটটি অনুলিপি করতে পারেন এবং এটি একটি স্বতন্ত্র অ্যাপ হিসাবে চালাতে পারেন।

    import React from 'react';
    import ReactDOM from 'react-dom/client';
    
    // Generated queries.
    // Update as needed with the path to your generated SDK.
    import { listMovies, ListMoviesData } from '@movie-app/movies';
    
    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 পদ্ধতি।

    আপনি নিম্নলিখিত স্নিপেটটি অনুলিপি করতে পারেন এবং এটি একটি স্বতন্ত্র অ্যাপ হিসাবে চালাতে পারেন।

    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
    
    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 ?? [], id: \.self.id) { 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 December 03, 2024.
      // Note, however, that the version of kotlin("plugin.serialization") must,
      // in general, match the version of kotlin("android").
      id("com.android.application") version "8.7.3"
      id("com.google.gms.google-services") version "4.4.2"
      val kotlinVersion = "2.1.0"
      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 December 03, 2024.
      implementation("com.google.firebase:firebase-dataconnect:16.0.0-beta03")
      implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
      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.9.3")
      implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7")
      implementation("com.google.android.material:material:1.12.0")
    }
    
  3. আপনার অ্যাপের প্রধান কার্যকলাপে:

    • আপনার তৈরি SDK আমদানি করুন
    • কল 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
    
    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 পদ্ধতি।

    আপনি নিম্নলিখিত স্নিপেটটি অনুলিপি করতে পারেন এবং এটি একটি স্বতন্ত্র অ্যাপ হিসাবে চালাতে পারেন।

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

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

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

  • আপনার ডাটাবেসে ডেটা যোগ করুন, আপনার স্কিমাগুলি পরিদর্শন করুন এবং সংশোধন করুন এবং Firebase কনসোলে আপনার ডেটা কানেক্ট পরিষেবা নিরীক্ষণ করুন। ডকুমেন্টেশনে আরও তথ্য অ্যাক্সেস করুন। উদাহরণস্বরূপ, যেহেতু আপনি কুইকস্টার্ট সম্পূর্ণ করেছেন:

  • স্কিমা, ক্যোয়ারী এবং মিউটেশন ডেভেলপমেন্ট সম্পর্কে আরও জানুন

  • ক্লায়েন্ট SDK তৈরি করা এবং ওয়েব , অ্যান্ড্রয়েড , iOS এবং ফ্লটারের জন্য ক্লায়েন্ট কোড থেকে কলিং কোয়েরি এবং মিউটেশন সম্পর্কে জানুন।