জেনারেট করা Android SDK ব্যবহার করুন

Firebase Data Connect ক্লায়েন্ট SDK গুলি আপনাকে সরাসরি Firebase অ্যাপ থেকে আপনার সার্ভার-সাইড কোয়েরি এবং মিউটেশন কল করতে দেয়। আপনার Data Connect পরিষেবাতে স্থাপন করা স্কিমা, কোয়েরি এবং মিউটেশন ডিজাইন করার সময় আপনি সমান্তরালভাবে একটি কাস্টম ক্লায়েন্ট SDK তৈরি করেন। তারপর, আপনি এই SDK থেকে পদ্ধতিগুলিকে আপনার ক্লায়েন্ট লজিকের সাথে একীভূত করেন।

যেমনটি আমরা অন্যত্র উল্লেখ করেছি, এটি মনে রাখা গুরুত্বপূর্ণ যে Data Connect কোয়েরি এবং মিউটেশনগুলি ক্লায়েন্ট কোড দ্বারা জমা দেওয়া হয় না এবং সার্ভারে কার্যকর করা হয় না। পরিবর্তে, যখন স্থাপন করা হয়, তখন Data Connect অপারেশনগুলি ক্লাউড ফাংশনের মতো সার্ভারে সংরক্ষণ করা হয়। এর অর্থ হল বিদ্যমান ব্যবহারকারীদের (উদাহরণস্বরূপ, পুরানো অ্যাপ সংস্করণগুলিতে) ভাঙা এড়াতে আপনাকে সংশ্লিষ্ট ক্লায়েন্ট-সাইড পরিবর্তনগুলি স্থাপন করতে হবে।

এই কারণেই Data Connect আপনাকে একটি ডেভেলপার পরিবেশ এবং টুলিং প্রদান করে যা আপনাকে আপনার সার্ভার-স্থাপিত স্কিমা, কোয়েরি এবং মিউটেশন প্রোটোটাইপ করতে দেয়। এটি প্রোটোটাইপ করার সময় স্বয়ংক্রিয়ভাবে ক্লায়েন্ট-সাইড SDK তৈরি করে।

যখন আপনি আপনার পরিষেবা এবং ক্লায়েন্ট অ্যাপগুলিতে আপডেটগুলি পুনরাবৃত্তি করেন, তখন সার্ভার- এবং ক্লায়েন্ট-সাইড উভয় আপডেটই স্থাপনের জন্য প্রস্তুত থাকে।

ক্লায়েন্ট ডেভেলপমেন্ট ওয়ার্কফ্লো কী?

আপনি যদি "শুরু করুন" পদ্ধতি অনুসরণ করেন, তাহলে আপনাকে Data Connect সামগ্রিক উন্নয়ন প্রবাহের সাথে পরিচয় করিয়ে দেওয়া হবে। এই নির্দেশিকায়, আপনি আপনার স্কিমা থেকে অ্যান্ড্রয়েড SDK তৈরি করা এবং ক্লায়েন্ট কোয়েরি এবং মিউটেশন নিয়ে কাজ করার বিষয়ে আরও বিস্তারিত তথ্য পাবেন।

সংক্ষেপে বলতে গেলে, আপনার ক্লায়েন্ট অ্যাপগুলিতে জেনারেট করা অ্যান্ড্রয়েড SDK ব্যবহার করতে, আপনাকে এই পূর্বশর্ত পদক্ষেপগুলি অনুসরণ করতে হবে:

  1. আপনার অ্যান্ড্রয়েড অ্যাপে Firebase যোগ করুন।
  2. গ্র্যাডলে Data Connect নির্ভরতা হিসেবে কনফিগার করুন।
  3. কোটলিন সিরিয়ালাইজেশন গ্রেডল প্লাগইন এবং গ্রেডল নির্ভরতা যোগ করুন।

তারপর:

  1. আপনার অ্যাপ স্কিমা তৈরি করুন।
  2. SDK জেনারেশন সেট আপ করুন:

  3. আপনার ক্লায়েন্ট কোডটি শুরু করুন এবং লাইব্রেরিগুলি আমদানি করুন

  4. কল টু কোয়েরি এবং মিউটেশন বাস্তবায়ন করুন

  5. Data Connect এমুলেটর সেট আপ করুন এবং ব্যবহার করুন এবং পুনরাবৃত্তি করুন।

আপনার কোটলিন SDK তৈরি করুন

আপনার অ্যাপগুলিতে Data Connect জেনারেটেড SDK সেট আপ করতে Firebase CLI ব্যবহার করুন। init কমান্ডটি বর্তমান ফোল্ডারে সমস্ত অ্যাপ সনাক্ত করবে এবং স্বয়ংক্রিয়ভাবে জেনারেটেড SDK ইনস্টল করবে।

firebase init dataconnect:sdk

প্রোটোটাইপ করার সময় SDK গুলি আপডেট করুন

যদি আপনার ডেটা কানেক্ট ভিএস কোড এক্সটেনশন ইনস্টল করা থাকে, তাহলে এটি সর্বদা জেনারেট করা SDK গুলিকে আপ টু ডেট রাখবে।

আপনি যদি ডেটা কানেক্ট ভিএস কোড এক্সটেনশন ব্যবহার না করেন, তাহলে জেনারেট করা SDK গুলিকে আপ টু ডেট রাখতে আপনি Firebase CLI ব্যবহার করতে পারেন।

firebase dataconnect:sdk:generate --watch

বিল্ড পাইপলাইনে SDK তৈরি করুন

CI/CD বিল্ড প্রক্রিয়ায় ডেটা কানেক্ট SDK তৈরি করতে আপনি Firebase CLI ব্যবহার করতে পারেন।

firebase dataconnect:sdk:generate

ক্লায়েন্ট কোড সেট আপ করুন

আপনার ক্লায়েন্ট কোডে Data Connect অন্তর্ভুক্ত করুন

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

তারপর, app/build.gradle.kts এর plugins বিভাগে নিম্নলিখিতগুলি যোগ করুন:

// The Firebase team tests with version 1.8.22; however, other 1.8 versions,
// and all newer versions are expected work too.
kotlin("plugin.serialization") version "1.8.22" // MUST match the version of the Kotlin compiler

তারপর, app/build.gradle.kts এর dependencies বিভাগে নিম্নলিখিতগুলি যোগ করুন:

implementation(platform("com.google.firebase:firebase-bom:34.4.0"))
implementation("com.google.firebase:firebase-dataconnect")
implementation("com.google.firebase:firebase-auth") // Optional
implementation("com.google.firebase:firebase-appcheck") // Optional
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") // Newer versions should work too
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.5.1") // Newer versions should work too

Data Connect অ্যান্ড্রয়েড এসডিকে আরম্ভ করুন

ডেটা কানেক্ট সেট আপ করার জন্য ব্যবহৃত তথ্য ব্যবহার করে আপনার Data Connect ইনস্ট্যান্সটি শুরু করুন (সবই Firebase কনসোল ডেটা কানেক্ট ট্যাবে উপলব্ধ)।

ConnectorConfig অবজেক্ট

SDK-এর জন্য একটি সংযোগকারী কনফিগারেশন অবজেক্ট প্রয়োজন।

এই অবজেক্টটি dataconnect.yamlserviceId এবং location থেকে এবং connector.yamlconnectorId থেকে স্বয়ংক্রিয়ভাবে তৈরি হয়।

একটি সংযোগকারী উদাহরণ পাওয়া হচ্ছে

এখন আপনি একটি কনফিগারেশন অবজেক্ট সেট আপ করেছেন, একটি Data Connect সংযোগকারী ইনস্ট্যান্স পান। আপনার সংযোগকারীর কোড Data Connect এমুলেটর দ্বারা তৈরি করা হবে। যদি আপনার সংযোগকারীর নাম movies হয় এবং Kotlin প্যাকেজটি com.myapplication হয়, যেমন connector.yaml এ উল্লেখ করা হয়েছে, তাহলে সংযোগকারী অবজেক্টটি পুনরুদ্ধার করুন:

val connector = com.myapplication.MoviesConnector.instance

আপনার Android SDK থেকে কোয়েরি এবং মিউটেশন ব্যবহার করুন

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

mutation createMovie($title: String!, $releaseYear: Int!, $genre: String!, $rating: Int!) {
  movie_insert(data: {
    title: $title
    releaseYear: $releaseYear
    genre: $genre
    rating: $rating
  })
}

query getMovieByKey($key: Movie_Key!) {
  movie(key: $key) { id title }
}

query listMoviesByGenre($genre: String!) {
  movies(where: {genre: {eq: $genre}}) {
    id
    title
  }
}

তাহলে আপনি নিম্নরূপ একটি সিনেমা তৈরি এবং পুনরুদ্ধার করতে পারেন:

val connector = MoviesConnector.instance

val addMovieResult1 = connector.createMovie.execute(
  title = "Empire Strikes Back",
  releaseYear = 1980,
  genre = "Sci-Fi",
  rating = 5
)

val movie1 = connector.getMovieByKey.execute(addMovieResult1.data.key)

println("Empire Strikes Back: ${movie1.data.movie}")

আপনি একাধিক সিনেমাও পুনরুদ্ধার করতে পারেন:

val connector = MoviesConnector.instance

val addMovieResult2 = connector.createMovie.execute(
  title="Attack of the Clones",
  releaseYear = 2002,
  genre = "Sci-Fi",
  rating = 5
)

val listMoviesResult = connector.listMoviesByGenre.execute(genre = "Sci-Fi")

println(listMoviesResult.data.movies)

আপনি এমন একটি Flow সংগ্রহ করতে পারেন যা শুধুমাত্র তখনই ফলাফল তৈরি করবে যখন কোয়েরির execute() পদ্ধতিতে কল ব্যবহার করে একটি নতুন কোয়েরি ফলাফল পুনরুদ্ধার করা হবে।

val connector = MoviesConnector.instance

connector.listMoviesByGenre.flow(genre = "Sci-Fi").collect { data ->
  println(data.movies)
}

connector.createMovie.execute(
  title="A New Hope",
  releaseYear = 1977,
  genre = "Sci-Fi",
  rating = 5
)

connector.listMoviesByGenre.execute(genre = "Sci-Fi") // will cause the Flow to get notified

গণনা ক্ষেত্রের পরিবর্তনগুলি পরিচালনা করুন

একটি অ্যাপের স্কিমায় গণনা থাকতে পারে, যা আপনার GraphQL কোয়েরি দ্বারা অ্যাক্সেস করা যেতে পারে।

একটি অ্যাপের ডিজাইন পরিবর্তনের সাথে সাথে, আপনি নতুন enum সমর্থিত মান যোগ করতে পারেন। উদাহরণস্বরূপ, কল্পনা করুন যে আপনার অ্যাপ্লিকেশনের জীবনচক্রের পরে আপনি AspectRatio enum-এ একটি FULLSCREEN মান যোগ করার সিদ্ধান্ত নিয়েছেন।

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

তবে, আপনার ক্লায়েন্টদের একটি আপডেটেড সংস্করণ প্রকাশ করার আগে, পুরানো মোতায়েন করা ক্লায়েন্টগুলি ভেঙে যেতে পারে।

স্থিতিস্থাপক বাস্তবায়নের উদাহরণ

জেনারেটেড SDK গ্রাহকের কোড হিসাবে অজানা মানগুলি পরিচালনা করতে বাধ্য করে, EnumValue অবজেক্টটি খুলতে হবে, যা হয় EnumValue.Known for known enum value অথবা EnumValue.Unknown for unknown value.

val result = connector.listMoviesByAspectRatio.execute(AspectRatio.WIDESCREEN)
val encounteredAspectRatios = mutableSetOf<String>()

result.data.movies
  .mapNotNull { it.otherAspectRatios }
  .forEach { otherAspectRatios ->
    otherAspectRatios
      .filterNot { it.value == AspectRatio.WIDESCREEN }
      .forEach {
        when (it) {
          is EnumValue.Known -> encounteredAspectRatios.add(it.value.name)
          is EnumValue.Unknown ->
            encounteredAspectRatios.add("[unknown ratio: ${it.stringValue}]")
        }
      }
  }

println(
  "Widescreen movies also include additional aspect ratios: " +
    encounteredAspectRatios.sorted().joinToString()
)

আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটির প্রোটোটাইপ তৈরি করুন এবং পরীক্ষা করুন

স্থানীয় এমুলেটর ব্যবহার করার জন্য ইন্সট্রুমেন্ট ক্লায়েন্টদের

আপনি Data Connect এমুলেটর ব্যবহার করতে পারেন, ডেটা কানেক্ট VS কোড এক্সটেনশন থেকে হোক বা CLI থেকে।

এমুলেটরের সাথে সংযোগ স্থাপনের জন্য অ্যাপটিকে ইন্সট্রুমেন্ট করা উভয় পরিস্থিতিতেই একই রকম।

val connector = MoviesConnector.instance

// Connect to the emulator on "10.0.2.2:9399"
connector.dataConnect.useEmulator()

// (alternatively) if you're running your emulator on non-default port:
connector.dataConnect.useEmulator(port = 9999)

// Make calls from your app

উৎপাদন সংস্থানগুলিতে স্যুইচ করতে, এমুলেটরের সাথে সংযোগ স্থাপনের জন্য লাইনগুলি মন্তব্য করুন।

Data Connect SDK-তে ডেটা টাইপ

Data Connect সার্ভারটি সাধারণ এবং কাস্টম গ্রাফকিউএল ডেটা টাইপ উপস্থাপন করে। এগুলি SDK-তে নিম্নরূপে উপস্থাপন করা হয়েছে।

ডেটা সংযোগের ধরণ কোটলিন
স্ট্রিং স্ট্রিং
ইন্ট Int (৩২-বিট পূর্ণসংখ্যা)
ভাসা ডাবল (৬৪-বিট ফ্লোট)
বুলিয়ান বুলিয়ান
ইউইউআইডি জাভা.ইউটিল.ইউইউআইডি
তারিখ com.google.firebase.dataconnect.LocalDate (১৬.০.০-beta03 পর্যন্ত java.util.Date ছিল)
টাইমস্ট্যাম্প com.google.firebase.টাইমস্ট্যাম্প
Int64 সম্পর্কে দীর্ঘ
যেকোনো com.google.firebase.dataconnect.AnyValue সম্পর্কে