© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
SupabaseS
Supabase•3mo ago•
7 replies
Floppy Disk

Migrating query to edge functions because it takes too long on the front end

I have following function
export const massImportCrmProjectsWithConfigs = async ({
  importedCrmProjects,
  crmId,
}: MassImportCrmProjectsWithConfigsParams) => {
  const insertedCrmProjectsIds: Tables<'crm_project'>['id'][] = [];
  try {
    for (const crmProject of importedCrmProjects) {
      const importedCrmProjectRes = await supabase
        .from('crm_project')
        .insert({
          ...crmProject,
          crm_id: crmId,
        })
        .select()
        .maybeSingle()
        .throwOnError()
        .then((res) => res.data);
      if (!importedCrmProjectRes)
        throw new Error('Failed to insert CRM Project');
      insertedCrmProjectsIds.push(importedCrmProjectRes.id);
      for (const crmConfig of crmProject.crm_config) {
        await supabase
          .from('crm_config')
          .insert({
            ...crmConfig,
            crm_id: crmId,
            crm_project_id: importedCrmProjectRes.id,
          })
          .select()
          .maybeSingle()
          .throwOnError()
          .then((res) => res.data);
      }
    }
  } catch (err) {
    await supabase
      .from('crm_project')
      .delete()
      .in('id', insertedCrmProjectsIds)
      .throwOnError();
    throw err;
  }
};
export const massImportCrmProjectsWithConfigs = async ({
  importedCrmProjects,
  crmId,
}: MassImportCrmProjectsWithConfigsParams) => {
  const insertedCrmProjectsIds: Tables<'crm_project'>['id'][] = [];
  try {
    for (const crmProject of importedCrmProjects) {
      const importedCrmProjectRes = await supabase
        .from('crm_project')
        .insert({
          ...crmProject,
          crm_id: crmId,
        })
        .select()
        .maybeSingle()
        .throwOnError()
        .then((res) => res.data);
      if (!importedCrmProjectRes)
        throw new Error('Failed to insert CRM Project');
      insertedCrmProjectsIds.push(importedCrmProjectRes.id);
      for (const crmConfig of crmProject.crm_config) {
        await supabase
          .from('crm_config')
          .insert({
            ...crmConfig,
            crm_id: crmId,
            crm_project_id: importedCrmProjectRes.id,
          })
          .select()
          .maybeSingle()
          .throwOnError()
          .then((res) => res.data);
      }
    }
  } catch (err) {
    await supabase
      .from('crm_project')
      .delete()
      .in('id', insertedCrmProjectsIds)
      .throwOnError();
    throw err;
  }
};
Supabase banner
SupabaseJoin
Supabase gives you the tools, documentation, and community that makes managing databases, authentication, and backend infrastructure a lot less overwhelming.
45,816Members
Resources

Similar Threads

Was this page helpful?
Recent Announcements

Similar Threads

Edge functions taking too long
SupabaseSSupabase / help-and-questions
2mo ago
Trying to pause a project takes too long
SupabaseSSupabase / help-and-questions
4y ago
How to solve long latency with Edge Functions?
SupabaseSSupabase / help-and-questions
7mo ago
Edge Functions
SupabaseSSupabase / help-and-questions
4mo ago