Firebase Data Connect क्लाइंट SDK टूल की मदद से, सीधे Firebase ऐप्लिकेशन से अपनी सर्वर-साइड क्वेरी और बदलावों को कॉल किया जा सकता है. साथ ही, अपनी Data Connect सेवा में डिप्लॉय किए जाने वाले स्कीमा, क्वेरी, और बदलावों को डिज़ाइन करते समय, एक कस्टम क्लाइंट SDK टूल भी जनरेट किया जा सकता है. इसके बाद, इस SDK टूल के तरीकों को अपने क्लाइंट लॉजिक में इंटिग्रेट किया जाता है.
जैसा कि हमने कहीं और बताया है, यह ध्यान रखना ज़रूरी है कि Data Connect क्वेरी और म्यूटेशन, क्लाइंट कोड से सबमिट नहीं किए जाते और उन्हें सर्वर पर चलाया जाता है. इसके बजाय, डिप्लॉय होने पर, Data Connect ऑपरेशन को Cloud Functions जैसे सर्वर पर सेव किया जाता है. इसका मतलब है कि आपको मौजूदा उपयोगकर्ताओं को ऐप्लिकेशन के पुराने वर्शन पर काम करने से रोकने के लिए, क्लाइंट-साइड में बदलाव करने होंगे.
इसलिए, Data Connect आपको एक डेवलपर इनवायरनमेंट और टूल उपलब्ध कराता है. इसकी मदद से, सर्वर पर डिप्लॉय किए गए स्कीमा, क्वेरी, और म्यूटेशन का प्रोटोटाइप बनाया जा सकता है. प्रोटोटाइप बनाते समय, यह क्लाइंट-साइड SDK भी अपने-आप जनरेट करता है.
अपनी सेवा और क्लाइंट ऐप्लिकेशन में अपडेट करने के बाद, सर्वर- और क्लाइंट-साइड, दोनों अपडेट डिप्लॉय करने के लिए तैयार हो जाते हैं.
अपना Swift SDK टूल जनरेट करना
ज़्यादातर Firebase प्रोजेक्ट की तरह, आपके Firebase Data Connect क्लाइंट कोड पर काम, लोकल प्रोजेक्ट डायरेक्ट्री में किया जाता है. क्लाइंट कोड जनरेट करने और मैनेज करने के लिए, Data Connect VS Code एक्सटेंशन और Firebase CLI, दोनों ही स्थानीय टूल अहम हैं.
एसडीके जनरेशन के विकल्प, dataconnect.yaml
फ़ाइल में मौजूद कई एंट्री के लिए होते हैं. यह फ़ाइल, प्रोजेक्ट को शुरू करने पर जनरेट होती है.
SDK टूल जनरेट करना शुरू करना
अपनेconnector.yaml
में, outputDir
, package
, और (वेब SDK के लिए)
packageJsonDir
जोड़ें.
connectorId: "movies"
generate:
swiftSdk:
outputDir: "../movies-generated"
package: "Movies"
outputDir
से यह तय होता है कि जनरेट किए गए SDK टूल को कहां आउटपुट करना चाहिए. अगर यह पैरामीटर नहीं दिया गया है, तो कनेक्टर फ़ोल्डर का इस्तेमाल डिफ़ॉल्ट आउटपुट डायरेक्ट्री के तौर पर किया जाता है.
package
उस पैकेज का नाम बताता है जो जनरेट किया जाएगा. जनरेटर, पैकेज के नाम वाला एक फ़ोल्डर बनाएगा. इसमें Package.swift
और जनरेट किया गया कोड शामिल होगा.
observablePublisher
(ज़रूरी नहीं) क्वेरी रेफ़रंस में इस्तेमाल करने के लिए, Observable पब्लिशर की जानकारी देता है. संभावित वैल्यू observableMacro
(iOS 17+) और
observableObject
(iOS 17 से पहले के वर्शन) हैं. अगर कोई वैल्यू तय नहीं की गई है, तो डिफ़ॉल्ट वैल्यू
observableMacro
होती है.
प्रोटोटाइप बनाते समय SDK टूल अपडेट करना
अगर Data Connect VS Code एक्सटेंशन और उसके Data Connect एमुलेटर की मदद से इंटरैक्टिव तरीके से प्रोटोटाइप बनाया जा रहा है, तो स्कीमा, क्वेरी, और म्यूटेशन तय करने वाली .gql
फ़ाइलों में बदलाव करने पर, SDK टूल की सोर्स फ़ाइलें अपने-आप जनरेट और अपडेट हो जाती हैं. यह हॉट (फिर से) लोड होने वाले वर्कफ़्लो में एक मददगार सुविधा हो सकती है.
.gql
अपडेट पर वॉच सेट की जा सकती है. साथ ही, SDK टूल के सोर्स अपने-आप अपडेट हो सकते हैं.
इसके अलावा, .gql फ़ाइलों में बदलाव होने पर, SDK टूल फिर से जनरेट करने के लिए, CLI का इस्तेमाल किया जा सकता है:
firebase dataconnect:sdk:generate --watch
इंटिग्रेशन और प्रोडक्शन रिलीज़ के लिए SDK टूल जनरेट करना
कुछ मामलों में, जैसे कि सीआई टेस्ट के लिए सबमिट करने के लिए प्रोजेक्ट सोर्स तैयार करना, एक साथ कई अपडेट करने के लिए Firebase सीएलआई को कॉल किया जा सकता है.
ऐसे मामलों में, firebase dataconnect:sdk:generate
का इस्तेमाल करें.
क्लाइंट कोड सेट अप करना
Data Connect और जनरेट किए गए SDK टूल का इस्तेमाल करने के लिए, अपने क्लाइंट कोड को सेट अप करने के लिए, पहले Firebase सेटअप करने के सामान्य निर्देशों का पालन करें.
इसके बाद, Xcode का इस्तेमाल करके अपना ऐप्लिकेशन वर्कस्पेस खोलें.
सबसे ऊपर मौजूद नेविगेशन बार में, फ़ाइल > पैकेज की डिपेंडेंसी जोड़ें > स्थानीय जोड़ें को चुनें. इसके बाद, जनरेट की गई Package.swift
सोर्स फ़ाइल वाला फ़ोल्डर चुनें.
Data Connect iOS SDK टूल को शुरू करना
Data Connect को सेट अप करने के लिए इस्तेमाल की गई जानकारी का इस्तेमाल करके, अपने Data Connect इंस्टेंस को शुरू करें. यह जानकारी, Firebase कंसोल के Data Connect टैब में उपलब्ध है.
कनेक्टर इंस्टेंस पाना
आपके कनेक्टर का कोड, Data Connect एमुलेटर जनरेट करेगा. अगर आपके कनेक्टर का नाम movies
और पैकेज movies
है, जैसा कि connector.yaml
में बताया गया है, तो कनेक्टर ऑब्जेक्ट को वापस पाने के लिए, इन फ़ंक्शन को कॉल करें:
let connector = DataConnect.moviesConnector
क्वेरी और म्यूटेशन चलाना
कनेक्टर ऑब्जेक्ट की मदद से, 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
}
}
इसके बाद, इस तरह से मूवी बनाई जा सकती है:
let mutationResult = try await connector.createMovieMutation.execute(
title: "Empire Strikes Back",
releaseYear: 1980,
genre: "Sci-Fi",
rating: 5)
print("Movie ID: \(mutationResult.data.movie_insert.id)")
किसी मूवी को वापस पाने के लिए, क्वेरी रेफ़रंस का इस्तेमाल किया जाएगा. सभी क्वेरी रेफ़रंस, Observable पब्लिशर हैं. कॉन्फ़िगर किए गए पब्लिशर (connector.yaml)
देखें) के आधार पर, ये @Observable
मैक्रो (iOS 17 और उसके बाद के वर्शन) के साथ काम करते हैं या ObservableObject
प्रोटोकॉल को लागू करते हैं. अगर कोई मैक्रो नहीं चुना गया है, तो डिफ़ॉल्ट रूप से iOS 17 और उसके बाद के वर्शन पर काम करने वाला @Observable
मैक्रो लागू होता है.
SwiftUI व्यू में, क्वेरी के नतीजों को क्वेरी रेफ़रंस के पब्लिश किए गए data
वैरिएबल का इस्तेमाल करके बांधा जा सकता है. साथ ही, डेटा को अपडेट करने के लिए क्वेरी के execute()
तरीके को कॉल किया जा सकता है. data
वैरिएबल, GQL क्वेरी की परिभाषा में तय किए गए डेटा के टाइप से मेल खाएगा.
खोजे गए सभी नतीजे, Decodable
प्रोटोकॉल के मुताबिक होते हैं. अगर आपने GQL फ़ेच में ऑब्जेक्ट की प्राइमरी कुंजी शामिल की है, तो ऑब्जेक्ट भी Identifiable
होते हैं. इससे, इन्हें इटरेटर्स में इस्तेमाल किया जा सकता है.
struct ListMovieView: View {
@StateObject private var queryRef = connector.listMoviesByGenreQuery.ref(genre: "Sci-Fi")
var body: some View {
VStack {
Button {
Task {
do {
try await refresh()
} catch {
print("Failed to refresh: \(error)")
}
}
} label: {
Text("Refresh")
}
// use the query results in a view
ForEach(queryRef.data?.movies ?? [], id: \.self.id) { movie in
Text(movie.title)
}
}
}
@MainActor
func refresh() async throws {
_ = try await queryRef.execute()
}
}
क्वेरी एक बार में भी लागू की जा सकती हैं.
let resultData = try await DataConnect.moviesConnector.listMoviesByGenreQuery.execute(genre: "Sci-Fi")
अपने iOS ऐप्लिकेशन का प्रोटोटाइप बनाना और उसे टेस्ट करना
लोकल एमुलेटर का इस्तेमाल करने के लिए क्लाइंट को इंस्ट्रूमेंट करना
Data Connect एमुलेटर का इस्तेमाल, Data Connect VS Code एक्सटेंशन या सीएलआई, दोनों से किया जा सकता है.
ऐप्लिकेशन को एम्युलेटर से कनेक्ट करने के लिए, दोनों स्थितियों में एक ही तरह से इंस्ट्रूमेंट किया जाता है.
let connector = DataConnect.moviesConnector
// Connect to the emulator on "127.0.0.1:9399"
connector.useEmulator()
// (alternatively) if you're running your emulator on non-default port:
connector.useEmulator(port: 9999)
// Make calls from your app
Data Connect SDK टूल में डेटा टाइप
Data Connect सर्वर, सामान्य और कस्टम GraphQL डेटा टाइप दिखाता है. इन्हें एसडीके टूल में इस तरह दिखाया जाता है.
Data Connect का टाइप | Swift |
---|---|
स्ट्रिंग | स्ट्रिंग |
Int | Int |
फ़्लोट | डबल-साइज़ बेड |
बूलियन | बूल |
यूयूआईडी | यूयूआईडी |
तारीख | FirebaseDataConnect.LocalDate |
टाइमस्टैंप | FirebaseCore.Timestamp |
Int64 | Int64 |
कोई भी | FirebaseDataConnect.AnyValue |