feat: migrate contact export (CSV, VCard, Google) from Express backend to Supabase Edge Function (#2812)#2849
Open
malek10xdev wants to merge 17 commits into
Open
feat: migrate contact export (CSV, VCard, Google) from Express backend to Supabase Edge Function (#2812)#2849malek10xdev wants to merge 17 commits into
malek10xdev wants to merge 17 commits into
Conversation
enrich_contacts RPC requires user_id in every contact record. The enrich function was sending enriched data without user_id, causing 'All records in p_contacts_data must contain user_id field' error. Also adds enrich function config to supabase/config.toml for Docker edge runtime registration.
Add a new POST /api/imap/boxes endpoint to the emails-fetcher that retrieves the IMAP folder tree for a given email. The endpoint: - Validates userId and email input - Fetches IMAP credentials from the mining source service - Opens an IMAP connection via ImapConnectionProvider - Uses ImapBoxesFetcher to build the IMAP folder tree - Properly handles connection cleanup in finally block
Replace the backend API call (/api/imap/boxes) with a direct Supabase edge function invocation (imap/boxes). Only requires email now, since the edge function resolves the user ID from the auth token.
Migrate the IMAP edge function from raw Deno.serve to Hono framework. Add POST /boxes endpoint that proxies IMAP folder listing requests to the emails-fetcher microservice. Refactor /detect to use Hono routing.
Remove the old backend IMAP controller, routes, and service for listing IMAP boxes. This functionality has been migrated to: - The supabase/functions/imap edge function (proxies to emails-fetcher) - The micro-services/emails-fetcher microservice (actual IMAP logic)
…ert) from backend
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Migrates contact export functionality (CSV, VCard, Google Contacts) from the Express backend to a new Supabase Edge Function.
Changes
supabase/functions/export-contacts/— Hono-based app with format strategies (factory pattern), Redis-backed Google API rate limiter, Repository-pattern DB client, i18n modal responsesbackend/src/services/export/— entire directory removedbackend/src/controllers/contacts.controller.tsand routes — export POST endpoint removedExportContacts.vue— now calls edge function via$saasEdgeFunctions, passesminingSourceId, handles ModalResponse (266/400/401/402) via GenericComplianceDialogsupabase/functions/_shared/rate-limiter.ts— Redis-backed TokenBucketRateLimiter for Google API quota managementResolves #2812