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
ফাইলগুলিকে সংজ্ঞায়িত করে স্কিমা, ক্যোয়ারী এবং মিউটেশনগুলি পরিবর্তন করেন। গরম (পুনরায়) লোডিং ওয়ার্কফ্লোতে এটি একটি দরকারী বৈশিষ্ট্য হতে পারে।
.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.kts
এ dependencies
বিভাগে নিম্নলিখিত যোগ করুন:
implementation("com.google.firebase:firebase-dataconnect:16.0.0-beta01")
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.yaml
এ serviceId
এবং location
থেকে এবং connector.yaml
এ connectorId
থেকে স্বয়ংক্রিয়ভাবে তৈরি হয়।
একটি সংযোগকারী উদাহরণ প্রাপ্ত
এখন আপনি একটি কনফিগারেশন অবজেক্ট সেট আপ করেছেন, একটি 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 |
তারিখ | java.util.তারিখ |
টাইমস্ট্যাম্প | com.google.firebase.Timestamp |
Int64 | লম্বা |
যে কোন | com.google.firebase.dataconnect.AnyValue |