Firebase Data Connect ক্লায়েন্ট SDK গুলি আপনাকে সরাসরি একটি Firebase অ্যাপ থেকে আপনার সার্ভার-সাইড প্রশ্ন এবং মিউটেশন কল করতে দেয়। আপনি সমান্তরালভাবে একটি কাস্টম ক্লায়েন্ট SDK তৈরি করেন যখন আপনি স্কিম, প্রশ্ন এবং মিউটেশনগুলি আপনার Data Connect পরিষেবাতে স্থাপন করেন। তারপর, আপনি আপনার ক্লায়েন্ট যুক্তিতে এই SDK থেকে পদ্ধতিগুলিকে একীভূত করুন৷
যেমনটি আমরা অন্য কোথাও উল্লেখ করেছি, এটা মনে রাখা গুরুত্বপূর্ণ যে Data Connect কোয়েরি এবং মিউটেশনগুলি ক্লায়েন্ট কোড দ্বারা জমা দেওয়া হয় না এবং সার্ভারে কার্যকর করা হয়। পরিবর্তে, যখন স্থাপন করা হয়, Data Connect অপারেশনগুলি ক্লাউড ফাংশনের মতো সার্ভারে সংরক্ষণ করা হয়। এর অর্থ হল বিদ্যমান ব্যবহারকারীদের (উদাহরণস্বরূপ, পুরানো অ্যাপ সংস্করণে) ভাঙা এড়াতে আপনাকে সংশ্লিষ্ট ক্লায়েন্ট-সাইড পরিবর্তনগুলি স্থাপন করতে হবে।
এই কারণেই Data Connect আপনাকে একটি বিকাশকারী পরিবেশ এবং টুলিং প্রদান করে যা আপনাকে আপনার সার্ভার-নিয়োজিত স্কিমা, প্রশ্ন এবং মিউটেশনের প্রোটোটাইপ করতে দেয়। আপনি প্রোটোটাইপ করার সময় এটি স্বয়ংক্রিয়ভাবে ক্লায়েন্ট-সাইড SDK তৈরি করে।
আপনি যখন আপনার পরিষেবা এবং ক্লায়েন্ট অ্যাপগুলিতে আপডেটগুলি পুনরাবৃত্তি করেন, তখন সার্ভার- এবং ক্লায়েন্ট-সাইড আপডেটগুলি স্থাপনের জন্য প্রস্তুত।
আপনার ফ্লটার SDK জেনারেট করুন
বেশিরভাগ ফায়ারবেস প্রজেক্টের মতো, আপনার Firebase Data Connect ক্লায়েন্ট কোডের কাজ স্থানীয় প্রজেক্ট ডিরেক্টরিতে হয়। ডেটা কানেক্ট ভিএস কোড এক্সটেনশন এবং Firebase সিএলআই উভয়ই ক্লায়েন্ট কোড তৈরি ও পরিচালনার জন্য গুরুত্বপূর্ণ স্থানীয় টুল।
SDK জেনারেশনের অপশনগুলি dataconnect.yaml
ফাইলের বেশ কয়েকটি এন্ট্রিতে চাবি করা হয় যখন আপনি আপনার প্রকল্প শুরু করেন।
SDK জেনারেশন শুরু করুন
আপনারconnector.yaml
এ, আপনার outputDir
, package
এবং (ওয়েব SDK-এর জন্য) packageJsonDir
যোগ করুন। connectorId: movies
generate:
dartSdk:
outputDir: ../../lib/generated # Feel free to change this to a different path
package: movies
outputDir
উত্পন্ন SDK কোথায় আউটপুট করা উচিত তা নির্দিষ্ট করে। এই পথটি সেই ডিরেক্টরির সাথে আপেক্ষিক যেটিতে connector.yaml
ফাইলটি রয়েছে। ঐচ্ছিকভাবে, আপনি আপনার outputDir
এ একটি পরম পথ প্রদান করতে পারেন।
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 অ্যাপ চালু করুন
প্রথমে, স্ট্যান্ডার্ড Firebase সেটআপ নির্দেশাবলী ব্যবহার করে আপনার অ্যাপ শুরু করুন।
তারপর, Data Connect প্লাগইন ইনস্টল করুন:
flutter pub add firebase_data_connect
Data Connect Flutter 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';
আপনার ফ্লাটার অ্যাপের প্রোটোটাইপ এবং পরীক্ষা করুন
একটি স্থানীয় এমুলেটর ব্যবহার করার জন্য উপকরণ ক্লায়েন্ট
আপনি 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();
উত্পাদন সংস্থানে স্যুইচ করতে, এমুলেটরের সাথে সংযোগের জন্য লাইনগুলি মন্তব্য করুন।
ক্লায়েন্ট সাইডে প্রশ্ন ব্যবহার করুন
জেনারেট করা কোড ইতিমধ্যেই পূর্বনির্ধারিত ক্যোয়ারী রেফের সাথে আসবে। আপনাকে যা করতে হবে তা হল আমদানি এবং কল 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();
}
ঐচ্ছিক ক্ষেত্র
কিছু প্রশ্নের ঐচ্ছিক ক্ষেত্র থাকতে পারে। এই ক্ষেত্রে, ফ্লাটার 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`
ক্লায়েন্ট সাইডে মিউটেশন ব্যবহার করুন
মিউটেশনগুলি কোয়েরির মতোই অ্যাক্সেসযোগ্য।
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();
ডার্ট এসডিকে-তে ডেটার ধরন
Data Connect সার্ভার সাধারণ গ্রাফকিউএল ডেটা প্রকারের প্রতিনিধিত্ব করে। এগুলিকে নিম্নরূপ SDK-তে উপস্থাপন করা হয়েছে।
ডেটা কানেক্ট টাইপ | ডার্ট |
---|---|
টাইমস্ট্যাম্প | firebase_data_connect.Timestamp |
int (32-বিট) | int |
তারিখ | তারিখ সময় |
UUID | স্ট্রিং |
Int64 | int |
ভাসা | দ্বিগুণ |
বুলিয়ান | bool |
যে কোন | firebase_data_connect.AnyValue |
Firebase Data Connect ক্লায়েন্ট SDK গুলি আপনাকে সরাসরি একটি Firebase অ্যাপ থেকে আপনার সার্ভার-সাইড প্রশ্ন এবং মিউটেশন কল করতে দেয়। আপনি সমান্তরালভাবে একটি কাস্টম ক্লায়েন্ট SDK তৈরি করেন যখন আপনি স্কিম, প্রশ্ন এবং মিউটেশনগুলি আপনার Data Connect পরিষেবাতে স্থাপন করেন। তারপর, আপনি আপনার ক্লায়েন্ট যুক্তিতে এই SDK থেকে পদ্ধতিগুলিকে একীভূত করুন৷
যেমনটি আমরা অন্য কোথাও উল্লেখ করেছি, এটা মনে রাখা গুরুত্বপূর্ণ যে Data Connect কোয়েরি এবং মিউটেশনগুলি ক্লায়েন্ট কোড দ্বারা জমা দেওয়া হয় না এবং সার্ভারে কার্যকর করা হয়। পরিবর্তে, যখন স্থাপন করা হয়, Data Connect অপারেশনগুলি ক্লাউড ফাংশনের মতো সার্ভারে সংরক্ষণ করা হয়। এর অর্থ হল বিদ্যমান ব্যবহারকারীদের (উদাহরণস্বরূপ, পুরানো অ্যাপ সংস্করণে) ভাঙা এড়াতে আপনাকে সংশ্লিষ্ট ক্লায়েন্ট-সাইড পরিবর্তনগুলি স্থাপন করতে হবে।
এই কারণেই Data Connect আপনাকে একটি বিকাশকারী পরিবেশ এবং টুলিং প্রদান করে যা আপনাকে আপনার সার্ভার-নিয়োজিত স্কিমা, প্রশ্ন এবং মিউটেশনের প্রোটোটাইপ করতে দেয়। আপনি প্রোটোটাইপ করার সময় এটি স্বয়ংক্রিয়ভাবে ক্লায়েন্ট-সাইড SDK তৈরি করে।
আপনি যখন আপনার পরিষেবা এবং ক্লায়েন্ট অ্যাপগুলিতে আপডেটগুলি পুনরাবৃত্তি করেন, তখন সার্ভার- এবং ক্লায়েন্ট-সাইড আপডেটগুলি স্থাপনের জন্য প্রস্তুত।
আপনার ফ্লটার SDK জেনারেট করুন
বেশিরভাগ ফায়ারবেস প্রজেক্টের মতো, আপনার Firebase Data Connect ক্লায়েন্ট কোডের কাজ স্থানীয় প্রজেক্ট ডিরেক্টরিতে হয়। ডেটা কানেক্ট ভিএস কোড এক্সটেনশন এবং Firebase সিএলআই উভয়ই ক্লায়েন্ট কোড তৈরি ও পরিচালনার জন্য গুরুত্বপূর্ণ স্থানীয় টুল।
SDK জেনারেশনের অপশনগুলি dataconnect.yaml
ফাইলের বেশ কয়েকটি এন্ট্রিতে চাবি করা হয় যখন আপনি আপনার প্রকল্প শুরু করেন।
SDK জেনারেশন শুরু করুন
আপনারconnector.yaml
এ, আপনার outputDir
, package
এবং (ওয়েব SDK-এর জন্য) packageJsonDir
যোগ করুন। connectorId: movies
generate:
dartSdk:
outputDir: ../../lib/generated # Feel free to change this to a different path
package: movies
outputDir
উত্পন্ন SDK কোথায় আউটপুট করা উচিত তা নির্দিষ্ট করে। এই পথটি সেই ডিরেক্টরির সাথে আপেক্ষিক যেটিতে connector.yaml
ফাইলটি রয়েছে। ঐচ্ছিকভাবে, আপনি আপনার outputDir
এ একটি পরম পথ প্রদান করতে পারেন।
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 অ্যাপ চালু করুন
প্রথমে, স্ট্যান্ডার্ড Firebase সেটআপ নির্দেশাবলী ব্যবহার করে আপনার অ্যাপ শুরু করুন।
তারপর, Data Connect প্লাগইন ইনস্টল করুন:
flutter pub add firebase_data_connect
Data Connect Flutter 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';
আপনার ফ্লাটার অ্যাপের প্রোটোটাইপ এবং পরীক্ষা করুন
একটি স্থানীয় এমুলেটর ব্যবহার করার জন্য উপকরণ ক্লায়েন্ট
আপনি 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();
উত্পাদন সংস্থানে স্যুইচ করতে, এমুলেটরের সাথে সংযোগের জন্য লাইনগুলি মন্তব্য করুন।
ক্লায়েন্ট সাইডে প্রশ্ন ব্যবহার করুন
জেনারেট করা কোড ইতিমধ্যেই পূর্বনির্ধারিত ক্যোয়ারী রেফের সাথে আসবে। আপনাকে যা করতে হবে তা হল আমদানি এবং কল 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();
}
ঐচ্ছিক ক্ষেত্র
কিছু প্রশ্নের ঐচ্ছিক ক্ষেত্র থাকতে পারে। এই ক্ষেত্রে, ফ্লাটার 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`
ক্লায়েন্ট সাইডে মিউটেশন ব্যবহার করুন
মিউটেশনগুলি কোয়েরির মতোই অ্যাক্সেসযোগ্য।
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();
ডার্ট এসডিকে-তে ডেটার ধরন
Data Connect সার্ভার সাধারণ গ্রাফকিউএল ডেটা প্রকারের প্রতিনিধিত্ব করে। এগুলিকে নিম্নরূপ SDK-তে উপস্থাপন করা হয়েছে।
ডেটা কানেক্ট টাইপ | ডার্ট |
---|---|
টাইমস্ট্যাম্প | firebase_data_connect.Timestamp |
int (32-বিট) | int |
তারিখ | তারিখ সময় |
UUID | স্ট্রিং |
Int64 | int |
ভাসা | দ্বিগুণ |
বুলিয়ান | bool |
যে কোন | firebase_data_connect.AnyValue |