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

এই কুইকস্টার্ট আপনাকে Firebase Data Connect ব্যবহার করে আপনার ওয়েব এবং মোবাইল অ্যাপগুলিকে PostgreSQL ডাটাবেসের সাথে সংযুক্ত করতে সাহায্য করবে। আপনি যা করবেন:

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

স্থানীয় প্রকল্প ডিরেক্টরি সেট আপ করুন

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

  1. একটি প্রকল্প ডিরেক্টরিতে, নিম্নলিখিত কমান্ডটি চালান।

    স্ক্রিপ্টটি Firebase CLI এবং Data Connect VS Code এক্সটেনশন ইনস্টল করে এবং আপনার প্রোজেক্ট সেট আপ করার জন্য firebase init dataconnect এর মাধ্যমে আপনাকে গাইড করে। যদি আপনার VS Code ডেস্কটপ ইনস্টল না থাকে, তাহলে স্ক্রিপ্টটি এটি একটি ব্রাউজারে খুলবে।

    curl -sL https://firebase.tools/init/dataconnect | editor=true bash
  2. ভিজ্যুয়াল স্টুডিও কোডের বাম প্যানেলে ফায়ারবেস আইকনে ক্লিক করে ডেটা কানেক্ট ভিএস কোড এক্সটেনশন স্ক্রিনটি খুলুন।

  3. স্থানীয় PGlite ডাটাবেস দিয়ে এমুলেটরটি চালাতে Start emulators এ ক্লিক করুন।

স্কিমা পর্যালোচনা করুন

Firebase Data Connect আপনার ডেটা মডেল সংজ্ঞায়িত করতে GraphQL ব্যবহার করে। @table নির্দেশিকা একটি GraphQL টাইপকে PostgreSQL টেবিলের সাথে ম্যাপ করে। টাইপ ম্যাপের ক্ষেত্রগুলি PostgreSQL কলামে। আপনি কম্পোজিট প্রাইমারি কী সহ জয়েন টেবিল ব্যবহার করে বহু-থেকে-অনেক সম্পর্ক সহ অন্যান্য @table টাইপের উল্লেখ করে এমন ক্ষেত্র ব্যবহার করে টেবিলের মধ্যে সম্পর্ক নির্ধারণ করতে পারেন।

ডিফল্ট সেটআপে, আপনি dataconnect/schema/ ডিরেক্টরিতে Data Connect স্কিমা ফাইলগুলি খুঁজে পেতে পারেন। এখানে মুভি টেমপ্লেট স্কিমা থেকে দুটি উদাহরণ টেবিল রয়েছে। আপনি যদি এটি তৈরি করতে Gemini ব্যবহার করে থাকেন তবে আপনার স্কিমা ভিন্ন হতে পারে।

type Movie @table {
  # Every table has an implicit primary key field that looks something like:
  #  id: UUID! @default(expr: "uuidV4()")
  title: String!
  imageUrl: String!
  genre: String
}

type Review @table(key: ["movie", "user"]) {
  user: User!
  movie: Movie!
  rating: Int
  reviewText: String
  reviewDate: Date! @default(expr: "request.time")
}

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

প্রশ্ন এবং মিউটেশন তৈরি করুন

Firebase Data Connect কোয়েরি এবং মিউটেশনের জন্য GraphQL ব্যবহার করে। আপনি এগুলিকে .gql ফাইলে সংজ্ঞায়িত করতে পারেন এবং আপনার অ্যাপ থেকে নাম ধরে ডাকতে পারেন। GraphQL সিনট্যাক্স দৃঢ়ভাবে টাইপ করা SDK এবং আপনার অ্যাপের প্রয়োজনীয় সঠিক ডেটা আনার জন্য একটি নমনীয় API প্রদান করে।

আপনার ডাটাবেসে তথ্য বীজ করুন

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

VS কোডে রান (স্থানীয়) কোড লেন্স বোতামটি ব্যবহার করে মিউটেশনগুলি কার্যকর করুন এবং আপনার স্থানীয় PGlite ডাটাবেস পূরণ করুন।

ফায়ারবেস ডেটার জন্য কোডলেন্স রান বোতাম কানেক্ট

প্রশ্ন এবং মিউটেশন পর্যালোচনা করুন

ডিফল্ট সেটআপে, আপনি dataconnect/example/ ডিরেক্টরিতে Data Connect কোয়েরি এবং মিউটেশন খুঁজে পেতে পারেন।

আপনি নেস্টেড কোয়েরি দিয়ে রিলেশনাল ডেটা সঠিকভাবে কোয়েরি করতে পারেন।

query ListMovies @auth(level: PUBLIC, insecureReason: "Anyone can list all movies and their reviews.") {
  movies {
    title imageUrl genre
    reviews_on_movie {
      rating reviewDate
      user { username }
    }
  }
}

Data Connect আপনাকে Firebase Auth এর মাধ্যমে নিরাপদ কোয়েরি এবং মিউটেশন তৈরি করতে সাহায্য করে।

আপনার অ্যাপটি সুরক্ষিত রাখতে, ওয়েব এবং মোবাইল অ্যাপগুলি শুধুমাত্র @auth নির্দেশাবলী ব্যবহার করে Data Connect কোয়েরি এবং মিউটেশন অ্যাক্সেস করতে পারে। কোয়েরি এবং মিউটেশনগুলি {field}_expr: "auth.uid" মতো একটি এক্সপ্রেশন ব্যবহার করে নিরাপদে Firebase Auth UID অ্যাক্সেস করতে পারে।

mutation AddReview($movieId: UUID!, $rating: Int!, $reviewText: String!) @auth(level: USER) {
  review_upsert(
    data: {
      userId_expr: "auth.uid"
      movieId: $movieId
      rating: $rating
      reviewText: $reviewText
    }
  )
}

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

প্রশ্ন এবং মিউটেশন তৈরি করুন

Data Connect কার্যকরভাবে ব্যবহার করার জন্য আপনাকে গ্রাফকিউএল বিশেষজ্ঞ হতে হবে না। আপনি প্রাকৃতিক ভাষার বর্ণনা থেকে Data Connect কোয়েরি এবং মিউটেশন তৈরি করতে পারেন।

যেকোনো .gql ফাইলে, একটি মন্তব্য শুরু করতে এবং একটি কোয়েরি বা মিউটেশন বর্ণনা করতে # টাইপ করুন। তারপর, GraphQL অপারেশন তৈরি করতে Generate/Refine Operation Code Lens বোতামটি ব্যবহার করুন।

ফায়ারবেস ডেটার জন্য কোডলেন্স জেনারেট বোতাম সংযোগ করুন

আপনার অ্যাপে জেনারেট করা SDK ব্যবহার করুন

firebase init dataconnect আপনার প্রোজেক্টের অ্যাপগুলির জন্য স্বয়ংক্রিয়ভাবে টাইপ-সেফ SDK সেট আপ করে। প্রয়োজনে, আপনি VS কোড এক্সটেনশনের "অ্যাড SDK টু অ্যাপ" বোতামটি ব্যবহার করে অথবা firebase init dataconnect:sdk চালিয়ে ম্যানুয়ালি SDK যোগ করতে পারেন।

ওয়েব

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

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

    • Data Connect SDK এবং আপনার তৈরি SDK আমদানি করুন:

      import FirebaseDataConnect
      // Generated queries.
      // Update as needed with the package name of your generated SDK.
      import <CONNECTOR-PACKAGE-NAME>
      
      let connector = DataConnect.moviesConnector
      
    • Data Connect এমুলেটরের সাথে সংযোগ স্থাপনের জন্য আপনার অ্যাপটি ব্যবহার করুন:

      // 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)
      
    • কল Data Connect পদ্ধতি:

      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 থেকে একটি সংযোগকারী উদাহরণ পান:
    private val connector = com.myapplication.MoviesConnector.instance
    
    • Data Connect এমুলেটরের সাথে সংযোগ স্থাপনের জন্য আপনার অ্যাপটি ব্যবহার করুন:
    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)
      }
    
    • কল Data Connect পদ্ধতি।
    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 আমদানি করুন:
    // Generated queries.
    // Update as needed with the path to your generated SDK
    
    import 'movies_connector/movies.dart';
    
    • Data Connect এমুলেটরের সাথে সংযোগ স্থাপনের জন্য আপনার অ্যাপটি ব্যবহার করুন:
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp(
        options: DefaultFirebaseOptions.currentPlatform,
      );
      
      MoviesConnector.instance.dataConnect
          .useDataConnectEmulator(Uri.base.host, 443, isSecure: true);
      
      runApp(const MyApp());
    }
    
    • কল Data Connect পদ্ধতি।
    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. ব্লেজ প্ল্যান ব্যবহার করতে ফায়ারবেস প্রজেক্ট আপগ্রেড করুন।

  2. Data Connect VS Code এক্সটেনশনে Deploy to production বোতামে ক্লিক করুন অথবা টার্মিনালে চালান:

    firebase deploy --only dataconnect
    

    স্থাপনের পরে, আপনার স্কিমা দেখতে এবং কোয়েরি এবং মিউটেশন চালাতে Firebase কনসোলে যান।

dataconnect.yaml সম্পর্কে আরও জানুন ক্লাউড SQL এর সাথে Data Connect কীভাবে কাজ করে সে সম্পর্কে আরও জানুন

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

এখন যেহেতু আপনি কুইকস্টার্ট সম্পন্ন করেছেন, এখানে পরবর্তী কিছু ধাপ দেওয়া হল: