Skip to Content
பிற கருவிகள் & அடாப்டர்கள்தரவுத்தள அடாப்டர்கள்சுபாபேஸ்

சுபாபேஸ் போஸ்ட்கிரெஸ் அடாப்டர்

tracelet_supabase தொகுப்பு உங்கள் பின்னணி இருப்பிடங்களை நேரடியாக Supabase Postgres உடன் ஒத்திசைக்க, ஒரு Postgres RPC செயல்பாடு அல்லது ஒரு Supabase Edge Function மூலம் ஒரு டிராப்-இன் அடாப்டரை வழங்குகிறது.

நிறுவல்

உங்கள் pubspec.yaml இல் அடாப்டரைச் சேர்க்கவும்:

flutter pub add tracelet_supabase

இந்த அடாப்டர் supabase_flutter ஐப் பயன்படுத்துகிறது. நீங்கள் Supabase கிளையண்டைப் பயன்படுத்துவதற்கு முன் துவக்க வேண்டும்.

இது எப்படி வேலை செய்கிறது

அடாப்டர் ட்ரேஸ்லெட்டின் பேட்டரி திறன் கொண்ட **நேட்டிவ் HTTP ஒத்திசைவு எஞ்சினுடன் இணைக்கிறது

நேட்டிவ் இன்ஜினில் ஒத்திசைவு இயங்குவதால், ஆப்ஸ் ஃபோர்ஸ்-கிட் இருக்கும்போதுஅதிவேக பேக்ஆஃப் மற்றும் ஆஃப்லைன் வரிசையுடன் தொகுப்புகள் பதிவேற்றப்படும். 401 இல், configureTokenRefresh ஆனது Supabase அமர்வை - முன்புறத்திலும், தலையில்லாத பின்னணியில் தனிமைப்படுத்தியும் - புதுப்பித்து மீண்டும் முயற்சிக்கிறது. நீங்கள்சரியாக ஒரு**இலக்கை வழங்குகிறீர்கள்: rpcFunctionஅல்லது edgeFunction.

அமைவு & கட்டமைப்பு

அட்டவணை மற்றும் உட்செலுத்துதல் செயல்பாட்டை உருவாக்கவும்

இருப்பிடங்களைப் பெற ஒரு அட்டவணையை உருவாக்கவும், RLS ஐ இயக்கவும் மற்றும் உள்வரும் தொகுப்பைச் செருகும் Postgres செயல்பாட்டைச் சேர்க்கவும். ட்ரேஸ்லெட் இருப்பிடப் பொருட்களின் தொகுப்பை இடுகையிடுகிறது, எனவே செயல்பாடு jsonb வரிசையை ஏற்றுக்கொள்கிறது:

-- Table CREATE TABLE public.locations ( id uuid DEFAULT gen_random_uuid() PRIMARY KEY, user_id uuid REFERENCES auth.users NOT NULL DEFAULT auth.uid(), latitude double precision NOT NULL, longitude double precision NOT NULL, accuracy double precision, speed double precision, timestamp timestamptz NOT NULL, is_moving boolean, created_at timestamptz DEFAULT now() ); ALTER TABLE public.locations ENABLE ROW LEVEL SECURITY; CREATE POLICY "Users insert their own locations" ON public.locations FOR INSERT WITH CHECK (auth.uid() = user_id); -- RPC function: receives the batch as a jsonb array and inserts each row. -- (The exact field names come from Tracelet's sync payload — see the -- Tracelet Sync docs for the payload schema.) CREATE OR REPLACE FUNCTION public.insert_tracelet_locations(payload jsonb) RETURNS void LANGUAGE sql SECURITY INVOKER AS $$ INSERT INTO public.locations (latitude, longitude, accuracy, speed, timestamp, is_moving) SELECT (e->'coords'->>'latitude')::double precision, (e->'coords'->>'longitude')::double precision, (e->'coords'->>'accuracy')::double precision, (e->'coords'->>'speed')::double precision, (e->>'timestamp')::timestamptz, (e->>'is_moving')::boolean FROM jsonb_array_elements(payload) AS e; $$;

மேலும் தனிப்பயன் செயலாக்கத்தை விரும்புகிறீர்களா (சரிபார்ப்பு, மின்விசிறி, செறிவூட்டல்)? அதற்குப் பதிலாக ஒரு Supabase Edge Function ஐ வரிசைப்படுத்தி அதன் பெயரை edgeFunction என அனுப்பவும் - அடாப்டர் தொகுதியை /functions/v1/<name> க்கு இடுகையிடும்.

சுபாபேஸைத் துவக்கவும்

உங்கள் main.dart இல் Supabase கிளையண்டைத் தொடங்கவும்:

import 'package:supabase_flutter/supabase_flutter.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Supabase.initialize( url: 'https://xyzcompany.supabase.co', anonKey: 'public-anon-key', ); runApp(const MyApp()); }

டோக்கன் புதுப்பிப்பை உள்ளமைக்கவும் & HTTP கட்டமைப்பை உருவாக்கவும்

configureTokenRefresh() ஐ ஒருமுறை அழைத்து, உங்கள் RPC (அல்லது எட்ஜ் செயல்பாடு) இலக்காக HttpConfig ஐ உருவாக்கி, அதை Tracelet.ready க்கு அனுப்பவும்:

import 'package:tracelet_supabase/tracelet_supabase.dart'; import 'package:tracelet/tracelet.dart'; const supabaseUrl = 'https://xyzcompany.supabase.co'; const supabaseAnonKey = 'public-anon-key'; // 1. Keep the Supabase session token fresh in the background (resolves 401s). await TraceletSupabase.configureTokenRefresh(anonKey: supabaseAnonKey); // 2. Build the native HTTP config. Provide EITHER rpcFunction OR edgeFunction. final httpConfig = TraceletSupabase.buildHttpConfig( supabaseUrl: supabaseUrl, anonKey: supabaseAnonKey, rpcFunction: 'insert_tracelet_locations', // ...or: edgeFunction: 'tracelet-ingest' // autoSync: true, batchSync: true, maxBatchSize: 250 are the defaults ); // 3. Start Tracelet with the adapter's HTTP config. await Tracelet.ready(Config( geo: const GeoConfig(distanceFilter: 50), http: httpConfig, )); await Tracelet.start();

தனிப்பயன் மெட்டாடேட்டாவை இணைக்கிறது

வணிகத் தரவுகளுடன் (எ.கா. driver_id அல்லது trip_id) ஒவ்வொரு இருப்பிடத்தையும் குறியிட, setRouteContext() ஐப் பயன்படுத்தவும் - இது SQLite வரிசையின் மூலம் ஒவ்வொரு இடத்திலும் பயணிக்கிறது மற்றும் உங்கள் செயல்பாடு பெறும் பேலோடில் சேர்க்கப்பட்டுள்ளது:

await Tracelet.setRouteContext(RouteContext( taskId: 'order_123', custom: {'trip_id': 'trip_456'}, ));

செயல்திறன்

ஒத்திசைவு ட்ரேஸ்லெட்டின் பேட்ச் இன்ஜின் மூலம் இயங்குகிறது, எனவே ஆஃப்லைன் புள்ளிகளின் பேக்லாக் ஒரு புள்ளிக்கு ஒரு கோரிக்கைக்கு பதிலாக தொகுதிகளில் (இயல்புநிலை maxBatchSize: 250) சுத்தப்படுத்தப்படுகிறது. உங்கள் RPC க்குள் Postgres இன் மொத்தச் செருகலுடன் இணைந்து, இது சாதனத்தின் பேட்டரி மற்றும் தரவுத்தள சுற்றுப் பயணங்கள் இரண்டிலும் அதிக அதிர்வெண் கண்காணிப்பை (எ.கா. ஒவ்வொரு 10 மீக்கும் ஒரு புள்ளி) வைத்திருக்கும்.