Supabase کنیکٹر
ڈیٹا بیس ریکارڈز، صارف تصدیق ڈیٹا، فائل اسٹوریج ایونٹس، اور گاہک engagement آٹومیشن کے لیے ریئل ٹائم تبدیلیوں کو سنک کرنے کے لیے اپنے Supabase پروجیکٹ کو منسلک کریں۔
جائزہ
| خاصیت | قدر |
|---|---|
| پلیٹ فارم | Supabase |
| زمرہ | ڈیٹا بیس اور بیک اینڈ |
| سیٹ اپ کی پیچیدگی | آسان |
| آفیشل انٹیگریشن | ہاں |
| سنک شدہ ڈیٹا | صارفین، ٹیبلز، اسٹوریج، ایونٹس |
| دستیاب اسکلز | 11 |
| API قسم | REST (PostgREST) + Realtime WebSocket |
| آفیشل دستاویزات | supabase.com/docs |
خصوصیات
- خودکار تیار شدہ REST API, PostgREST کے ذریعے کسی بھی Postgres ٹیبل پر CRUD آپریشنز، کوئی کوڈ درکار نہیں
- Auth صارف سنک, Supabase Auth صارفین (ای میل، فون، سوشل لاگ ان) کو اپنے engagement پلیٹ فارم پر سنک کریں
- ریئل ٹائم سبسکرپشنز, کسی بھی ٹیبل پر INSERT, UPDATE, DELETE ایونٹس کو ریئل ٹائم میں سنیں
- Row Level Security, تمام API رسائی محفوظ ملٹی ٹیننٹ ڈیٹا کے لیے Postgres RLS پالیسیوں کا احترام کرتی ہے
- اسٹوریج انٹیگریشن, Storage buckets میں فائل اپ لوڈز ٹریک کریں اور اثاثوں کا انتظام کریں
- Edge Functions, کسٹم لاجک اور webhooks کے لیے serverless Deno فنکشنز کو invoke کریں
- مکمل ٹیکسٹ سرچ, API کے ذریعے Postgres مکمل ٹیکسٹ سرچ صلاحیتوں کا فائدہ اٹھائیں
شرائط
شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:
- Supabase پروجیکٹ (app.supabase.com)
- آپ کے پروجیکٹ کا API URL اور API keys (Settings → API میں ملتے ہیں)
- API رسائی کے ساتھ Tajo اکاؤنٹ
API Keys
Supabase دو کیز فراہم کرتا ہے: anon (عوامی، RLS کا احترام کرتا ہے) اور service_role (RLS کو نظر انداز کرتا ہے، ایڈمن رسائی)۔ سرور سائڈ انٹیگریشنز کے لیے service_role اور کلائنٹ سائڈ کے لیے anon استعمال کریں۔
تصدیق
Supabase API key تصدیق استعمال کرتا ہے۔ ہر درخواست کو apikey ہیڈر اور اختیاری طور پر صارف اسکوپڈ رسائی کے لیے Authorization bearer ٹوکن درکار ہوتا ہے۔
# Using anon key (respects RLS)curl 'https://<project_ref>.supabase.co/rest/v1/customers' \ -H "apikey: <SUPABASE_ANON_KEY>" \ -H "Authorization: Bearer <SUPABASE_ANON_KEY>"
# Using service_role key (bypasses RLS)curl 'https://<project_ref>.supabase.co/rest/v1/customers' \ -H "apikey: <SUPABASE_SERVICE_ROLE_KEY>" \ -H "Authorization: Bearer <SUPABASE_SERVICE_ROLE_KEY>"تشکیل
بنیادی سیٹ اپ
connectors: supabase: enabled: true project_url: "https://xyzcompany.supabase.co" api_key: "${SUPABASE_SERVICE_ROLE_KEY}"
# Data sync options sync: users: true tables: - customers - orders - products storage: true realtime: true
# Map Supabase Auth users to contacts user_mapping: email: email phone: SMS user_metadata.full_name: FIRSTNAME created_at: SIGNUP_DATEفیلڈ میپنگ
Supabase ٹیبل کالمز کو engagement پلیٹ فارم خصوصیات پر میپ کریں:
طے شدہ صارف میپنگز
| Parameter | Type | Description |
|---|---|---|
email required | string | Supabase Auth سے صارف ای میل (منفرد شناخت کنندہ) |
phone optional | string | SMS/WhatsApp engagement کے لیے فون نمبر |
user_metadata.full_name optional | string | Auth صارف میٹا ڈیٹا سے ڈسپلے نام |
user_metadata.avatar_url optional | string | پروفائل تصویر URL |
created_at optional | timestamp | اکاؤنٹ بنانے کا ٹائم اسٹیمپ |
last_sign_in_at optional | timestamp | engagement اسکورنگ کے لیے حالیہ ترین لاگ ان |
app_metadata.provider optional | string | Auth فراہم کنندہ (email, google, github, وغیرہ) |
confirmed_at optional | timestamp | ای میل تصدیق ٹائم اسٹیمپ |
کسٹم ٹیبل میپنگ
table_mapping: customers: # Column → Attribute mapping email: email full_name: FIRSTNAME company: COMPANY plan: SUBSCRIPTION_PLAN mrr: MONTHLY_REVENUE created_at: SIGNUP_DATE
orders: # Track as events sync_as: events event_name: "order_placed" properties: total: amount status: order_status items: line_itemsAPI اینڈ پوائنٹس
Supabase REST API آپ کے ڈیٹا بیس اسکیما سے https://<ref>.supabase.co/rest/v1/ پر خودکار تیار ہوتی ہے۔
| اینڈ پوائنٹ | طریقہ | تفصیل |
|---|---|---|
/rest/v1/{table} | GET | فلٹرنگ، ترتیب، پیجینیشن کے ساتھ سطریں کوئری کریں |
/rest/v1/{table} | POST | سطریں شامل کریں (بلک اور upsert سپورٹ کرتا ہے) |
/rest/v1/{table} | PATCH | فلٹرز سے ملنے والی سطریں اپ ڈیٹ کریں |
/rest/v1/{table} | DELETE | فلٹرز سے ملنے والی سطریں حذف کریں |
/rest/v1/rpc/{function} | POST | Postgres فنکشن کال کریں |
/auth/v1/signup | POST | نیا صارف بنائیں |
/auth/v1/token?grant_type=password | POST | پاس ورڈ کے ساتھ سائن ان |
/auth/v1/user | GET | موجودہ صارف حاصل کریں |
/auth/v1/admin/users | GET | تمام صارفین کی فہرست (service_role) |
/storage/v1/object/{bucket}/{path} | POST | فائل اپ لوڈ کریں |
/storage/v1/object/list/{bucket} | POST | bucket میں فائلوں کی فہرست |
/functions/v1/{function_name} | POST | Edge Function invoke کریں |
فلٹرنگ آپریٹرز
| آپریٹر | تفصیل | مثال |
|---|---|---|
eq | برابر | ?status=eq.active |
neq | برابر نہیں | ?status=neq.deleted |
gt, gte | بڑا ہے | ?amount=gt.100 |
lt, lte | چھوٹا ہے | ?created_at=lt.2024-01-01 |
like, ilike | پیٹرن میچ | ?name=ilike.%john% |
in | array میں | ?status=in.(active,trial) |
is | Null چیک | ?deleted_at=is.null |
ایونٹس
Auth ایونٹس
| ایونٹ | ٹرگر | استعمال کا کیس |
|---|---|---|
user.signed_up | نیا صارف رجسٹریشن | ویلکم سیریز |
user.signed_in | صارف لاگ ان | سرگرمی ٹریکنگ |
user.updated | پروفائل تبدیلیاں | ڈیٹا سنک |
user.deleted | اکاؤنٹ حذف | کلین اپ ورک فلوز |
ڈیٹا بیس ایونٹس (Realtime)
| ایونٹ | ٹرگر | استعمال کا کیس |
|---|---|---|
INSERT | نئی سطر شامل | نیا آرڈر/گاہک نوٹیفکیشنز |
UPDATE | سطر میں ترمیم | اسٹیٹس تبدیلی ورک فلوز |
DELETE | سطر ہٹائی گئی | چرن کی نشاندہی |
Webhook ایونٹس
| ایونٹ | ٹرگر | استعمال کا کیس |
|---|---|---|
auth.user.created | webhook کے ذریعے صارف سائن اپ | آن بورڈنگ ٹرگر |
storage.object.created | فائل اپ لوڈ ہوئی | اثاثہ پروسیسنگ |
کوڈ کی مثالیں
کنیکٹر کو انیشیلائز کریں
import { TajoClient } from '@tajo/sdk';import { createClient } from '@supabase/supabase-js';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY,});
// Connect Supabase projectawait tajo.connectors.connect('supabase', { projectUrl: process.env.SUPABASE_URL, serviceRoleKey: process.env.SUPABASE_SERVICE_ROLE_KEY,});صارفین کو رابطوں میں سنک کریں
// Sync all Supabase Auth users as contactsawait tajo.connectors.sync('supabase', { type: 'full', resources: ['users'],});
// Incremental sync (new/changed users only)await tajo.connectors.sync('supabase', { type: 'incremental', resources: ['users'], since: '2024-01-01T00:00:00Z',});ریئل ٹائم تبدیلیاں سنیں
// Subscribe to new orders for engagement triggersconst supabase = createClient( process.env.SUPABASE_URL, process.env.SUPABASE_SERVICE_ROLE_KEY);
supabase .channel('orders') .on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'orders' }, async (payload) => { // Forward to Tajo as an event await tajo.events.track({ email: payload.new.customer_email, event: 'order_placed', properties: { order_id: payload.new.id, total: payload.new.total, items: payload.new.line_items, }, }); } ) .subscribe();کوئری اور سیگمنٹ
// Query customers by plan for targeted campaignsconst { data: proUsers } = await supabase .from('customers') .select('email, full_name, plan, mrr') .eq('plan', 'pro') .gt('mrr', 100) .order('mrr', { ascending: false });
// Sync to a Brevo list for campaign targetingawait tajo.lists.addContacts(PRO_LIST_ID, proUsers);شرح کی حدود
API شرح کی حدود
Supabase شرح کی حدود آپ کے پلان پر منحصر ہیں۔ Free tier: 500 درخواستیں/منٹ۔ Pro: 1,000 درخواستیں/سیکنڈ۔ Enterprise حدود کے لیے Supabase سے رابطہ کریں۔
| پلان | شرح کی حد | Realtime کنکشنز |
|---|---|---|
| Free | 500 req/min | 200 بیک وقتی |
| Pro | 1,000 req/s | 500 بیک وقتی |
| Team | 2,000 req/s | 1,000 بیک وقتی |
| Enterprise | کسٹم | کسٹم |
ٹربل شوٹنگ
عام مسائل
| مسئلہ | وجہ | حل |
|---|---|---|
| 401 Unauthorized | غلط یا میعاد ختم API key | Supabase Dashboard → Settings → API میں API keys چیک کریں |
| 403 Forbidden | RLS پالیسی رسائی روک رہی ہے | ایڈمن آپریشنز کے لیے service_role key استعمال کریں، یا RLS پالیسیاں چیک کریں |
| کوئی realtime ایونٹس نہیں | ٹیبل کے لیے Realtime فعال نہیں | Database → Replication میں فعال کریں → publication میں ٹیبل شامل کریں |
| خالی کوئری نتائج | RLS تمام سطروں کو فلٹر کر رہا ہے | تصدیق کریں کہ RLS پالیسیاں authenticated رول کو پڑھنے کی اجازت دیتی ہیں |
| اسٹوریج اپ لوڈ ناکام | Bucket پالیسیاں | چیک کریں کہ Storage bucket عوامی ہے یا اس کے پاس درست RLS پالیسیاں ہیں |
ڈیبگ موڈ
connectors: supabase: debug: true log_level: verbose log_queries: true log_realtime: trueکنکشن ٹیسٹ کریں
tajo connectors test supabase# ✓ API connection successful# ✓ Auth endpoint accessible# ✓ Tables readable (12 tables found)# ✓ Storage accessible (3 buckets)# ✓ Realtime connection established# ✓ Edge Functions available (4 functions)بہترین طرز عمل
- service_role key صرف سرور سائڈ استعمال کریں, اسے کبھی کلائنٹ کوڈ میں ظاہر نہ کریں
- تمام ٹیبلز پر RLS فعال کریں, service_role کے ساتھ بھی، defense in depth کے لیے RLS کے ساتھ ڈیزائن کریں
- ایونٹ پر مبنی سنک کے لیے Realtime استعمال کریں, تبدیلیوں کے لیے polling سے زیادہ موثر
- بیچ آپریشنز, اعلی حجم آپریشنز کے لیے بلک inserts اور
inفلٹر استعمال کریں - صارف میٹا ڈیٹا میپ کریں, سائن اپ کے دوران engagement سے متعلقہ فیلڈز کو
user_metadataمیں محفوظ کریں - webhooks کے لیے Edge Functions استعمال کریں, کم latency ہینڈلنگ کے لیے Supabase Edge Functions کے ساتھ آنے والے webhooks پروسیس کریں
سیکیورٹی
- API Key تصدیق, تمام درخواستوں کو درست API keys درکار ہیں
- Row Level Security (RLS), Postgres نیٹیو رسائی کنٹرول فی سطر
- JWT تصدیق, Auth ٹوکنز دستخط شدہ JWTs ہیں جو ہر درخواست پر تصدیق ہوتے ہیں
- SSL/TLS, تمام کنکشنز ٹرانزٹ میں انکرپٹڈ
- SOC 2 Type II, Supabase SOC 2 کمپلائنٹ ہے
- نیٹ ورک پابندیاں, paid پلانز پر اختیاری IP allowlisting