Firebase SQL Connect ব্যবহার শুরু করা

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

  • VS Code ও Firebase CLI-এর সাহায্যে আপনার স্থানীয় Firebase SQL Connect প্রোজেক্ট ডিরেক্টরি সেট-আপ করুন।
  • আপনার অ্যাপের আইডিয়ার ভিত্তিতে ন্যাচারাল ল্যাঙ্গুয়েজে SQL Connect স্কিমা, কোয়েরি ও মিউটেশন জেনারেট করুন।
  • SQL Connect কোয়েরি ও মিউটেশন রান করতে আপনার অ্যাপে স্ট্রংলি-টাইপড SDK ব্যবহার করুন।
  • PostgreSQL ইনস্ট্যান্সের জন্য Cloud SQL, SQL Connect স্কিমা, কোয়েরি ও মিউটেশন প্রভিশন করুন।

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

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

  1. প্রোজেক্ট ডিরেক্টরিতে, নিম্নলিখিত কমান্ড রান করুন।

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

    curl -sL https://firebase.tools/init/dataconnect | editor=true bash
  2. Visual Studio Code-এর বাঁদিকের প্যানেলে Firebase আইকনে ক্লিক করে SQL Connect VS Code এক্সটেনশন স্ক্রিন খুলুন।

  3. লোকাল PGlite ডেটাবেসের সাথে এমুলেটর রান করতে এমুলেটর চালু করুন বিকল্পে ক্লিক করুন।

রিভিউ স্কিমা

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

ডিফল্ট সেট-আপে, আপনি SQL Connect স্কিমা ফাইলগুলি dataconnect/schema/ ডিরেক্টরিতে খুঁজে পেতে পারেন। সিনেমা টেমপ্লেট স্কিমা থেকে দুটি উদাহরণ সারণী এখানে দেওয়া হল। আপনি যদি এটি তৈরি করতে 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")
}

SQL Connect স্কিমা সম্পর্কে আরও জানুন

কোয়েরি ও মিউটেশন ডেভেলপ করা

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

আপনার ডেটাবেসে সিড ডেটা

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

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

Firebase SQL Connect-এর জন্য CodeLens রান বোতাম

কোয়েরি ও মিউটেশন পর্যালোচনা করুন

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

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

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 }
    }
  }
}

SQL Connect আপনাকে Firebase Auth-এর মাধ্যমে সুরক্ষিত কোয়েরি ও মিউটেশন তৈরি করতে সাহায্য করে।

আপনার অ্যাপ সুরক্ষিত রাখতে, ওয়েব ও মোবাইল অ্যাপ শুধুমাত্র SQL Connect কোয়েরি ও মিউটেশন অ্যাক্সেস করতে পারে, @auth নির্দেশাবলীর সাথে। কোয়েরি ও মিউটেশন {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
    }
  )
}

SQL Connect কোয়েরি সম্পর্কে আরও জানুন SQL Connect মিউটেশন সম্পর্কে আরও জানুন SQL Connect Auth সম্পর্কে আরও জানুন

কোয়েরি ও মিউটেশন জেনারেট করুন

SQL Connect কার্যকরভাবে ব্যবহার করার জন্য আপনাকে GraphQL বিশেষজ্ঞ হতে হবে না। আপনি ন্যাচারাল ল্যাঙ্গুয়েজ বিবরণ থেকে SQL Connect কোয়েরি ও মিউটেশন জেনারেট করতে পারবেন।

যেকোনও .gql ফাইলে, কমেন্ট শুরু করতে # টাইপ করুন এবং কোয়েরি বা মিউটেশন সম্পর্কে বর্ণনা করুন। তারপর, GraphQL অপারেশন জেনারেট করতে অপারেশন জেনারেট/রিফাইন করুন কোড লেন্স বোতাম ব্যবহার করুন।

Firebase SQL Connect-এর জন্য CodeLens জেনারেট বোতাম

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

firebase init dataconnect আপনার প্রোজেক্টে অ্যাপের জন্য টাইপ-সেফ SDK অটোমেটিক সেট-আপ করে। প্রয়োজন হলে, SQL Connect VS Code এক্সটেনশনে অ্যাপে 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';
    
    • SQL Connect এমুলেটরের সাথে কানেক্ট করতে আপনার অ্যাপ ইন্সট্রুমেন্ট করুন:
    import { connectDataConnectEmulator } from 'firebase/data-connect';
    
    const dataConnect = getDataConnect(connectorConfig);
    connectDataConnectEmulator(dataConnect, 'localhost', 9399);
    
    • SQL 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 />);
    

Swift

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

    Xcode-এর উপরের নেভিগেশন বারে, ফাইল > প্যাকেজ ডিপেন্ডেন্সি যোগ করুন > লোকাল যোগ করুন বিকল্প বেছে নিন এবং জেনারেট করা Package.swift যে ফোল্ডারে আছে সেটি বেছে নিন।

  3. আপনার অ্যাপের প্রধান ডেলিগেটে:

    • SQL 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
      
    • SQL 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)
      
    • SQL 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()
          }
      }
      

Kotlin Android

  1. আপনার Android অ্যাপে Firebase যোগ করুন।
  2. জেনারেট করা SDK ব্যবহার করতে, Gradle-এ ডিপেন্ডেন্সি হিসেবে SQL 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. আপনার অ্যাপের প্রধান অ্যাক্টিভিটিতে:

    • আপনার জেনারেট করা SDK থেকে কানেক্টর ইনস্ট্যান্স পান:
    private val connector = com.myapplication.MoviesConnector.instance
    
    • SQL 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)
      }
    
    • SQL 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
          }
        }
      }
    }
    

Flutter

  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';
    
    • SQL 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());
    }
    
    • SQL 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. মূল্য পৃষ্ঠায় গিয়ে মূল্য এবং ফ্রি ট্রায়াল সংক্রান্ত তথ্য পর্যালোচনা করুন। আপনার প্রোজেক্ট Firebase SQL Connect ট্রায়াল বিকল্পের মধ্যে কোনও একটির জন্য উপযুক্ত হতে পারে।

  2. SQL Connect VS Code এক্সটেনশনে প্রোডাকশনে ডিপ্লয় করুন বোতামে ক্লিক করুন অথবা টার্মিনালে রান করুন:

    firebase deploy --only dataconnect
    

    ডেপ্লয় করার পরে, আপনি নিজের স্কিমা দেখতে এবং Firebase কনসোলে কোয়েরি ও মিউটেশন রান করতে পারবেন (ডেটাবেস ও স্টোরেজ > SQL Connect বিকল্পে যান)।

dataconnect.yaml সম্পর্কে আরও জানুন SQL Connect কীভাবে Cloud SQL-এর সাথে কাজ করে সেই সম্পর্কে আরও জানুন

পরবর্তী ধাপ

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