Firebase Data Connect ক্লায়েন্ট SDK গুলি আপনাকে সরাসরি Firebase অ্যাপ থেকে আপনার সার্ভার-সাইড কোয়েরি এবং মিউটেশন কল করতে দেয়। আপনার Data Connect পরিষেবাতে স্থাপন করা স্কিমা, কোয়েরি এবং মিউটেশন ডিজাইন করার সময় আপনি সমান্তরালভাবে একটি কাস্টম ক্লায়েন্ট SDK তৈরি করেন। তারপর, আপনি এই SDK থেকে পদ্ধতিগুলিকে আপনার ক্লায়েন্ট লজিকের সাথে একীভূত করেন।
যেমনটি আমরা অন্যত্র উল্লেখ করেছি, এটি মনে রাখা গুরুত্বপূর্ণ যে Data Connect কোয়েরি এবং মিউটেশনগুলি ক্লায়েন্ট কোড দ্বারা জমা দেওয়া হয় না এবং সার্ভারে কার্যকর করা হয় না। পরিবর্তে, যখন স্থাপন করা হয়, তখন Data Connect অপারেশনগুলি ক্লাউড ফাংশনের মতো সার্ভারে সংরক্ষণ করা হয়। এর অর্থ হল বিদ্যমান ব্যবহারকারীদের (উদাহরণস্বরূপ, পুরানো অ্যাপ সংস্করণগুলিতে) ভাঙা এড়াতে আপনাকে সংশ্লিষ্ট ক্লায়েন্ট-সাইড পরিবর্তনগুলি স্থাপন করতে হবে।
এই কারণেই Data Connect আপনাকে একটি ডেভেলপার পরিবেশ এবং টুলিং প্রদান করে যা আপনাকে আপনার সার্ভার-স্থাপিত স্কিমা, কোয়েরি এবং মিউটেশন প্রোটোটাইপ করতে দেয়। এটি প্রোটোটাইপ করার সময় স্বয়ংক্রিয়ভাবে ক্লায়েন্ট-সাইড SDK তৈরি করে।
যখন আপনি আপনার পরিষেবা এবং ক্লায়েন্ট অ্যাপগুলিতে আপডেটগুলি পুনরাবৃত্তি করেন, তখন সার্ভার- এবং ক্লায়েন্ট-সাইড উভয় আপডেটই স্থাপনের জন্য প্রস্তুত থাকে।
ক্লায়েন্ট ডেভেলপমেন্ট ওয়ার্কফ্লো কী?
আপনি যদি "শুরু করুন" পদ্ধতি অনুসরণ করেন, তাহলে আপনাকে Data Connect সামগ্রিক উন্নয়ন প্রবাহের সাথে পরিচয় করিয়ে দেওয়া হবে। এই নির্দেশিকায়, আপনি আপনার স্কিমা থেকে Flutter SDK তৈরি করা এবং ক্লায়েন্ট কোয়েরি এবং মিউটেশন নিয়ে কাজ করার বিষয়ে আরও বিস্তারিত তথ্য পাবেন।
সংক্ষেপে বলতে গেলে, আপনার ক্লায়েন্ট অ্যাপগুলিতে জেনারেটেড ফ্লটার SDK ব্যবহার করতে, আপনাকে এই পূর্বশর্ত পদক্ষেপগুলি অনুসরণ করতে হবে:
- আপনার Flutter অ্যাপে Firebase যোগ করুন।
- flutterfire CLI
dart pub global activate flutterfire_cliইনস্টল করুন। -
flutterfire configureচালান।
তারপর:
- আপনার অ্যাপ স্কিমা তৈরি করুন।
SDK জেনারেশন সেট আপ করুন:
- আমাদের ডেটা কানেক্ট VS কোড এক্সটেনশনে "অ্যাপে SDK যোগ করুন" বোতামের সাহায্যে
- আপনার
connector.yamlআপডেট করে ।
আপনার ক্লায়েন্ট কোডটি শুরু করুন এবং লাইব্রেরিগুলি আমদানি করুন ।
কল টু কোয়েরি এবং মিউটেশন বাস্তবায়ন করুন।
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 প্লাগইনটি ইনস্টল করুন:
flutter pub add firebase_data_connectData Connect ফ্লাটার SDK আরম্ভ করুন
ডেটা কানেক্ট সেট আপ করার জন্য ব্যবহৃত তথ্য ব্যবহার করে আপনার Data Connect ইনস্ট্যান্সটি শুরু করুন (সবই Firebase কনসোল ডেটা কানেক্ট ট্যাবে উপলব্ধ)।
লাইব্রেরি আমদানি করুন
আপনার ক্লায়েন্ট কোড শুরু করার জন্য দুটি সেট আমদানির প্রয়োজন, সাধারণ Data Connect আমদানি এবং নির্দিষ্ট, জেনারেটেড SDK আমদানি।
// general imports
import 'package:firebase_data_connect/firebase_data_connect.dart';
// generated queries and mutations from SDK
import 'generated/movies.dart';
ক্লায়েন্ট সাইডে কোয়েরি ব্যবহার করুন
জেনারেট করা কোডটি ইতিমধ্যেই পূর্বনির্ধারিত কোয়েরি রেফারেন্সের সাথে আসবে। আপনাকে যা করতে হবে তা হল আমদানি এবং কল execute ।
import 'generated/movies.dart';
await MoviesConnector.instance.listMovies().execute();
SDK কোয়েরি পদ্ধতিতে কল করুন
এই অ্যাকশন শর্টকাট ফাংশনগুলি ব্যবহারের একটি উদাহরণ এখানে দেওয়া হল:
import 'generated/movies.dart';
function onBtnClick() {
// This will call the generated Dart from the CLI and then make an HTTP request to the server.
MoviesConnector.instance.listMovies().execute().then(data => showInUI(data)); // == MoviesConnector.instance.listMovies().ref().execute();
}
ঐচ্ছিক ক্ষেত্র
কিছু প্রশ্নের ঐচ্ছিক ক্ষেত্র থাকতে পারে। এই ক্ষেত্রে, Flutter SDK একটি বিল্ডার পদ্ধতি প্রকাশ করে এবং আলাদাভাবে সেট করতে হবে।
উদাহরণস্বরূপ, createMovie কল করার সময় ফিল্ড rating ঐচ্ছিক, তাই আপনাকে এটি বিল্ডার ফাংশনে প্রদান করতে হবে।
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi"}).rating(5).execute();
পরিবর্তনগুলিতে সাবস্ক্রাইব করুন
আপনি পরিবর্তনগুলিতে সাবস্ক্রাইব করতে পারেন (যা আপনি যখনই কোনও কোয়েরি কার্যকর করবেন তখন আপডেট হবে)।
QueryRef<ListMoviesData, void> listRef = MoviesConnector.instance.listMovies().ref();
// subscribe will immediately invoke the query if no execute was called on it previously.
listRef.subscribe().listen((data) {
updateUIWithMovies(data.movies);
});
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();
await listRef.execute(); // will update the subscription above`
গণনা ক্ষেত্রের পরিবর্তনগুলি পরিচালনা করুন
একটি অ্যাপের স্কিমায় গণনা থাকতে পারে, যা আপনার GraphQL কোয়েরি দ্বারা অ্যাক্সেস করা যেতে পারে।
একটি অ্যাপের ডিজাইন পরিবর্তনের সাথে সাথে, আপনি নতুন enum সমর্থিত মান যোগ করতে পারেন। উদাহরণস্বরূপ, কল্পনা করুন যে আপনার অ্যাপ্লিকেশনের জীবনচক্রের পরে আপনি AspectRatio enum-এ একটি FULLSCREEN মান যোগ করার সিদ্ধান্ত নিয়েছেন।
Data Connect ওয়ার্কফ্লোতে, আপনি আপনার প্রশ্ন এবং SDK আপডেট করার জন্য স্থানীয় ডেভেলপমেন্ট টুলিং ব্যবহার করতে পারেন।
তবে, আপনার ক্লায়েন্টদের একটি আপডেটেড সংস্করণ প্রকাশ করার আগে, পুরানো মোতায়েন করা ক্লায়েন্টগুলি ভেঙে যেতে পারে।
স্থিতিস্থাপক বাস্তবায়নের উদাহরণ
জেনারেটেড SDK অজানা মান পরিচালনা করতে বাধ্য করে। অর্থাৎ, ক্লায়েন্ট কোডকে EnumValue অবজেক্টটিকে Known অথবা Unknown এ আনর্যাপ করতে হবে।
final result = await MoviesConnector.instance.listMovies().execute();
if (result.data != null && result.data!.isNotEmpty) {
handleEnumValue(result.data![0].aspectratio);
}
void handleEnumValue(EnumValue<AspectRatio> aspectValue) {
if (aspectValue.value != null) {
switch(aspectValue.value!) {
case AspectRatio.ACADEMY:
print("This movie is in Academy aspect");
break;
case AspectRatio.WIDESCREEN:
print("This movie is in Widescreen aspect");
break;
case AspectRatio.ANAMORPHIC:
print("This movie is in Anamorphic aspect");
break;
case AspectRatio.IMAX:
print("This movie is in IMAX aspect");
}
} else {
print("Unknown aspect ratio detected: ${aspectValue.stringValue}");
}
}
ক্লায়েন্টের পক্ষে মিউটেশন ব্যবহার করুন
মিউটেশনগুলি কোয়েরির মতোই অ্যাক্সেসযোগ্য।
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();
আপনার ফ্লাটার অ্যাপগুলির প্রোটোটাইপ এবং পরীক্ষা করুন
স্থানীয় এমুলেটর ব্যবহার করার জন্য ইন্সট্রুমেন্ট ক্লায়েন্টদের
আপনি Data Connect এমুলেটর ব্যবহার করতে পারেন, ডেটা কানেক্ট VS কোড এক্সটেনশন থেকে হোক বা CLI থেকে।
এমুলেটরের সাথে সংযোগ স্থাপনের জন্য অ্যাপটিকে ইন্সট্রুমেন্ট করা উভয় পরিস্থিতিতেই একই রকম।
import 'package:firebase_data_connect/firebase_data_connect.dart';
import 'generated/movies.dart';
MoviesConnector.instance.dataConnect
.useDataConnectEmulator('127.0.0.1', 9399);
// Make calls from your app
QueryRef<ListMoviesData, void> ref = MoviesConnector.instance.listMovies.ref();
উৎপাদন সংস্থানগুলিতে স্যুইচ করতে, এমুলেটরের সাথে সংযোগ স্থাপনের জন্য লাইনগুলি মন্তব্য করুন।
ডার্ট SDK-তে ডেটা টাইপ
Data Connect সার্ভার সাধারণ গ্রাফকিউএল ডেটা টাইপগুলিকে প্রতিনিধিত্ব করে। এগুলি SDK-তে নিম্নরূপে উপস্থাপন করা হয়েছে।
| ডেটা সংযোগের ধরণ | ডার্ট |
|---|---|
| টাইমস্ট্যাম্প | ফায়ারবেস_ডেটা_কানেক্ট।টাইমস্ট্যাম্প |
| ইন্ট (৩২-বিট) | int-এর বিবরণ |
| তারিখ | তারিখ সময় |
| ইউইউআইডি | স্ট্রিং |
| Int64 সম্পর্কে | int-এর বিবরণ |
| ভাসা | দ্বিগুণ |
| বুলিয়ান | বুল |
| যেকোনো | ফায়ারবেস_ডেটা_কানেক্ট.এনিভ্যালু |