ফায়ারস্টোর বান্ডেল বিল্ডার ( firestore-bundle-builder ) এক্সটেনশনটি একটি HTTP ফাংশন স্থাপন করে যা ক্লাউড ফায়ারস্টোর ডেটা বান্ডেল পরিবেশন করে। আপনি ফায়ারস্টোর ডকুমেন্টগুলিতে বান্ডেলগুলি সংজ্ঞায়িত করেন এবং এক্সটেনশনটি HTTP অনুরোধের মাধ্যমে স্ট্যাটিক বাইনারি ফাইল ডেটা বান্ডেল পরিবেশন করে, ফায়ারবেস হোস্টিং সিডিএন বা ক্লাউড স্টোরেজ ব্যবহার করে বিভিন্ন বিল্ট-ইন ক্যাশিং প্রক্রিয়া সহ। যখন কোনও বান্ডেল বিদ্যমান থাকে না বা বিদ্যমান বান্ডেলগুলির মেয়াদ শেষ হয়ে যায়, তখন এই ফাংশনটি চাহিদা অনুসারে একটি নতুন বান্ডেল তৈরি এবং ক্যাশে করবে।
এই এক্সটেনশনটি ব্যবহার করার জন্য, আপনাকে প্রথমে এক্সটেনশনের অ্যাডমিন ড্যাশবোর্ড ব্যবহার করে ফায়ারস্টোরে এক বা একাধিক বান্ডেল স্পেসিফিকেশন তৈরি করতে হবে। বান্ডেল স্পেসিফিকেশন হল নামযুক্ত কোয়েরি (সংগ্রহ কোয়েরি এবং বান্ডেলে যোগ করার জন্য নির্দিষ্ট ডকুমেন্ট পাথ) কীভাবে সংজ্ঞায়িত করা হয়।
বান্ডেল স্পেকের ভেতরে, আপনি নামযুক্ত কোয়েরিতে ব্যবহার করার জন্য প্যারামিটারগুলিও সংজ্ঞায়িত করতে পারেন। HTTP ফাংশন কল করার সময় আপনি URL কোয়েরি প্যারামিটার ব্যবহার করে এই প্যারামিটারগুলির জন্য মান সেট করেন।
উপরের লিঙ্কটিতে কিছু নির্দেশনা দেওয়া আছে যাতে আপনি অ্যাডমিন ইউটিলিটিগুলি স্থানীয়ভাবে চালাতে পারেন। ওয়েব অ্যাপটি সেট আপ হয়ে গেলে, UI ব্যবহার করে একটি স্পেসিফিকেশন তৈরি করতে localhost:3000 এ যান:

বান্ডেল তৈরি এবং পরিবেশন করা
এক্সটেনশনটি ইনস্টল করার পরে এবং একটি বান্ডেল স্পেক তৈরি করার পরে, আপনি এক্সটেনশন দ্বারা প্রদত্ত HTTP এন্ডপয়েন্টে কল করে বান্ডেল তৈরি এবং পরিবেশন শুরু করতে পারেন।
বান্ডেল স্পেসিফিকেশনের উপর নির্ভর করে, অনুরোধকৃত বান্ডেলটি ক্লায়েন্টের ক্যাশে, ফায়ারবেস হোস্টিং ক্যাশে অথবা ক্লাউড স্টোরেজ ফাইল থেকে ফেরত পাঠানো হতে পারে। সমস্ত ক্যাশের মেয়াদ শেষ হয়ে গেলে, একটি নতুন সার্ভ অনুরোধ চাহিদা অনুযায়ী বান্ডেল তৈরি করার জন্য ফায়ারস্টোর কোয়েরিগুলিকে ট্রিগার করবে।
আপনি একটি ফায়ারবেস হোস্টিং সাইট সেট আপ করে ফায়ারবেস হোস্টিং সিডিএন এর ক্ষমতার সুবিধা নিতে পারেন যা পুনর্লিখনের নিয়ম ব্যবহার করে সার্ভ ফাংশনের দিকে নির্দেশ করে। সিডিএনগুলি আপনার বান্ডেলটিকে বিভিন্ন সার্ভারে প্রতিলিপি করে, যাতে আপনার ব্যবহারকারীরা নিকটতম সার্ভার থেকে স্বয়ংক্রিয়ভাবে বান্ডেলটি লোড করতে পারে। এটিই পছন্দের পদ্ধতি।
Firebase Hosting-এ এটি সেট আপ করতে, নিম্নলিখিত বিষয়বস্তু সহ একটি firebase.json ফাইল তৈরি বা সম্পাদনা করুন এবং সাইটটি স্থাপন করুন :
{
"hosting": {
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "/bundles/*",
"function": "ext-firestore-bundle-builder-serve"
}
]
}
}
একবার স্থাপন করা হলে, আপনি আপনার সাইটের URL ব্যবহার করে CDN থেকে আপনার বান্ডেলগুলি অ্যাক্সেস করতে পারবেন। উদাহরণস্বরূপ: https://your-site-url.com/bundles/:bundleId ।
বিকল্পভাবে, যদি আপনি Firebase হোস্টিং ব্যবহার করতে না চান, তাহলে আপনি ক্লাউড স্টোরেজে ডেটা ক্যাশে করার জন্য এক্সটেনশনটি কনফিগার করতে পারেন। এই ক্ষেত্রে, আপনি বান্ডেল তৈরি করতে সরাসরি ডিপ্লয়েটেড HTTP ফাংশনটি কল করবেন।
ক্লায়েন্ট ইন্টিগ্রেশন
এরপর আপনি ক্লাউড ফায়ারস্টোর SDK-এর loadBundle API সহ একটি বান্ডেল ব্যবহার করতে পারেন। প্রথমে বান্ডেলটি ডাউনলোড করতে হবে, এবং তারপর SDK-তে সরবরাহ করতে হবে। উদাহরণস্বরূপ:
import { loadBundle } from "firebase/firestore";
// Download the bundle from the Firebase Hosting CDN:
const bundle = await fetch("/bundles/:bundleId");
// If not using a CDN, download the bundle directly:
// const bundle = await fetch('https://<location>-<project-id>.cloudfunctions.net/ext-firestore-bundle-builder-serve/:bundleId');
await loadBundle(bundle);
একবার লোড হয়ে গেলে, আপনি বান্ডেল থেকে ডেটা ব্যবহার করতে পারেন:
যদি আপনি বান্ডেলটি সংজ্ঞায়িত করার সময় ডকুমেন্ট পাথের একটি অ্যারে নির্দিষ্ট করে থাকেন, তাহলে আপনি বান্ডেলের মাধ্যমে আপনার ক্লায়েন্টের ডকুমেন্ট ডেটা পেতে পারেন:
import { getFirestore, doc, getDocFromCache } from "firebase/firestore";
// Bundle Document IDs: ['users/92x1NgSWYKUC4AG4s2nHGMR2ikZ2']
const ref = doc(getFirestore(), "users/92x1NgSWYKUC4AG4s2nHGMR2ikZ2");
const snapshot = await getDocFromCache(ref);
যদি আপনি কোয়েরি নির্দিষ্ট করে থাকেন, তাহলে বান্ডেল থেকে কোয়েরি চালানোর জন্য namedQuery API ব্যবহার করতে পারেন:
import { getFirestore, namedQuery } from "firebase/firestore";
const query = await namedQuery(getFirestore(), "queryId");
const snapshot = await getDocsFromCache(query);
প্রতিটি queries সম্পত্তির সংজ্ঞার একটি কী হিসেবে কোয়েরি আইডি সংজ্ঞায়িত করা হয় (নীচে দেখুন)।