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

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

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

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

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

আপনার Kotlin SDK তৈরি করুন

বেশিরভাগ ফায়ারবেস প্রজেক্টের মতো, আপনার Firebase Data Connect ক্লায়েন্ট কোডের কাজ স্থানীয় প্রজেক্ট ডিরেক্টরিতে হয়। ডেটা কানেক্ট ভিএস কোড এক্সটেনশন এবং Firebase সিএলআই উভয়ই ক্লায়েন্ট কোড তৈরি ও পরিচালনার জন্য গুরুত্বপূর্ণ স্থানীয় টুল।

SDK জেনারেশনের অপশনগুলি dataconnect.yaml ফাইলের বেশ কয়েকটি এন্ট্রিতে চাবি করা হয় যখন আপনি আপনার প্রকল্প শুরু করেন।

SDK জেনারেশন শুরু করুন

আপনার connector.yaml এ, আপনার outputDir , package এবং (ওয়েব SDK-এর জন্য) packageJsonDir যোগ করুন।
connectorId: movies
generate:
  kotlinSdk:
    outputDir: ../../../src/main/java/com/myapplication
    package: com.myapplication

উত্পন্ন কোড স্থাপন করা হবে যে ডিরেক্টরির পাথ দিয়ে outputDir প্রতিস্থাপন করুন; এই পথটি সেই ডিরেক্টরির সাথে আপেক্ষিক যেটিতে connector.yaml ফাইলটি রয়েছে। তৈরি করা ফাইলগুলিতে ব্যবহার করার জন্য Kotlin প্যাকেজ বিবৃতি দিয়ে package প্রতিস্থাপন করুন, অথবা একটি ডিফল্ট প্যাকেজ ব্যবহার করতে package বাদ দিন।

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

আপনি যদি ডেটা কানেক্ট VS কোড এক্সটেনশন এবং এর Data Connect এমুলেটরের সাথে ইন্টারেক্টিভভাবে প্রোটোটাইপ করে থাকেন, SDK সোর্স ফাইলগুলি স্বয়ংক্রিয়ভাবে তৈরি এবং আপডেট হয় যখন আপনি .gql ফাইলগুলিকে সংজ্ঞায়িত করে স্কিমা, ক্যোয়ারী এবং মিউটেশনগুলি পরিবর্তন করেন। গরম (পুনরায়) লোডিং ওয়ার্কফ্লোতে এটি একটি দরকারী বৈশিষ্ট্য হতে পারে।

অন্যান্য পরিস্থিতিতে, আপনি যদি Firebase CLI থেকে Data Connect এমুলেটর ব্যবহার করেন, তাহলে আপনি .gql আপডেটের উপর একটি ঘড়ি সেট করতে পারেন এবং SDK উত্সগুলি স্বয়ংক্রিয়ভাবে আপডেট হতে পারে।

বিকল্পভাবে, যখনই .gql ফাইলগুলি পরিবর্তন করা হয় তখন আপনি SDK পুনরুদ্ধার করতে CLI ব্যবহার করতে পারেন:

firebase dataconnect:sdk:generate --watch

ইন্টিগ্রেশন এবং প্রোডাকশন রিলিজের জন্য SDK তৈরি করুন

কিছু পরিস্থিতিতে, যেমন CI পরীক্ষার জন্য জমা দেওয়ার জন্য প্রকল্পের উত্স প্রস্তুত করা, আপনি একটি ব্যাচ আপডেটের জন্য Firebase CLI-কে কল করতে পারেন।

এই ক্ষেত্রে, firebase dataconnect:sdk:generate ব্যবহার করুন।

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

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

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

তারপর, 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.ktsdependencies বিভাগে নিম্নলিখিত যোগ করুন:

implementation("com.google.firebase:firebase-dataconnect:16.0.0-beta03")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.5.1")
implementation("com.google.firebase:firebase-auth:23.1.0") // Optional
implementation("com.google.firebase:firebase-appcheck:18.0.0") // Optional

Data Connect অ্যান্ড্রয়েড SDK চালু করুন

ডেটা কানেক্ট সেট আপ করার জন্য আপনি যে তথ্য ব্যবহার করেছেন তা ব্যবহার করে আপনার 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

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

সংযোগকারী বস্তুর সাথে, আপনি 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

প্রোটোটাইপ এবং আপনার Android অ্যাপ্লিকেশন পরীক্ষা

একটি স্থানীয় এমুলেটর ব্যবহার করার জন্য উপকরণ ক্লায়েন্ট

আপনি 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 int (32-বিট পূর্ণসংখ্যা)
ভাসা ডাবল (64-বিট ফ্লোট)
বুলিয়ান বুলিয়ান
UUID java.util.UUID
তারিখ com.google.firebase.dataconnect.LocalDate (16.0.0-beta03 পর্যন্ত java.util.Date ছিল)
টাইমস্ট্যাম্প com.google.firebase.Timestamp
Int64 লম্বা
যে কোন com.google.firebase.dataconnect.AnyValue