जनरेट किए गए Flutter SDK टूल का इस्तेमाल करना

Firebase Data Connect क्लाइंट SDK टूल की मदद से, सीधे Firebase ऐप्लिकेशन से अपनी सर्वर-साइड क्वेरी और बदलावों को कॉल किया जा सकता है. साथ ही, अपनी Data Connect सेवा में डिप्लॉय किए जाने वाले स्कीमा, क्वेरी, और बदलावों को डिज़ाइन करते समय, एक कस्टम क्लाइंट SDK टूल भी जनरेट किया जा सकता है. इसके बाद, इस SDK टूल के तरीकों को अपने क्लाइंट लॉजिक में इंटिग्रेट करें.

जैसा कि हमने कहीं और बताया है, यह ध्यान रखना ज़रूरी है कि Data Connect क्वेरी और म्यूटेशन, क्लाइंट कोड से सबमिट नहीं किए जाते और उन्हें सर्वर पर चलाया जाता है. इसके बजाय, डिप्लॉय होने पर, Data Connect ऑपरेशन को Cloud Functions जैसे सर्वर पर सेव किया जाता है. इसका मतलब है कि आपको क्लाइंट-साइड के बदलाव डिप्लॉय करने होंगे, ताकि मौजूदा उपयोगकर्ताओं की संख्या में कोई कमी न आए. उदाहरण के लिए, ऐप्लिकेशन के पुराने वर्शन पर.

इसलिए, Data Connect आपको एक डेवलपर इनवायरनमेंट और टूल उपलब्ध कराता है. इसकी मदद से, सर्वर पर डिप्लॉय किए गए स्कीमा, क्वेरी, और म्यूटेशन का प्रोटोटाइप बनाया जा सकता है. प्रोटोटाइप बनाते समय, यह क्लाइंट-साइड SDK भी अपने-आप जनरेट करता है.

अपनी सेवा और क्लाइंट ऐप्लिकेशन में अपडेट करने के बाद, सर्वर- और क्लाइंट-साइड, दोनों अपडेट डिप्लॉय करने के लिए तैयार हो जाते हैं.

अपना Flutter SDK टूल जनरेट करना

ज़्यादातर Firebase प्रोजेक्ट की तरह ही, आपके Firebase Data Connect क्लाइंट कोड पर काम करने की प्रोसेस लोकल प्रोजेक्ट डायरेक्ट्री में होती है. क्लाइंट कोड जनरेट करने और मैनेज करने के लिए, Data Connect VS Code एक्सटेंशन और Firebase CLI, दोनों ही स्थानीय टूल अहम हैं.

प्रोजेक्ट शुरू करते समय जनरेट होने वाली, dataconnect.yaml फ़ाइल में मौजूद कई एंट्री के लिए, SDK टूल जनरेट करने के विकल्पों का इस्तेमाल किया जाता है.

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 टूल अपडेट करें

अगर Data Connect VS Code एक्सटेंशन और उसके Data Connect एमुलेटर की मदद से इंटरैक्टिव तरीके से प्रोटोटाइप बनाया जा रहा है, तो स्कीमा, क्वेरी, और म्यूटेशन तय करने वाली .gql फ़ाइलों में बदलाव करने पर, SDK टूल की सोर्स फ़ाइलें अपने-आप जनरेट और अपडेट हो जाती हैं. यह हॉट (फिर से) लोड होने वाले वर्कफ़्लो में एक मददगार सुविधा हो सकती है.

अन्य मामलों में, अगर Firebase सीएलआई से Data Connect एमुलेटर का इस्तेमाल किया जा रहा है, तो .gql अपडेट पर वॉच सेट की जा सकती है. साथ ही, SDK टूल के सोर्स अपने-आप अपडेट हो सकते हैं.

इसके अलावा, .gql फ़ाइलों में बदलाव होने पर, SDK टूल फिर से जनरेट करने के लिए, CLI का इस्तेमाल किया जा सकता है:

firebase dataconnect:sdk:generate --watch

इंटिग्रेशन और प्रोडक्शन रिलीज़ के लिए SDK टूल जनरेट करना

कुछ मामलों में, जैसे कि सीआई टेस्ट के लिए सबमिट करने के लिए प्रोजेक्ट सोर्स तैयार करना, एक साथ कई अपडेट करने के लिए Firebase सीएलआई को कॉल किया जा सकता है.

ऐसे मामलों में, firebase dataconnect:sdk:generate का इस्तेमाल करें.

क्लाइंट कोड सेट अप करना

Data Connect ऐप्लिकेशन को शुरू करना

सबसे पहले, Firebase सेटअप करने के स्टैंडर्ड निर्देशों का इस्तेमाल करके, अपना ऐप्लिकेशन शुरू करें.

इसके बाद, Data Connect प्लगिन को इंस्टॉल करें:

flutter pub add firebase_data_connect

Data Connect Flutter SDK टूल को शुरू करना

Data Connect को सेट अप करने के लिए इस्तेमाल की गई जानकारी का इस्तेमाल करके, अपने Data Connect इंस्टेंस को शुरू करें. यह जानकारी, Firebase कंसोल के Data Connect टैब में उपलब्ध है.

लाइब्रेरी इंपोर्ट करना

आपके क्लाइंट कोड को शुरू करने के लिए, इंपोर्ट के दो सेट ज़रूरी हैं. सामान्य Data Connect इंपोर्ट और खास, जनरेट किए गए SDK टूल इंपोर्ट.

// general imports
import 'package:firebase_data_connect/firebase_data_connect.dart';

// generated queries and mutations from SDK
import 'generated/movies.dart';

Flutter ऐप्लिकेशन का प्रोटोटाइप बनाना और उसकी जांच करना

लोकल एमुलेटर का इस्तेमाल करने के लिए क्लाइंट को इंस्ट्रूमेंट करना

Data Connect एमुलेटर का इस्तेमाल, Data Connect VS Code एक्सटेंशन या सीएलआई, दोनों से किया जा सकता है.

दोनों स्थितियों में, ऐप्लिकेशन को एम्युलेटर से कनेक्ट करने के लिए, इंस्ट्रूमेंट करने का तरीका एक जैसा है.

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();
}

वैकल्पिक फ़ील्ड

कुछ क्वेरी में वैकल्पिक फ़ील्ड हो सकते हैं. इन मामलों में, 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`

क्लाइंट-साइड पर म्यूटेशन का इस्तेमाल करना

म्यूटेशन को क्वेरी की तरह ही ऐक्सेस किया जा सकता है.

await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();

Dart SDK टूल में डेटा टाइप

Data Connect सर्वर, GraphQL के सामान्य डेटा टाइप दिखाता है. इन्हें एसडीके में इस तरह दिखाया जाता है.

Data Connect का टाइप Dart
टाइमस्टैंप firebase_data_connect.timestamp
Int (32-बिट) int
तारीख DateTime
यूयूआईडी स्ट्रिंग
Int64 int
फ़्लोट डबल
बूलियन bool
कोई भी firebase_data_connect.AnyValue