autopilot-core-sandbox 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -0
- package/dist/Provider.d.ts +21 -0
- package/dist/Provider.d.ts.map +1 -0
- package/dist/Provider.js +61 -0
- package/dist/Provider.js.map +1 -0
- package/dist/dist/Provider.d.ts +21 -0
- package/dist/dist/Provider.d.ts.map +1 -0
- package/dist/dist/Provider.js +61 -0
- package/dist/dist/Provider.js.map +1 -0
- package/dist/dist/index.d.ts +45 -0
- package/dist/dist/index.d.ts.map +1 -0
- package/dist/dist/index.js +61 -0
- package/dist/dist/index.js.map +1 -0
- package/dist/dist/interfaces/index.d.ts +1238 -0
- package/dist/dist/interfaces/index.d.ts.map +1 -0
- package/dist/dist/interfaces/index.js +3 -0
- package/dist/dist/interfaces/index.js.map +1 -0
- package/dist/dist/migrations/20260608222757_remote_schema.sql +5666 -0
- package/dist/dist/migrations/20260611174826_add_job_item_recurring_id_to_job_item.sql +7 -0
- package/dist/dist/migrations/20260625224612_add_dashboard_guided_tour_dismissed_to_settings_user.sql +5 -0
- package/dist/dist/migrations/20260627031433_support_chat_tables.sql +115 -0
- package/dist/dist/migrations/20260627031434_support_chat_rls.sql +37 -0
- package/dist/dist/migrations/20260704170209_add_estimate_scheduling.sql +121 -0
- package/dist/dist/migrations/20260704170210_add_estimate_scheduling_rls.sql +42 -0
- package/dist/dist/migrations/20260704235034_add_estimate_reminder_settings.sql +11 -0
- package/dist/dist/migrations/20260707003825_blocked_number_table.sql +32 -0
- package/dist/dist/migrations/20260707003826_blocked_number_rls.sql +22 -0
- package/dist/dist/migrations/20260709191055_sms_opt_out_table.sql +38 -0
- package/dist/dist/migrations/20260709191056_sms_opt_out_rls.sql +21 -0
- package/dist/dist/migrations/20260709214507_job_time_entry_table.sql +70 -0
- package/dist/dist/migrations/20260709214508_job_time_entry_rls.sql +21 -0
- package/dist/dist/migrations/20260711185956_phone_call_table.sql +99 -0
- package/dist/dist/migrations/20260711185957_phone_call_rls.sql +25 -0
- package/dist/dist/migrations/20260712014705_ai_voice_assistant_settings.sql +71 -0
- package/dist/dist/migrations/20260712014706_ai_voice_assistant_settings_rls.sql +14 -0
- package/dist/dist/migrations/20260712014707_ai_prompt_templates.sql +28 -0
- package/dist/dist/migrations/20260712014708_ai_prompt_templates_rls.sql +5 -0
- package/dist/dist/migrations/20260712014709_ai_prompt_templates_seed.sql +77 -0
- package/dist/dist/migrations/20260715011550_reminder_dispatch_table.sql +47 -0
- package/dist/dist/migrations/20260715011551_reminder_dispatch_rls.sql +22 -0
- package/dist/dist/migrations/20260715192923_dedup_sequence_contact_add_unique_constraint.sql +27 -0
- package/dist/dist/migrations/20260716194420_add_employee_location_tracking.sql +146 -0
- package/dist/dist/migrations/20260716194421_add_employee_location_tracking_rls.sql +154 -0
- package/dist/dist/migrations/20260716194422_get_client_map_last_completed_jobs.sql +28 -0
- package/dist/dist/migrations/20260717144535_add_blast_email_invalid_skipped_count.sql +2 -0
- package/dist/dist/migrations/20260717162900_create_blast_email_chunk.sql +36 -0
- package/dist/dist/migrations/20260717162901_add_blast_email_chunk_rls.sql +5 -0
- package/dist/dist/migrations/20260717162902_add_blast_email_chunk_progress_columns.sql +3 -0
- package/dist/dist/migrations/20260717162903_add_blast_email_bounce_tracking_columns.sql +4 -0
- package/dist/dist/migrations/20260717162904_create_email_hard_bounced.sql +23 -0
- package/dist/dist/migrations/20260717162905_add_email_hard_bounced_rls.sql +5 -0
- package/dist/dist/migrations/20260717164837_add_sequence_contact_sent_at.sql +19 -0
- package/dist/dist/migrations/20260717170920_add_sequence_contact_claim_index.sql +12 -0
- package/dist/dist/migrations/20260719215139_create_outbound_event.sql +59 -0
- package/dist/dist/migrations/20260719215140_create_outbound_event_rls.sql +16 -0
- package/dist/dist/migrations/20260719215141_create_webhook_delivery.sql +99 -0
- package/dist/dist/migrations/20260719215142_create_webhook_delivery_rls.sql +11 -0
- package/dist/dist/migrations/20260719215143_outbound_event_triggers.sql +219 -0
- package/dist/dist/migrations/20260719215144_create_api_key.sql +34 -0
- package/dist/dist/migrations/20260719215146_create_api_key_rls.sql +12 -0
- package/dist/dist/migrations/20260719215147_webhook_subscription_add_secret_active.sql +28 -0
- package/dist/dist/migrations/20260719215148_api_aggregate_create_functions.sql +479 -0
- package/dist/dist/migrations/20260721174837_webhook_subscription_generic_endpoints.sql +41 -0
- package/dist/dist/migrations/20260721185631_webhook_outbox_retention.sql +87 -0
- package/dist/dist/migrations/20260721190304_create_qb_sync_task.sql +120 -0
- package/dist/dist/migrations/20260721190306_qb_sync_task_rls.sql +8 -0
- package/dist/dist/migrations/20260721190307_qb_mapping_orphan_fks.sql +29 -0
- package/dist/dist/migrations/20260721190308_qb_task_retention.sql +90 -0
- package/dist/dist/migrations/20260721234401_create_permission_role.sql +83 -0
- package/dist/dist/migrations/20260721234402_permission_role_rls.sql +22 -0
- package/dist/dist/migrations/20260721234403_user_role_add_permission_role_id.sql +12 -0
- package/dist/dist/migrations/20260721234404_seed_permission_roles.sql +100 -0
- package/dist/dist/migrations/20260721234405_backfill_user_role_permission_role_id.sql +20 -0
- package/dist/dist/migrations/20260722193800_permission_role_add_manage_employees.sql +56 -0
- package/dist/dist/migrations/20260723025606_staging_new_employee_company_read_rls.sql +10 -0
- package/dist/dist/migrations/20260723134328_create_google_lsa_integration.sql +1016 -0
- package/dist/dist/migrations/20260723134329_google_lsa_integration_rls.sql +205 -0
- package/dist/dist/migrations/20260723150640_google_lsa_hardening.sql +169 -0
- package/dist/dist/migrations/20260723150641_google_lsa_hardening_rls.sql +12 -0
- package/dist/dist/migrations/20260724230721_google_lsa_facebook_exclusivity_attach.sql +104 -0
- package/dist/dist/migrations/20260724230722_google_lsa_facebook_exclusivity_attach_rls.sql +20 -0
- package/dist/dist/migrations/20260725172630_add_message_pagination_and_search.sql +265 -0
- package/dist/dist/migrations/20260725172631_add_message_pagination_and_search_rls.sql +72 -0
- package/dist/dist/migrations/20260725172632_optimize_message_thread_pagination_search.sql +245 -0
- package/dist/dist/migrations/20260725172633_harden_message_search_and_photo_pagination.sql +256 -0
- package/dist/dist/migrations/20260725172634_fix_message_thread_line_filter.sql +250 -0
- package/dist/dist/migrations/20260725174948_google_lsa_attach_bing_exclusivity_guard.sql +23 -0
- package/dist/dist/migrations/20260725200430_client_portal_settings.sql +41 -0
- package/dist/dist/migrations/20260725200431_client_portal_settings_rls.sql +21 -0
- package/dist/dist/migrations/20260725200433_client_portal_auth_tables.sql +81 -0
- package/dist/dist/migrations/20260725200434_client_portal_auth_rls.sql +18 -0
- package/dist/dist/migrations/20260725200435_portal_claim_login_attempt.sql +36 -0
- package/dist/dist/migrations/20260725200436_portal_appointment_request.sql +39 -0
- package/dist/dist/migrations/20260725200437_portal_appointment_request_rls.sql +10 -0
- package/dist/dist/migrations/20260725210000_google_reserve_integration.sql +85 -0
- package/dist/dist/migrations/20260725210001_google_reserve_integration_rls.sql +10 -0
- package/dist/dist/migrations/20260725220000_add_analytics_query_indexes.sql +47 -0
- package/dist/dist/migrations/20260725230000_onboarding_preload_data.sql +1074 -0
- package/dist/dist/migrations/20260725230001_onboarding_preload_data_rls.sql +40 -0
- package/dist/dist/migrations/20260725230002_add_pricebook_query_indexes.sql +13 -0
- package/dist/dist/migrations/20260726000000_facebook_ads_integration.sql +1538 -0
- package/dist/dist/migrations/20260726000001_facebook_ads_integration_rls.sql +356 -0
- package/dist/dist/migrations/20260726000002_facebook_ads_attach_lsa_exclusivity_guard.sql +25 -0
- package/dist/dist/migrations/20260726000003_facebook_ads_attach_bing_exclusivity_guard.sql +22 -0
- package/dist/dist/migrations/20260726010000_create_bing_ads_integration.sql +1112 -0
- package/dist/dist/migrations/20260726010001_bing_ads_integration_rls.sql +227 -0
- package/dist/dist/migrations/20260726220000_add_document_theme_settings.sql +11 -0
- package/dist/dist/migrations/20260726220001_update_document_theme_comments.sql +7 -0
- package/dist/dist/migrations/20260727210319_evolve_tier_for_pricing.sql +68 -0
- package/dist/dist/migrations/20260727210320_create_billing_addon.sql +85 -0
- package/dist/dist/migrations/20260727210321_create_billing_addon_rls.sql +21 -0
- package/dist/dist/migrations/20260728213930_create_usage_metering.sql +189 -0
- package/dist/dist/migrations/20260728213931_create_usage_metering_rls.sql +32 -0
- package/dist/dist/migrations/20260729004305_marketing_charge_txn_functions.sql +242 -0
- package/dist/dist/migrations/20260729004306_marketing_charge_txn_functions_rls.sql +37 -0
- package/dist/dist/migrations/20260729005524_update_deduct_from_balance_errcode.sql +42 -0
- package/dist/dist/migrations/20260730193601_fix_deduct_from_balance_lost_update.sql +46 -0
- package/dist/dist/migrations/20260730193602_add_blast_sms_chunk_reaper_columns.sql +27 -0
- package/dist/dist/migrations/20260731011415_create_google_calendar_connection.sql +84 -0
- package/dist/dist/migrations/20260731011416_google_calendar_connection_rls.sql +23 -0
- package/dist/dist/migrations/20260731011417_create_google_calendar_sync.sql +157 -0
- package/dist/dist/migrations/20260731011418_google_calendar_sync_rls.sql +26 -0
- package/dist/dist/migrations/20260731011419_event_outbound_triggers.sql +28 -0
- package/dist/dist/migrations/20260731011420_add_google_calendar_addon_key.sql +24 -0
- package/dist/dist/migrations/20260731011421_gcal_task_retention.sql +109 -0
- package/dist/dist/migrations/20260731234245_create_estimate_proposal.sql +157 -0
- package/dist/dist/migrations/20260731234247_estimate_proposal_rls.sql +46 -0
- package/dist/dist/migrations/20260731234248_add_proposal_estimate_settings.sql +17 -0
- package/dist/dist/migrations/20260731234249_add_estimate_proposals_addon_key.sql +25 -0
- package/dist/dist/migrations/20260731234250_approve_estimate_proposal_function.sql +133 -0
- package/dist/dist/migrations/20260801010609_save_estimate_proposal_function.sql +154 -0
- package/dist/dist/migrations/20260801173554_add_hide_autopilot_branding_setting.sql +6 -0
- package/dist/dist/migrations/20260806230917_add_client_billing_address_columns.sql +9 -0
- package/dist/dist/migrations/20260806230944_api_create_client_billing_address.sql +93 -0
- package/dist/dist/migrations/20260807014702_create_parent_id_company_id_keys.sql +20 -0
- package/dist/dist/migrations/20260807014703_create_contract_template.sql +30 -0
- package/dist/dist/migrations/20260807014704_create_contract.sql +233 -0
- package/dist/dist/migrations/20260807014705_create_contract_signature.sql +39 -0
- package/dist/dist/migrations/20260807014706_create_item_contract_requirement.sql +38 -0
- package/dist/dist/migrations/20260807014707_create_settings_contract.sql +23 -0
- package/dist/dist/migrations/20260807014708_contract_rls.sql +74 -0
- package/dist/dist/migrations/20260807014709_sign_contract_function.sql +92 -0
- package/dist/dist/migrations/20260807014710_create_settings_rental.sql +34 -0
- package/dist/dist/migrations/20260807014711_create_saved_location.sql +56 -0
- package/dist/dist/migrations/20260807014712_create_rental_task_option.sql +52 -0
- package/dist/dist/migrations/20260807014713_create_asset.sql +90 -0
- package/dist/dist/migrations/20260807014714_add_job_schedule_asset_fkeys.sql +39 -0
- package/dist/dist/migrations/20260807014715_rental_rls.sql +48 -0
- package/dist/dist/migrations/20260807014716_add_job_schedule_any_time.sql +7 -0
- package/dist/dist/migrations/20260807014717_add_job_schedule_target_location.sql +48 -0
- package/dist/dist/migrations/20260807014718_job_schedule_completion_guard.sql +53 -0
- package/dist/dist/migrations/20260807014719_add_job_schedule_list_sort_key.sql +7 -0
- package/dist/dist/migrations/20260807014720_add_item_duration.sql +11 -0
- package/dist/dist/migrations/20260807014721_add_settings_booking_enforce_rental_availability.sql +9 -0
- package/dist/dist/migrations/20260807014722_add_job_unsigned_rental_agreement.sql +10 -0
- package/dist/dist/migrations/20260807014723_add_item_size.sql +12 -0
- package/dist/dist/migrations/20260809193533_add_booking_path_button_labels.sql +11 -0
- package/dist/dist/migrations/20260809231721_add_route_distance_cache.sql +37 -0
- package/dist/dist/migrations/20260809231722_route_distance_cache_rls.sql +15 -0
- package/dist/dist/migrations/20260809231723_apply_rental_route_plan_function.sql +275 -0
- package/dist/dist/migrations/20260810171550_add_settings_job_default_job_types.sql +9 -0
- package/dist/dist/migrations/20260810212430_backfill_rental_task_option_sort_order.sql +61 -0
- package/dist/dist/migrations/20260811224317_add_settings_user_dnd_hint_dismissed.sql +9 -0
- package/dist/dist/migrations/20260813174503_repair_user_role_email_drift.sql +59 -0
- package/dist/dist/migrations/20260813174504_sync_user_role_email_trigger.sql +30 -0
- package/dist/dist/migrations/20260813175210_add_event_list_sort_key.sql +5 -0
- package/dist/dist/migrations/20260814172222_add_client_auto_bill_on_completion.sql +6 -0
- package/dist/dist/migrations/20260816160252_create_automation_rule.sql +99 -0
- package/dist/dist/migrations/20260816160253_automation_rule_rls.sql +19 -0
- package/dist/dist/migrations/20260816160254_create_settings_automation.sql +36 -0
- package/dist/dist/migrations/20260816160255_settings_automation_rls.sql +18 -0
- package/dist/dist/migrations/20260816160256_create_automation_event.sql +71 -0
- package/dist/dist/migrations/20260816160257_automation_event_rls.sql +12 -0
- package/dist/dist/migrations/20260816160258_create_automation_run.sql +129 -0
- package/dist/dist/migrations/20260816160259_automation_run_rls.sql +19 -0
- package/dist/dist/migrations/20260816160300_add_client_created_via.sql +25 -0
- package/dist/dist/migrations/20260816160301_add_estimate_sent_at.sql +39 -0
- package/dist/dist/migrations/20260816160302_add_message_automation_ref.sql +10 -0
- package/dist/dist/migrations/20260816160303_automation_event_triggers.sql +236 -0
- package/dist/dist/migrations/20260816160304_automation_retention.sql +142 -0
- package/dist/dist/migrations/20260816202404_add_automation_center_addon_key.sql +26 -0
- package/dist/dist/migrations/20260816225501_widen_automation_rule_trigger_action_checks.sql +25 -0
- package/dist/dist/migrations/20260816225502_widen_automation_event_type_check.sql +18 -0
- package/dist/dist/migrations/20260816225503_add_invoice_id_to_automation_tables.sql +18 -0
- package/dist/dist/migrations/20260816225504_add_job_rescheduled_capture_trigger.sql +51 -0
- package/dist/dist/migrations/20260816225505_add_lead_converted_capture_trigger.sql +26 -0
- package/dist/dist/migrations/20260816225506_fix_booking_request_import_guard.sql +27 -0
- package/dist/dist/migrations/20260816225507_widen_outbound_event_for_automation.sql +38 -0
- package/dist/dist/migrations/20260817002626_add_user_last_login_platform_columns.sql +14 -0
- package/dist/dist/migrations/20260817221703_create_deletion.sql +34 -0
- package/dist/dist/migrations/20260817221707_deletion_rls.sql +21 -0
- package/dist/dist/migrations/20260817221708_add_soft_delete_columns.sql +82 -0
- package/dist/dist/migrations/20260817221709_trash_functions.sql +434 -0
- package/dist/dist/migrations/20260817221710_outbound_event_soft_delete.sql +55 -0
- package/dist/dist/migrations/20260817221711_automation_soft_delete_events.sql +77 -0
- package/dist/dist/migrations/20260817221712_fix_estimate_address_cascade.sql +14 -0
- package/dist/dist/migrations/20260817232630_trash_batch_function.sql +67 -0
- package/dist/dist/migrations/20260819170204_create_email_spam_complaint.sql +23 -0
- package/dist/dist/migrations/20260819170205_add_email_spam_complaint_rls.sql +5 -0
- package/dist/dist/migrations/20260819170206_email_unsubscribed_upsert_constraints.sql +14 -0
- package/dist/dist/migrations/20260819180151_get_suppressed_emails_function.sql +23 -0
- package/dist/dist/migrations/20260819191143_is_deleted_backfill_guard.sql +29 -0
- package/dist/dist/migrations/20260819191144_trash_functions_no_dual_write.sql +319 -0
- package/dist/dist/migrations/20260819191145_client_map_jobs_deleted_at.sql +33 -0
- package/dist/dist/migrations/20260819191147_booking_declined_deleted_at.sql +28 -0
- package/dist/dist/migrations/20260819191148_onboarding_preload_no_address_is_deleted.sql +1019 -0
- package/dist/dist/migrations/20260820222756_add_settings_job_hide_task_timer.sql +2 -0
- package/dist/dist/migrations/20260824234151_add_blast_chunk_recipients.sql +13 -0
- package/dist/dist/migrations/20260824234152_add_blast_pause_cancel_columns.sql +10 -0
- package/dist/dist/migrations/20260825014725_get_job_ids_in_range.sql +42 -0
- package/dist/dist/migrations/20260825194452_add_failed_job_status.sql +15 -0
- package/dist/dist/migrations/20260825194457_remove_take_to_rental_task_options.sql +24 -0
- package/dist/dist/migrations/20260825194458_remove_take_to_job_schedules.sql +12 -0
- package/dist/dist/migrations/20260825194459_rework_apply_rental_route_plan_no_take_to.sql +168 -0
- package/dist/dist/migrations/20260825194500_drop_job_schedule_target_location.sql +24 -0
- package/dist/dist/migrations/20260825194501_add_job_schedule_size.sql +17 -0
- package/dist/dist/migrations/20260825233001_add_job_schedule_id_company_id_key.sql +11 -0
- package/dist/dist/migrations/20260825233002_create_route_plan.sql +52 -0
- package/dist/dist/migrations/20260825233003_create_route_plan_stop.sql +159 -0
- package/dist/dist/migrations/20260825233004_route_plan_rls.sql +32 -0
- package/dist/dist/migrations/20260825233005_apply_rental_route_plan_v2.sql +351 -0
- package/dist/dist/migrations/20260826150934_facebook_ads_lead_ingestion.sql +1711 -0
- package/dist/dist/migrations/20260826151141_facebook_ads_lead_ingestion_rls_v2.sql +43 -0
- package/dist/dist/migrations/20260826234722_facebook_messenger_ingestion.sql +703 -0
- package/dist/dist/migrations/20260826234723_facebook_messenger_ingestion_rls.sql +80 -0
- package/dist/dist/migrations/20260826234724_widen_automations_messenger.sql +46 -0
- package/dist/dist/migrations/20260827100001_add_route_plan_minutes.sql +10 -0
- package/dist/dist/migrations/20260827100002_add_route_plan_stop_leg_minutes.sql +9 -0
- package/dist/dist/migrations/20260827100003_apply_rental_route_plan_v3.sql +341 -0
- package/dist/dist/migrations/20260827230346_apply_rental_route_plan_v4.sql +366 -0
- package/dist/dist/migrations/20260829090911_create_fleet_schema.sql +3698 -0
- package/dist/dist/migrations/20260829090912_fleet_rls.sql +1011 -0
- package/dist/dist/migrations/20260831102212_add_online_booking_address_display.sql +8 -0
- package/dist/dist/providers/AddressProvider.d.ts +9 -0
- package/dist/dist/providers/AddressProvider.d.ts.map +1 -0
- package/dist/dist/providers/AddressProvider.js +207 -0
- package/dist/dist/providers/AddressProvider.js.map +1 -0
- package/dist/dist/providers/AutomationsProvider.d.ts +11 -0
- package/dist/dist/providers/AutomationsProvider.d.ts.map +1 -0
- package/dist/dist/providers/AutomationsProvider.js +170 -0
- package/dist/dist/providers/AutomationsProvider.js.map +1 -0
- package/dist/dist/providers/BlockedNumbersProvider.d.ts +13 -0
- package/dist/dist/providers/BlockedNumbersProvider.d.ts.map +1 -0
- package/dist/dist/providers/BlockedNumbersProvider.js +71 -0
- package/dist/dist/providers/BlockedNumbersProvider.js.map +1 -0
- package/dist/dist/providers/CategoryProvider.d.ts +8 -0
- package/dist/dist/providers/CategoryProvider.d.ts.map +1 -0
- package/dist/dist/providers/CategoryProvider.js +95 -0
- package/dist/dist/providers/CategoryProvider.js.map +1 -0
- package/dist/dist/providers/ClientProvider.d.ts +39 -0
- package/dist/dist/providers/ClientProvider.d.ts.map +1 -0
- package/dist/dist/providers/ClientProvider.js +253 -0
- package/dist/dist/providers/ClientProvider.js.map +1 -0
- package/dist/dist/providers/CompanyProvider.d.ts +7 -0
- package/dist/dist/providers/CompanyProvider.d.ts.map +1 -0
- package/dist/dist/providers/CompanyProvider.js +114 -0
- package/dist/dist/providers/CompanyProvider.js.map +1 -0
- package/dist/dist/providers/DashboardProvider.d.ts +78 -0
- package/dist/dist/providers/DashboardProvider.d.ts.map +1 -0
- package/dist/dist/providers/DashboardProvider.js +568 -0
- package/dist/dist/providers/DashboardProvider.js.map +1 -0
- package/dist/dist/providers/DiscountProvider.d.ts +8 -0
- package/dist/dist/providers/DiscountProvider.d.ts.map +1 -0
- package/dist/dist/providers/DiscountProvider.js +92 -0
- package/dist/dist/providers/DiscountProvider.js.map +1 -0
- package/dist/dist/providers/EmployeesProvider.d.ts +6 -0
- package/dist/dist/providers/EmployeesProvider.d.ts.map +1 -0
- package/dist/dist/providers/EmployeesProvider.js +185 -0
- package/dist/dist/providers/EmployeesProvider.js.map +1 -0
- package/dist/dist/providers/EstimatesProvider.d.ts +16 -0
- package/dist/dist/providers/EstimatesProvider.d.ts.map +1 -0
- package/dist/dist/providers/EstimatesProvider.js +251 -0
- package/dist/dist/providers/EstimatesProvider.js.map +1 -0
- package/dist/dist/providers/EventsProvider.d.ts +4 -0
- package/dist/dist/providers/EventsProvider.d.ts.map +1 -0
- package/dist/dist/providers/EventsProvider.js +24 -0
- package/dist/dist/providers/EventsProvider.js.map +1 -0
- package/dist/dist/providers/FilesProvider.d.ts +17 -0
- package/dist/dist/providers/FilesProvider.d.ts.map +1 -0
- package/dist/dist/providers/FilesProvider.js +201 -0
- package/dist/dist/providers/FilesProvider.js.map +1 -0
- package/dist/dist/providers/InvoicesProvider.d.ts +13 -0
- package/dist/dist/providers/InvoicesProvider.d.ts.map +1 -0
- package/dist/dist/providers/InvoicesProvider.js +207 -0
- package/dist/dist/providers/InvoicesProvider.js.map +1 -0
- package/dist/dist/providers/ItemProvider.d.ts +9 -0
- package/dist/dist/providers/ItemProvider.d.ts.map +1 -0
- package/dist/dist/providers/ItemProvider.js +201 -0
- package/dist/dist/providers/ItemProvider.js.map +1 -0
- package/dist/dist/providers/JobSourceProvider.d.ts +8 -0
- package/dist/dist/providers/JobSourceProvider.d.ts.map +1 -0
- package/dist/dist/providers/JobSourceProvider.js +75 -0
- package/dist/dist/providers/JobSourceProvider.js.map +1 -0
- package/dist/dist/providers/JobTypeProvider.d.ts +8 -0
- package/dist/dist/providers/JobTypeProvider.d.ts.map +1 -0
- package/dist/dist/providers/JobTypeProvider.js +75 -0
- package/dist/dist/providers/JobTypeProvider.js.map +1 -0
- package/dist/dist/providers/JobsProvider.d.ts +35 -0
- package/dist/dist/providers/JobsProvider.d.ts.map +1 -0
- package/dist/dist/providers/JobsProvider.js +863 -0
- package/dist/dist/providers/JobsProvider.js.map +1 -0
- package/dist/dist/providers/MessagesProvider.d.ts +33 -0
- package/dist/dist/providers/MessagesProvider.d.ts.map +1 -0
- package/dist/dist/providers/MessagesProvider.js +415 -0
- package/dist/dist/providers/MessagesProvider.js.map +1 -0
- package/dist/dist/providers/PaymentProvider.d.ts +9 -0
- package/dist/dist/providers/PaymentProvider.d.ts.map +1 -0
- package/dist/dist/providers/PaymentProvider.js +48 -0
- package/dist/dist/providers/PaymentProvider.js.map +1 -0
- package/dist/dist/providers/PermissionRolesProvider.d.ts +5 -0
- package/dist/dist/providers/PermissionRolesProvider.d.ts.map +1 -0
- package/dist/dist/providers/PermissionRolesProvider.js +30 -0
- package/dist/dist/providers/PermissionRolesProvider.js.map +1 -0
- package/dist/dist/providers/PhoneNumberProvider.d.ts +12 -0
- package/dist/dist/providers/PhoneNumberProvider.d.ts.map +1 -0
- package/dist/dist/providers/PhoneNumberProvider.js +184 -0
- package/dist/dist/providers/PhoneNumberProvider.js.map +1 -0
- package/dist/dist/providers/ProfileProvider.d.ts +6 -0
- package/dist/dist/providers/ProfileProvider.d.ts.map +1 -0
- package/dist/dist/providers/ProfileProvider.js +71 -0
- package/dist/dist/providers/ProfileProvider.js.map +1 -0
- package/dist/dist/providers/RentalsProvider.d.ts +28 -0
- package/dist/dist/providers/RentalsProvider.d.ts.map +1 -0
- package/dist/dist/providers/RentalsProvider.js +438 -0
- package/dist/dist/providers/RentalsProvider.js.map +1 -0
- package/dist/dist/providers/SettingsBookingProvider.d.ts +9 -0
- package/dist/dist/providers/SettingsBookingProvider.d.ts.map +1 -0
- package/dist/dist/providers/SettingsBookingProvider.js +163 -0
- package/dist/dist/providers/SettingsBookingProvider.js.map +1 -0
- package/dist/dist/providers/SettingsProvider.d.ts +8 -0
- package/dist/dist/providers/SettingsProvider.d.ts.map +1 -0
- package/dist/dist/providers/SettingsProvider.js +86 -0
- package/dist/dist/providers/SettingsProvider.js.map +1 -0
- package/dist/dist/providers/TagsProvider.d.ts +12 -0
- package/dist/dist/providers/TagsProvider.d.ts.map +1 -0
- package/dist/dist/providers/TagsProvider.js +210 -0
- package/dist/dist/providers/TagsProvider.js.map +1 -0
- package/dist/dist/providers/TimeCardProvider.d.ts +8 -0
- package/dist/dist/providers/TimeCardProvider.d.ts.map +1 -0
- package/dist/dist/providers/TimeCardProvider.js +93 -0
- package/dist/dist/providers/TimeCardProvider.js.map +1 -0
- package/dist/dist/providers/TrashProvider.d.ts +13 -0
- package/dist/dist/providers/TrashProvider.d.ts.map +1 -0
- package/dist/dist/providers/TrashProvider.js +98 -0
- package/dist/dist/providers/TrashProvider.js.map +1 -0
- package/dist/dist/providers/dashboardAnalytics.d.ts +9 -0
- package/dist/dist/providers/dashboardAnalytics.d.ts.map +1 -0
- package/dist/dist/providers/dashboardAnalytics.js +41 -0
- package/dist/dist/providers/dashboardAnalytics.js.map +1 -0
- package/dist/dist/providers/dashboardAnalytics.test.d.ts +2 -0
- package/dist/dist/providers/dashboardAnalytics.test.d.ts.map +1 -0
- package/dist/dist/providers/dashboardAnalytics.test.js +111 -0
- package/dist/dist/providers/dashboardAnalytics.test.js.map +1 -0
- package/dist/dist/server-safe/BlockedNumberFunctions.d.ts +11 -0
- package/dist/dist/server-safe/BlockedNumberFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/BlockedNumberFunctions.js +16 -0
- package/dist/dist/server-safe/BlockedNumberFunctions.js.map +1 -0
- package/dist/dist/server-safe/EmployeeFunctions.d.ts +14 -0
- package/dist/dist/server-safe/EmployeeFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/EmployeeFunctions.js +70 -0
- package/dist/dist/server-safe/EmployeeFunctions.js.map +1 -0
- package/dist/dist/server-safe/EmployeeLocationFunctions.d.ts +7 -0
- package/dist/dist/server-safe/EmployeeLocationFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/EmployeeLocationFunctions.js +47 -0
- package/dist/dist/server-safe/EmployeeLocationFunctions.js.map +1 -0
- package/dist/dist/server-safe/EstimateFunctions.d.ts +15 -0
- package/dist/dist/server-safe/EstimateFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/EstimateFunctions.js +34 -0
- package/dist/dist/server-safe/EstimateFunctions.js.map +1 -0
- package/dist/dist/server-safe/InvoiceFunctions.d.ts +21 -0
- package/dist/dist/server-safe/InvoiceFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/InvoiceFunctions.js +124 -0
- package/dist/dist/server-safe/InvoiceFunctions.js.map +1 -0
- package/dist/dist/server-safe/JobFunctions.d.ts +15 -0
- package/dist/dist/server-safe/JobFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/JobFunctions.js +56 -0
- package/dist/dist/server-safe/JobFunctions.js.map +1 -0
- package/dist/dist/server-safe/PaymentFunctions.d.ts +16 -0
- package/dist/dist/server-safe/PaymentFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/PaymentFunctions.js +80 -0
- package/dist/dist/server-safe/PaymentFunctions.js.map +1 -0
- package/dist/dist/server-safe/PermissionFunctions.d.ts +7 -0
- package/dist/dist/server-safe/PermissionFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/PermissionFunctions.js +39 -0
- package/dist/dist/server-safe/PermissionFunctions.js.map +1 -0
- package/dist/dist/server-safe/TagFunctions.d.ts +18 -0
- package/dist/dist/server-safe/TagFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/TagFunctions.js +52 -0
- package/dist/dist/server-safe/TagFunctions.js.map +1 -0
- package/dist/dist/server-safe/autoJobType.d.ts +16 -0
- package/dist/dist/server-safe/autoJobType.d.ts.map +1 -0
- package/dist/dist/server-safe/autoJobType.js +39 -0
- package/dist/dist/server-safe/autoJobType.js.map +1 -0
- package/dist/dist/server-safe/autoJobType.test.d.ts +2 -0
- package/dist/dist/server-safe/autoJobType.test.d.ts.map +1 -0
- package/dist/dist/server-safe/autoJobType.test.js +83 -0
- package/dist/dist/server-safe/autoJobType.test.js.map +1 -0
- package/dist/dist/server-safe/automations.d.ts +197 -0
- package/dist/dist/server-safe/automations.d.ts.map +1 -0
- package/dist/dist/server-safe/automations.js +757 -0
- package/dist/dist/server-safe/automations.js.map +1 -0
- package/dist/dist/server-safe/automations.test.d.ts +2 -0
- package/dist/dist/server-safe/automations.test.d.ts.map +1 -0
- package/dist/dist/server-safe/automations.test.js +441 -0
- package/dist/dist/server-safe/automations.test.js.map +1 -0
- package/dist/dist/server-safe/constants.d.ts +156 -0
- package/dist/dist/server-safe/constants.d.ts.map +1 -0
- package/dist/dist/server-safe/constants.js +186 -0
- package/dist/dist/server-safe/constants.js.map +1 -0
- package/dist/dist/server-safe/contracts.d.ts +3 -0
- package/dist/dist/server-safe/contracts.d.ts.map +1 -0
- package/dist/dist/server-safe/contracts.js +15 -0
- package/dist/dist/server-safe/contracts.js.map +1 -0
- package/dist/dist/server-safe/database.types.d.ts +9510 -0
- package/dist/dist/server-safe/database.types.d.ts.map +1 -0
- package/dist/dist/server-safe/database.types.js +40 -0
- package/dist/dist/server-safe/database.types.js.map +1 -0
- package/dist/dist/server-safe/entitlements.d.ts +99 -0
- package/dist/dist/server-safe/entitlements.d.ts.map +1 -0
- package/dist/dist/server-safe/entitlements.js +487 -0
- package/dist/dist/server-safe/entitlements.js.map +1 -0
- package/dist/dist/server-safe/facebookAdsLeads.d.ts +225 -0
- package/dist/dist/server-safe/facebookAdsLeads.d.ts.map +1 -0
- package/dist/dist/server-safe/facebookAdsLeads.js +376 -0
- package/dist/dist/server-safe/facebookAdsLeads.js.map +1 -0
- package/dist/dist/server-safe/facebookAdsLeads.test.d.ts +2 -0
- package/dist/dist/server-safe/facebookAdsLeads.test.d.ts.map +1 -0
- package/dist/dist/server-safe/facebookAdsLeads.test.js +189 -0
- package/dist/dist/server-safe/facebookAdsLeads.test.js.map +1 -0
- package/dist/dist/server-safe/facebookAdsLeadsSql.test.d.ts +2 -0
- package/dist/dist/server-safe/facebookAdsLeadsSql.test.d.ts.map +1 -0
- package/dist/dist/server-safe/facebookAdsLeadsSql.test.js +32 -0
- package/dist/dist/server-safe/facebookAdsLeadsSql.test.js.map +1 -0
- package/dist/dist/server-safe/facebookMessenger.d.ts +20 -0
- package/dist/dist/server-safe/facebookMessenger.d.ts.map +1 -0
- package/dist/dist/server-safe/facebookMessenger.js +63 -0
- package/dist/dist/server-safe/facebookMessenger.js.map +1 -0
- package/dist/dist/server-safe/facebookMessenger.test.d.ts +2 -0
- package/dist/dist/server-safe/facebookMessenger.test.d.ts.map +1 -0
- package/dist/dist/server-safe/facebookMessenger.test.js +51 -0
- package/dist/dist/server-safe/facebookMessenger.test.js.map +1 -0
- package/dist/dist/server-safe/helpers.d.ts +78 -0
- package/dist/dist/server-safe/helpers.d.ts.map +1 -0
- package/dist/dist/server-safe/helpers.js +569 -0
- package/dist/dist/server-safe/helpers.js.map +1 -0
- package/dist/dist/server-safe/index.d.ts +30 -0
- package/dist/dist/server-safe/index.d.ts.map +1 -0
- package/dist/dist/server-safe/index.js +46 -0
- package/dist/dist/server-safe/index.js.map +1 -0
- package/dist/dist/server-safe/permissions.d.ts +29 -0
- package/dist/dist/server-safe/permissions.d.ts.map +1 -0
- package/dist/dist/server-safe/permissions.js +180 -0
- package/dist/dist/server-safe/permissions.js.map +1 -0
- package/dist/dist/server-safe/proposals.d.ts +6 -0
- package/dist/dist/server-safe/proposals.d.ts.map +1 -0
- package/dist/dist/server-safe/proposals.js +58 -0
- package/dist/dist/server-safe/proposals.js.map +1 -0
- package/dist/dist/server-safe/rentalAvailability.d.ts +56 -0
- package/dist/dist/server-safe/rentalAvailability.d.ts.map +1 -0
- package/dist/dist/server-safe/rentalAvailability.js +124 -0
- package/dist/dist/server-safe/rentalAvailability.js.map +1 -0
- package/dist/dist/server-safe/rentalAvailability.test.d.ts +2 -0
- package/dist/dist/server-safe/rentalAvailability.test.d.ts.map +1 -0
- package/dist/dist/server-safe/rentalAvailability.test.js +290 -0
- package/dist/dist/server-safe/rentalAvailability.test.js.map +1 -0
- package/dist/dist/server-safe/rentals.d.ts +95 -0
- package/dist/dist/server-safe/rentals.d.ts.map +1 -0
- package/dist/dist/server-safe/rentals.js +432 -0
- package/dist/dist/server-safe/rentals.js.map +1 -0
- package/dist/dist/server-safe/rentals.test.d.ts +2 -0
- package/dist/dist/server-safe/rentals.test.d.ts.map +1 -0
- package/dist/dist/server-safe/rentals.test.js +1034 -0
- package/dist/dist/server-safe/rentals.test.js.map +1 -0
- package/dist/dist/server-safe/routeOptimization.d.ts +155 -0
- package/dist/dist/server-safe/routeOptimization.d.ts.map +1 -0
- package/dist/dist/server-safe/routeOptimization.js +120 -0
- package/dist/dist/server-safe/routeOptimization.js.map +1 -0
- package/dist/dist/server-safe/routeOptimization.test.d.ts +2 -0
- package/dist/dist/server-safe/routeOptimization.test.d.ts.map +1 -0
- package/dist/dist/server-safe/routeOptimization.test.js +234 -0
- package/dist/dist/server-safe/routeOptimization.test.js.map +1 -0
- package/dist/dist/server-safe/routePlanFingerprint.d.ts +13 -0
- package/dist/dist/server-safe/routePlanFingerprint.d.ts.map +1 -0
- package/dist/dist/server-safe/routePlanFingerprint.js +49 -0
- package/dist/dist/server-safe/routePlanFingerprint.js.map +1 -0
- package/dist/dist/server-safe/routePlanFingerprint.test.d.ts +2 -0
- package/dist/dist/server-safe/routePlanFingerprint.test.d.ts.map +1 -0
- package/dist/dist/server-safe/routePlanFingerprint.test.js +68 -0
- package/dist/dist/server-safe/routePlanFingerprint.test.js.map +1 -0
- package/dist/dist/server-safe/scheduleListOrder.d.ts +18 -0
- package/dist/dist/server-safe/scheduleListOrder.d.ts.map +1 -0
- package/dist/dist/server-safe/scheduleListOrder.js +92 -0
- package/dist/dist/server-safe/scheduleListOrder.js.map +1 -0
- package/dist/dist/server-safe/scheduleListOrder.test.d.ts +2 -0
- package/dist/dist/server-safe/scheduleListOrder.test.d.ts.map +1 -0
- package/dist/dist/server-safe/scheduleListOrder.test.js +260 -0
- package/dist/dist/server-safe/scheduleListOrder.test.js.map +1 -0
- package/dist/dist/server-safe/serviceMinutes.d.ts +13 -0
- package/dist/dist/server-safe/serviceMinutes.d.ts.map +1 -0
- package/dist/dist/server-safe/serviceMinutes.js +38 -0
- package/dist/dist/server-safe/serviceMinutes.js.map +1 -0
- package/dist/dist/server-safe/serviceMinutes.test.d.ts +2 -0
- package/dist/dist/server-safe/serviceMinutes.test.d.ts.map +1 -0
- package/dist/dist/server-safe/serviceMinutes.test.js +86 -0
- package/dist/dist/server-safe/serviceMinutes.test.js.map +1 -0
- package/dist/dist/server-safe/settingsSearch.d.ts +24 -0
- package/dist/dist/server-safe/settingsSearch.d.ts.map +1 -0
- package/dist/dist/server-safe/settingsSearch.js +8 -0
- package/dist/dist/server-safe/settingsSearch.js.map +1 -0
- package/dist/dist/server-safe/supportChat.d.ts +59 -0
- package/dist/dist/server-safe/supportChat.d.ts.map +1 -0
- package/dist/dist/server-safe/supportChat.js +56 -0
- package/dist/dist/server-safe/supportChat.js.map +1 -0
- package/dist/dist/server-safe/templates.d.ts +15 -0
- package/dist/dist/server-safe/templates.d.ts.map +1 -0
- package/dist/dist/server-safe/templates.js +91 -0
- package/dist/dist/server-safe/templates.js.map +1 -0
- package/dist/dist/server-safe/templates.test.d.ts +2 -0
- package/dist/dist/server-safe/templates.test.d.ts.map +1 -0
- package/dist/dist/server-safe/templates.test.js +62 -0
- package/dist/dist/server-safe/templates.test.js.map +1 -0
- package/dist/dist/server-safe/trash.d.ts +50 -0
- package/dist/dist/server-safe/trash.d.ts.map +1 -0
- package/dist/dist/server-safe/trash.js +100 -0
- package/dist/dist/server-safe/trash.js.map +1 -0
- package/dist/dist/utils/LogHandler.d.ts +3 -0
- package/dist/dist/utils/LogHandler.d.ts.map +1 -0
- package/dist/dist/utils/LogHandler.js +16 -0
- package/dist/dist/utils/LogHandler.js.map +1 -0
- package/dist/dist/utils/convertSupabaseImagesToAssets.d.ts +28 -0
- package/dist/dist/utils/convertSupabaseImagesToAssets.d.ts.map +1 -0
- package/dist/dist/utils/convertSupabaseImagesToAssets.js +14 -0
- package/dist/dist/utils/convertSupabaseImagesToAssets.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/index.d.ts +1238 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +3 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/providers/AddressProvider.d.ts +9 -0
- package/dist/providers/AddressProvider.d.ts.map +1 -0
- package/dist/providers/AddressProvider.js +207 -0
- package/dist/providers/AddressProvider.js.map +1 -0
- package/dist/providers/AutomationsProvider.d.ts +11 -0
- package/dist/providers/AutomationsProvider.d.ts.map +1 -0
- package/dist/providers/AutomationsProvider.js +170 -0
- package/dist/providers/AutomationsProvider.js.map +1 -0
- package/dist/providers/BlockedNumbersProvider.d.ts +7 -0
- package/dist/providers/BlockedNumbersProvider.d.ts.map +1 -0
- package/dist/providers/BlockedNumbersProvider.js +71 -0
- package/dist/providers/BlockedNumbersProvider.js.map +1 -0
- package/dist/providers/CategoryProvider.d.ts +8 -0
- package/dist/providers/CategoryProvider.d.ts.map +1 -0
- package/dist/providers/CategoryProvider.js +95 -0
- package/dist/providers/CategoryProvider.js.map +1 -0
- package/dist/providers/ClientProvider.d.ts +39 -0
- package/dist/providers/ClientProvider.d.ts.map +1 -0
- package/dist/providers/ClientProvider.js +253 -0
- package/dist/providers/ClientProvider.js.map +1 -0
- package/dist/providers/CompanyProvider.d.ts +7 -0
- package/dist/providers/CompanyProvider.d.ts.map +1 -0
- package/dist/providers/CompanyProvider.js +114 -0
- package/dist/providers/CompanyProvider.js.map +1 -0
- package/dist/providers/DashboardProvider.d.ts +78 -0
- package/dist/providers/DashboardProvider.d.ts.map +1 -0
- package/dist/providers/DashboardProvider.js +568 -0
- package/dist/providers/DashboardProvider.js.map +1 -0
- package/dist/providers/DiscountProvider.d.ts +8 -0
- package/dist/providers/DiscountProvider.d.ts.map +1 -0
- package/dist/providers/DiscountProvider.js +92 -0
- package/dist/providers/DiscountProvider.js.map +1 -0
- package/dist/providers/EmployeesProvider.d.ts +6 -0
- package/dist/providers/EmployeesProvider.d.ts.map +1 -0
- package/dist/providers/EmployeesProvider.js +185 -0
- package/dist/providers/EmployeesProvider.js.map +1 -0
- package/dist/providers/EstimatesProvider.d.ts +16 -0
- package/dist/providers/EstimatesProvider.d.ts.map +1 -0
- package/dist/providers/EstimatesProvider.js +251 -0
- package/dist/providers/EstimatesProvider.js.map +1 -0
- package/dist/providers/EventsProvider.d.ts +4 -0
- package/dist/providers/EventsProvider.d.ts.map +1 -0
- package/dist/providers/EventsProvider.js +24 -0
- package/dist/providers/EventsProvider.js.map +1 -0
- package/dist/providers/FilesProvider.d.ts +17 -0
- package/dist/providers/FilesProvider.d.ts.map +1 -0
- package/dist/providers/FilesProvider.js +201 -0
- package/dist/providers/FilesProvider.js.map +1 -0
- package/dist/providers/InvoicesProvider.d.ts +13 -0
- package/dist/providers/InvoicesProvider.d.ts.map +1 -0
- package/dist/providers/InvoicesProvider.js +207 -0
- package/dist/providers/InvoicesProvider.js.map +1 -0
- package/dist/providers/ItemProvider.d.ts +9 -0
- package/dist/providers/ItemProvider.d.ts.map +1 -0
- package/dist/providers/ItemProvider.js +201 -0
- package/dist/providers/ItemProvider.js.map +1 -0
- package/dist/providers/JobSourceProvider.d.ts +8 -0
- package/dist/providers/JobSourceProvider.d.ts.map +1 -0
- package/dist/providers/JobSourceProvider.js +75 -0
- package/dist/providers/JobSourceProvider.js.map +1 -0
- package/dist/providers/JobTypeProvider.d.ts +8 -0
- package/dist/providers/JobTypeProvider.d.ts.map +1 -0
- package/dist/providers/JobTypeProvider.js +75 -0
- package/dist/providers/JobTypeProvider.js.map +1 -0
- package/dist/providers/JobsProvider.d.ts +20 -0
- package/dist/providers/JobsProvider.d.ts.map +1 -0
- package/dist/providers/JobsProvider.js +863 -0
- package/dist/providers/JobsProvider.js.map +1 -0
- package/dist/providers/MessagesProvider.d.ts +14 -0
- package/dist/providers/MessagesProvider.d.ts.map +1 -0
- package/dist/providers/MessagesProvider.js +415 -0
- package/dist/providers/MessagesProvider.js.map +1 -0
- package/dist/providers/PaymentProvider.d.ts +9 -0
- package/dist/providers/PaymentProvider.d.ts.map +1 -0
- package/dist/providers/PaymentProvider.js +48 -0
- package/dist/providers/PaymentProvider.js.map +1 -0
- package/dist/providers/PermissionRolesProvider.d.ts +5 -0
- package/dist/providers/PermissionRolesProvider.d.ts.map +1 -0
- package/dist/providers/PermissionRolesProvider.js +30 -0
- package/dist/providers/PermissionRolesProvider.js.map +1 -0
- package/dist/providers/PhoneNumberProvider.d.ts +12 -0
- package/dist/providers/PhoneNumberProvider.d.ts.map +1 -0
- package/dist/providers/PhoneNumberProvider.js +184 -0
- package/dist/providers/PhoneNumberProvider.js.map +1 -0
- package/dist/providers/ProfileProvider.d.ts +6 -0
- package/dist/providers/ProfileProvider.d.ts.map +1 -0
- package/dist/providers/ProfileProvider.js +71 -0
- package/dist/providers/ProfileProvider.js.map +1 -0
- package/dist/providers/RentalsProvider.d.ts +28 -0
- package/dist/providers/RentalsProvider.d.ts.map +1 -0
- package/dist/providers/RentalsProvider.js +438 -0
- package/dist/providers/RentalsProvider.js.map +1 -0
- package/dist/providers/SettingsBookingProvider.d.ts +9 -0
- package/dist/providers/SettingsBookingProvider.d.ts.map +1 -0
- package/dist/providers/SettingsBookingProvider.js +163 -0
- package/dist/providers/SettingsBookingProvider.js.map +1 -0
- package/dist/providers/SettingsProvider.d.ts +8 -0
- package/dist/providers/SettingsProvider.d.ts.map +1 -0
- package/dist/providers/SettingsProvider.js +86 -0
- package/dist/providers/SettingsProvider.js.map +1 -0
- package/dist/providers/TagsProvider.d.ts +12 -0
- package/dist/providers/TagsProvider.d.ts.map +1 -0
- package/dist/providers/TagsProvider.js +210 -0
- package/dist/providers/TagsProvider.js.map +1 -0
- package/dist/providers/TimeCardProvider.d.ts +8 -0
- package/dist/providers/TimeCardProvider.d.ts.map +1 -0
- package/dist/providers/TimeCardProvider.js +93 -0
- package/dist/providers/TimeCardProvider.js.map +1 -0
- package/dist/providers/TrashProvider.d.ts +13 -0
- package/dist/providers/TrashProvider.d.ts.map +1 -0
- package/dist/providers/TrashProvider.js +98 -0
- package/dist/providers/TrashProvider.js.map +1 -0
- package/dist/providers/dashboardAnalytics.d.ts +9 -0
- package/dist/providers/dashboardAnalytics.d.ts.map +1 -0
- package/dist/providers/dashboardAnalytics.js +41 -0
- package/dist/providers/dashboardAnalytics.js.map +1 -0
- package/dist/providers/dashboardAnalytics.test.d.ts +2 -0
- package/dist/providers/dashboardAnalytics.test.d.ts.map +1 -0
- package/dist/providers/dashboardAnalytics.test.js +111 -0
- package/dist/providers/dashboardAnalytics.test.js.map +1 -0
- package/dist/server-safe/BlockedNumberFunctions.d.ts +11 -0
- package/dist/server-safe/BlockedNumberFunctions.d.ts.map +1 -0
- package/dist/server-safe/BlockedNumberFunctions.js +16 -0
- package/dist/server-safe/BlockedNumberFunctions.js.map +1 -0
- package/dist/server-safe/EmployeeFunctions.d.ts +14 -0
- package/dist/server-safe/EmployeeFunctions.d.ts.map +1 -0
- package/dist/server-safe/EmployeeFunctions.js +70 -0
- package/dist/server-safe/EmployeeFunctions.js.map +1 -0
- package/dist/server-safe/EmployeeLocationFunctions.d.ts +7 -0
- package/dist/server-safe/EmployeeLocationFunctions.d.ts.map +1 -0
- package/dist/server-safe/EmployeeLocationFunctions.js +47 -0
- package/dist/server-safe/EmployeeLocationFunctions.js.map +1 -0
- package/dist/server-safe/EstimateFunctions.d.ts +15 -0
- package/dist/server-safe/EstimateFunctions.d.ts.map +1 -0
- package/dist/server-safe/EstimateFunctions.js +34 -0
- package/dist/server-safe/EstimateFunctions.js.map +1 -0
- package/dist/server-safe/InvoiceFunctions.d.ts +21 -0
- package/dist/server-safe/InvoiceFunctions.d.ts.map +1 -0
- package/dist/server-safe/InvoiceFunctions.js +124 -0
- package/dist/server-safe/InvoiceFunctions.js.map +1 -0
- package/dist/server-safe/JobFunctions.d.ts +15 -0
- package/dist/server-safe/JobFunctions.d.ts.map +1 -0
- package/dist/server-safe/JobFunctions.js +56 -0
- package/dist/server-safe/JobFunctions.js.map +1 -0
- package/dist/server-safe/PaymentFunctions.d.ts +16 -0
- package/dist/server-safe/PaymentFunctions.d.ts.map +1 -0
- package/dist/server-safe/PaymentFunctions.js +80 -0
- package/dist/server-safe/PaymentFunctions.js.map +1 -0
- package/dist/server-safe/PermissionFunctions.d.ts +7 -0
- package/dist/server-safe/PermissionFunctions.d.ts.map +1 -0
- package/dist/server-safe/PermissionFunctions.js +39 -0
- package/dist/server-safe/PermissionFunctions.js.map +1 -0
- package/dist/server-safe/TagFunctions.d.ts +18 -0
- package/dist/server-safe/TagFunctions.d.ts.map +1 -0
- package/dist/server-safe/TagFunctions.js +52 -0
- package/dist/server-safe/TagFunctions.js.map +1 -0
- package/dist/server-safe/autoJobType.d.ts +16 -0
- package/dist/server-safe/autoJobType.d.ts.map +1 -0
- package/dist/server-safe/autoJobType.js +39 -0
- package/dist/server-safe/autoJobType.js.map +1 -0
- package/dist/server-safe/autoJobType.test.d.ts +2 -0
- package/dist/server-safe/autoJobType.test.d.ts.map +1 -0
- package/dist/server-safe/autoJobType.test.js +83 -0
- package/dist/server-safe/autoJobType.test.js.map +1 -0
- package/dist/server-safe/automations.d.ts +197 -0
- package/dist/server-safe/automations.d.ts.map +1 -0
- package/dist/server-safe/automations.js +757 -0
- package/dist/server-safe/automations.js.map +1 -0
- package/dist/server-safe/automations.test.d.ts +2 -0
- package/dist/server-safe/automations.test.d.ts.map +1 -0
- package/dist/server-safe/automations.test.js +441 -0
- package/dist/server-safe/automations.test.js.map +1 -0
- package/dist/server-safe/constants.d.ts +156 -0
- package/dist/server-safe/constants.d.ts.map +1 -0
- package/dist/server-safe/constants.js +186 -0
- package/dist/server-safe/constants.js.map +1 -0
- package/dist/server-safe/contracts.d.ts +3 -0
- package/dist/server-safe/contracts.d.ts.map +1 -0
- package/dist/server-safe/contracts.js +15 -0
- package/dist/server-safe/contracts.js.map +1 -0
- package/dist/server-safe/database.types.d.ts +9510 -0
- package/dist/server-safe/database.types.d.ts.map +1 -0
- package/dist/server-safe/database.types.js +40 -0
- package/dist/server-safe/database.types.js.map +1 -0
- package/dist/server-safe/entitlements.d.ts +99 -0
- package/dist/server-safe/entitlements.d.ts.map +1 -0
- package/dist/server-safe/entitlements.js +487 -0
- package/dist/server-safe/entitlements.js.map +1 -0
- package/dist/server-safe/helpers.d.ts +78 -0
- package/dist/server-safe/helpers.d.ts.map +1 -0
- package/dist/server-safe/helpers.js +569 -0
- package/dist/server-safe/helpers.js.map +1 -0
- package/dist/server-safe/index.d.ts +30 -0
- package/dist/server-safe/index.d.ts.map +1 -0
- package/dist/server-safe/index.js +46 -0
- package/dist/server-safe/index.js.map +1 -0
- package/dist/server-safe/permissions.d.ts +29 -0
- package/dist/server-safe/permissions.d.ts.map +1 -0
- package/dist/server-safe/permissions.js +180 -0
- package/dist/server-safe/permissions.js.map +1 -0
- package/dist/server-safe/proposals.d.ts +6 -0
- package/dist/server-safe/proposals.d.ts.map +1 -0
- package/dist/server-safe/proposals.js +58 -0
- package/dist/server-safe/proposals.js.map +1 -0
- package/dist/server-safe/rentalAvailability.d.ts +56 -0
- package/dist/server-safe/rentalAvailability.d.ts.map +1 -0
- package/dist/server-safe/rentalAvailability.js +124 -0
- package/dist/server-safe/rentalAvailability.js.map +1 -0
- package/dist/server-safe/rentalAvailability.test.d.ts +2 -0
- package/dist/server-safe/rentalAvailability.test.d.ts.map +1 -0
- package/dist/server-safe/rentalAvailability.test.js +290 -0
- package/dist/server-safe/rentalAvailability.test.js.map +1 -0
- package/dist/server-safe/rentals.d.ts +95 -0
- package/dist/server-safe/rentals.d.ts.map +1 -0
- package/dist/server-safe/rentals.js +432 -0
- package/dist/server-safe/rentals.js.map +1 -0
- package/dist/server-safe/rentals.test.d.ts +2 -0
- package/dist/server-safe/rentals.test.d.ts.map +1 -0
- package/dist/server-safe/rentals.test.js +1034 -0
- package/dist/server-safe/rentals.test.js.map +1 -0
- package/dist/server-safe/routeOptimization.d.ts +155 -0
- package/dist/server-safe/routeOptimization.d.ts.map +1 -0
- package/dist/server-safe/routeOptimization.js +120 -0
- package/dist/server-safe/routeOptimization.js.map +1 -0
- package/dist/server-safe/routeOptimization.test.d.ts +2 -0
- package/dist/server-safe/routeOptimization.test.d.ts.map +1 -0
- package/dist/server-safe/routeOptimization.test.js +234 -0
- package/dist/server-safe/routeOptimization.test.js.map +1 -0
- package/dist/server-safe/routePlanFingerprint.d.ts +13 -0
- package/dist/server-safe/routePlanFingerprint.d.ts.map +1 -0
- package/dist/server-safe/routePlanFingerprint.js +49 -0
- package/dist/server-safe/routePlanFingerprint.js.map +1 -0
- package/dist/server-safe/routePlanFingerprint.test.d.ts +2 -0
- package/dist/server-safe/routePlanFingerprint.test.d.ts.map +1 -0
- package/dist/server-safe/routePlanFingerprint.test.js +68 -0
- package/dist/server-safe/routePlanFingerprint.test.js.map +1 -0
- package/dist/server-safe/scheduleListOrder.d.ts +18 -0
- package/dist/server-safe/scheduleListOrder.d.ts.map +1 -0
- package/dist/server-safe/scheduleListOrder.js +92 -0
- package/dist/server-safe/scheduleListOrder.js.map +1 -0
- package/dist/server-safe/scheduleListOrder.test.d.ts +2 -0
- package/dist/server-safe/scheduleListOrder.test.d.ts.map +1 -0
- package/dist/server-safe/scheduleListOrder.test.js +260 -0
- package/dist/server-safe/scheduleListOrder.test.js.map +1 -0
- package/dist/server-safe/serviceMinutes.d.ts +13 -0
- package/dist/server-safe/serviceMinutes.d.ts.map +1 -0
- package/dist/server-safe/serviceMinutes.js +38 -0
- package/dist/server-safe/serviceMinutes.js.map +1 -0
- package/dist/server-safe/serviceMinutes.test.d.ts +2 -0
- package/dist/server-safe/serviceMinutes.test.d.ts.map +1 -0
- package/dist/server-safe/serviceMinutes.test.js +86 -0
- package/dist/server-safe/serviceMinutes.test.js.map +1 -0
- package/dist/server-safe/settingsSearch.d.ts +24 -0
- package/dist/server-safe/settingsSearch.d.ts.map +1 -0
- package/dist/server-safe/settingsSearch.js +8 -0
- package/dist/server-safe/settingsSearch.js.map +1 -0
- package/dist/server-safe/supportChat.d.ts +59 -0
- package/dist/server-safe/supportChat.d.ts.map +1 -0
- package/dist/server-safe/supportChat.js +56 -0
- package/dist/server-safe/supportChat.js.map +1 -0
- package/dist/server-safe/templates.d.ts +15 -0
- package/dist/server-safe/templates.d.ts.map +1 -0
- package/dist/server-safe/templates.js +91 -0
- package/dist/server-safe/templates.js.map +1 -0
- package/dist/server-safe/templates.test.d.ts +2 -0
- package/dist/server-safe/templates.test.d.ts.map +1 -0
- package/dist/server-safe/templates.test.js +62 -0
- package/dist/server-safe/templates.test.js.map +1 -0
- package/dist/server-safe/trash.d.ts +50 -0
- package/dist/server-safe/trash.d.ts.map +1 -0
- package/dist/server-safe/trash.js +100 -0
- package/dist/server-safe/trash.js.map +1 -0
- package/dist/utils/LogHandler.d.ts +3 -0
- package/dist/utils/LogHandler.d.ts.map +1 -0
- package/dist/utils/LogHandler.js +16 -0
- package/dist/utils/LogHandler.js.map +1 -0
- package/dist/utils/convertSupabaseImagesToAssets.d.ts +28 -0
- package/dist/utils/convertSupabaseImagesToAssets.d.ts.map +1 -0
- package/dist/utils/convertSupabaseImagesToAssets.js +14 -0
- package/dist/utils/convertSupabaseImagesToAssets.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
-- Atomic aggregate creates for the public API (/api/v1 in autopilot-web).
|
|
2
|
+
-- supabase-js has no transactions, so each multi-table create is one SQL
|
|
3
|
+
-- function: either the whole aggregate lands or nothing does — which also
|
|
4
|
+
-- means the outbox triggers (same transaction) emit zero events on failure
|
|
5
|
+
-- instead of a created/deleted pair.
|
|
6
|
+
--
|
|
7
|
+
-- These functions are deliberately dumb: shape validation lives in the web
|
|
8
|
+
-- service layer (zod); here we only insert, plus cross-tenant guards on
|
|
9
|
+
-- every referenced id (a payload must not be able to attach company A's
|
|
10
|
+
-- records to company B by smuggling foreign uuids). Number assignment
|
|
11
|
+
-- (job/invoice/estimate counters) happens in the existing BEFORE triggers.
|
|
12
|
+
--
|
|
13
|
+
-- security definer + service_role-only execute: called exclusively via
|
|
14
|
+
-- supabaseAdmin from autopilot-web, with company_id injected server-side
|
|
15
|
+
-- from the authenticated credential — never from the caller's payload.
|
|
16
|
+
|
|
17
|
+
-- ============================================================
|
|
18
|
+
-- helpers
|
|
19
|
+
-- ============================================================
|
|
20
|
+
|
|
21
|
+
-- raises unless the referenced row exists and belongs to the company;
|
|
22
|
+
-- soft no-op when p_id is null (optional references)
|
|
23
|
+
create or replace function "public"."api_assert_company_ref"(
|
|
24
|
+
"p_table" text,
|
|
25
|
+
"p_id" uuid,
|
|
26
|
+
"p_company_id" uuid
|
|
27
|
+
)
|
|
28
|
+
returns void
|
|
29
|
+
language "plpgsql"
|
|
30
|
+
security definer
|
|
31
|
+
set search_path = 'public'
|
|
32
|
+
as $$
|
|
33
|
+
declare
|
|
34
|
+
v_ok boolean;
|
|
35
|
+
begin
|
|
36
|
+
if p_id is null then
|
|
37
|
+
return;
|
|
38
|
+
end if;
|
|
39
|
+
-- p_table comes from the api_create_* bodies below, never caller input
|
|
40
|
+
execute format('select exists (select 1 from public.%I where id = $1 and company_id = $2)', p_table)
|
|
41
|
+
into v_ok using p_id, p_company_id;
|
|
42
|
+
if not v_ok then
|
|
43
|
+
raise exception '% % not found for company', p_table, p_id
|
|
44
|
+
using errcode = 'P0002';
|
|
45
|
+
end if;
|
|
46
|
+
end;
|
|
47
|
+
$$;
|
|
48
|
+
|
|
49
|
+
revoke all on function "public"."api_assert_company_ref"(text, uuid, uuid) from public;
|
|
50
|
+
revoke all on function "public"."api_assert_company_ref"(text, uuid, uuid) from "anon";
|
|
51
|
+
revoke all on function "public"."api_assert_company_ref"(text, uuid, uuid) from "authenticated";
|
|
52
|
+
grant execute on function "public"."api_assert_company_ref"(text, uuid, uuid) to "service_role";
|
|
53
|
+
|
|
54
|
+
-- assignments must go to current employees; former/hidden employees aren't
|
|
55
|
+
-- offered by /v1/users, so accepting their ids here would be incoherent
|
|
56
|
+
create or replace function "public"."api_assert_active_user"(
|
|
57
|
+
"p_id" uuid,
|
|
58
|
+
"p_company_id" uuid
|
|
59
|
+
)
|
|
60
|
+
returns void
|
|
61
|
+
language "plpgsql"
|
|
62
|
+
security definer
|
|
63
|
+
set search_path = 'public'
|
|
64
|
+
as $$
|
|
65
|
+
begin
|
|
66
|
+
if not exists (
|
|
67
|
+
select 1 from "user" u
|
|
68
|
+
where u.id = p_id
|
|
69
|
+
and u.company_id = p_company_id
|
|
70
|
+
and u.is_current_employee
|
|
71
|
+
) then
|
|
72
|
+
raise exception 'user % not found for company or not a current employee', p_id
|
|
73
|
+
using errcode = 'P0002';
|
|
74
|
+
end if;
|
|
75
|
+
end;
|
|
76
|
+
$$;
|
|
77
|
+
|
|
78
|
+
revoke all on function "public"."api_assert_active_user"(uuid, uuid) from public;
|
|
79
|
+
revoke all on function "public"."api_assert_active_user"(uuid, uuid) from "anon";
|
|
80
|
+
revoke all on function "public"."api_assert_active_user"(uuid, uuid) from "authenticated";
|
|
81
|
+
grant execute on function "public"."api_assert_active_user"(uuid, uuid) to "service_role";
|
|
82
|
+
|
|
83
|
+
-- resolves the company's default tax rate, mirroring the in-app create
|
|
84
|
+
-- paths (JobsProvider/InvoicesProvider fetch is_default when none is given)
|
|
85
|
+
create or replace function "public"."api_default_tax_rate_id"("p_company_id" uuid)
|
|
86
|
+
returns uuid
|
|
87
|
+
language "sql"
|
|
88
|
+
security definer
|
|
89
|
+
set search_path = 'public'
|
|
90
|
+
as $$
|
|
91
|
+
select id from tax_rate
|
|
92
|
+
where company_id = p_company_id and is_default and is_enabled
|
|
93
|
+
limit 1;
|
|
94
|
+
$$;
|
|
95
|
+
|
|
96
|
+
revoke all on function "public"."api_default_tax_rate_id"(uuid) from public;
|
|
97
|
+
revoke all on function "public"."api_default_tax_rate_id"(uuid) from "anon";
|
|
98
|
+
revoke all on function "public"."api_default_tax_rate_id"(uuid) from "authenticated";
|
|
99
|
+
grant execute on function "public"."api_default_tax_rate_id"(uuid) to "service_role";
|
|
100
|
+
|
|
101
|
+
-- ============================================================
|
|
102
|
+
-- api_create_client
|
|
103
|
+
-- p: { company_id, email?, first_name?, last_name?, client_company_name?,
|
|
104
|
+
-- client_notes?, client_or_lead?, primary_phone_number?, source_id?,
|
|
105
|
+
-- is_do_not_service?, is_do_not_sms?, is_do_not_marketing_sms?,
|
|
106
|
+
-- addresses?: [{ address, address2?, city, state, zip_code, is_primary?,
|
|
107
|
+
-- latitude?, longitude? }],
|
|
108
|
+
-- tag_ids?: [uuid] }
|
|
109
|
+
-- ============================================================
|
|
110
|
+
|
|
111
|
+
create or replace function "public"."api_create_client"("p" jsonb)
|
|
112
|
+
returns uuid
|
|
113
|
+
language "plpgsql"
|
|
114
|
+
security definer
|
|
115
|
+
set search_path = 'public'
|
|
116
|
+
as $$
|
|
117
|
+
declare
|
|
118
|
+
v_company_id uuid := (p ->> 'company_id')::uuid;
|
|
119
|
+
v_client_id uuid;
|
|
120
|
+
v_addresses jsonb := coalesce(p -> 'addresses', '[]'::jsonb);
|
|
121
|
+
v_primary_count integer;
|
|
122
|
+
a jsonb;
|
|
123
|
+
v_idx integer := 0;
|
|
124
|
+
v_tag_id uuid;
|
|
125
|
+
begin
|
|
126
|
+
perform api_assert_company_ref('job_source', (p ->> 'source_id')::uuid, v_company_id);
|
|
127
|
+
|
|
128
|
+
insert into client (
|
|
129
|
+
company_id, email, first_name, last_name, client_company_name,
|
|
130
|
+
client_notes, client_or_lead, primary_phone_number, source_id,
|
|
131
|
+
is_do_not_service, is_do_not_sms, is_do_not_marketing_sms
|
|
132
|
+
) values (
|
|
133
|
+
v_company_id,
|
|
134
|
+
p ->> 'email',
|
|
135
|
+
p ->> 'first_name',
|
|
136
|
+
p ->> 'last_name',
|
|
137
|
+
p ->> 'client_company_name',
|
|
138
|
+
p ->> 'client_notes',
|
|
139
|
+
coalesce((p ->> 'client_or_lead')::client_or_lead_enum, 'client'),
|
|
140
|
+
p ->> 'primary_phone_number',
|
|
141
|
+
(p ->> 'source_id')::uuid,
|
|
142
|
+
coalesce((p ->> 'is_do_not_service')::boolean, false),
|
|
143
|
+
coalesce((p ->> 'is_do_not_sms')::boolean, false),
|
|
144
|
+
coalesce((p ->> 'is_do_not_marketing_sms')::boolean, false)
|
|
145
|
+
) returning id into v_client_id;
|
|
146
|
+
|
|
147
|
+
-- exactly one primary address: error on several; when NONE is marked
|
|
148
|
+
-- true (absent or explicit false alike), the first becomes primary —
|
|
149
|
+
-- a client with addresses but no primary is an app-level anomaly
|
|
150
|
+
select count(*) into v_primary_count
|
|
151
|
+
from jsonb_array_elements(v_addresses) as t(addr)
|
|
152
|
+
where (addr ->> 'is_primary')::boolean;
|
|
153
|
+
if v_primary_count > 1 then
|
|
154
|
+
raise exception 'at most one address may be primary' using errcode = '23514';
|
|
155
|
+
end if;
|
|
156
|
+
|
|
157
|
+
for a in select * from jsonb_array_elements(v_addresses) loop
|
|
158
|
+
insert into address (
|
|
159
|
+
company_id, client_id, address, address2, city, state, zip_code,
|
|
160
|
+
is_primary, latitude, longitude
|
|
161
|
+
) values (
|
|
162
|
+
v_company_id,
|
|
163
|
+
v_client_id,
|
|
164
|
+
a ->> 'address',
|
|
165
|
+
a ->> 'address2',
|
|
166
|
+
a ->> 'city',
|
|
167
|
+
a ->> 'state',
|
|
168
|
+
a ->> 'zip_code',
|
|
169
|
+
coalesce((a ->> 'is_primary')::boolean, false)
|
|
170
|
+
or (v_primary_count = 0 and v_idx = 0),
|
|
171
|
+
(a ->> 'latitude')::double precision,
|
|
172
|
+
(a ->> 'longitude')::double precision
|
|
173
|
+
);
|
|
174
|
+
v_idx := v_idx + 1;
|
|
175
|
+
end loop;
|
|
176
|
+
|
|
177
|
+
for v_tag_id in select value::uuid from jsonb_array_elements_text(coalesce(p -> 'tag_ids', '[]'::jsonb)) loop
|
|
178
|
+
perform api_assert_company_ref('client_tag', v_tag_id, v_company_id);
|
|
179
|
+
insert into client_tag_link (company_id, client_id, client_tag_id)
|
|
180
|
+
values (v_company_id, v_client_id, v_tag_id);
|
|
181
|
+
end loop;
|
|
182
|
+
|
|
183
|
+
return v_client_id;
|
|
184
|
+
end;
|
|
185
|
+
$$;
|
|
186
|
+
|
|
187
|
+
-- ============================================================
|
|
188
|
+
-- api_create_job
|
|
189
|
+
-- p: { company_id, client_id, status?, start_date?, end_date?, notes?,
|
|
190
|
+
-- address_id?, job_source?, type?, tags?, tax_rate_id?, estimate_id?,
|
|
191
|
+
-- unpaid_upfront?,
|
|
192
|
+
-- items?: [{ item_name, item_price, item_cost?, quantity?, taxable?,
|
|
193
|
+
-- description?, payment_upfront? }],
|
|
194
|
+
-- schedules?: [{ start_time, end_time, status?, assignee_user_ids?: [uuid] }],
|
|
195
|
+
-- discounts?: [{ discount_name?, discount_amount, discount_type }] }
|
|
196
|
+
-- ============================================================
|
|
197
|
+
|
|
198
|
+
create or replace function "public"."api_create_job"("p" jsonb)
|
|
199
|
+
returns uuid
|
|
200
|
+
language "plpgsql"
|
|
201
|
+
security definer
|
|
202
|
+
set search_path = 'public'
|
|
203
|
+
as $$
|
|
204
|
+
declare
|
|
205
|
+
v_company_id uuid := (p ->> 'company_id')::uuid;
|
|
206
|
+
v_job_id uuid;
|
|
207
|
+
v_schedule_id uuid;
|
|
208
|
+
v_status job_status_enum := coalesce((p ->> 'status')::job_status_enum, 'Open');
|
|
209
|
+
it jsonb;
|
|
210
|
+
sc jsonb;
|
|
211
|
+
di jsonb;
|
|
212
|
+
v_user_id uuid;
|
|
213
|
+
begin
|
|
214
|
+
perform api_assert_company_ref('client', (p ->> 'client_id')::uuid, v_company_id);
|
|
215
|
+
perform api_assert_company_ref('address', (p ->> 'address_id')::uuid, v_company_id);
|
|
216
|
+
perform api_assert_company_ref('tax_rate', (p ->> 'tax_rate_id')::uuid, v_company_id);
|
|
217
|
+
perform api_assert_company_ref('estimate', (p ->> 'estimate_id')::uuid, v_company_id);
|
|
218
|
+
|
|
219
|
+
insert into job (
|
|
220
|
+
company_id, client_id, status, start_date, end_date, notes,
|
|
221
|
+
address_id, job_source, type, tags, tax_rate_id, estimate_id,
|
|
222
|
+
unpaid_upfront
|
|
223
|
+
) values (
|
|
224
|
+
v_company_id,
|
|
225
|
+
(p ->> 'client_id')::uuid,
|
|
226
|
+
v_status,
|
|
227
|
+
(p ->> 'start_date')::timestamptz,
|
|
228
|
+
(p ->> 'end_date')::timestamptz,
|
|
229
|
+
p ->> 'notes',
|
|
230
|
+
(p ->> 'address_id')::uuid,
|
|
231
|
+
coalesce(p ->> 'job_source', ''),
|
|
232
|
+
-- deliberately NOT the column default ('Junk Removal'): job types
|
|
233
|
+
-- are per-company (job_type table), so inventing one that may not
|
|
234
|
+
-- exist in the company's picker is worse than null
|
|
235
|
+
p ->> 'type',
|
|
236
|
+
p ->> 'tags',
|
|
237
|
+
-- absent tax_rate_id falls back to the company default, matching
|
|
238
|
+
-- the in-app createJob path
|
|
239
|
+
coalesce((p ->> 'tax_rate_id')::uuid, api_default_tax_rate_id(v_company_id)),
|
|
240
|
+
(p ->> 'estimate_id')::uuid,
|
|
241
|
+
(p ->> 'unpaid_upfront')::boolean
|
|
242
|
+
) returning id into v_job_id;
|
|
243
|
+
|
|
244
|
+
for it in select * from jsonb_array_elements(coalesce(p -> 'items', '[]'::jsonb)) loop
|
|
245
|
+
insert into job_item (
|
|
246
|
+
company_id, job_id, item_name, item_price, item_cost, quantity,
|
|
247
|
+
taxable, description, payment_upfront
|
|
248
|
+
) values (
|
|
249
|
+
v_company_id,
|
|
250
|
+
v_job_id,
|
|
251
|
+
it ->> 'item_name',
|
|
252
|
+
(it ->> 'item_price')::numeric,
|
|
253
|
+
coalesce((it ->> 'item_cost')::numeric, 0),
|
|
254
|
+
coalesce((it ->> 'quantity')::numeric, 1),
|
|
255
|
+
coalesce((it ->> 'taxable')::boolean, true),
|
|
256
|
+
it ->> 'description',
|
|
257
|
+
(it ->> 'payment_upfront')::boolean
|
|
258
|
+
);
|
|
259
|
+
end loop;
|
|
260
|
+
|
|
261
|
+
for sc in select * from jsonb_array_elements(coalesce(p -> 'schedules', '[]'::jsonb)) loop
|
|
262
|
+
insert into job_schedule (company_id, job_id, start_time, end_time, status)
|
|
263
|
+
values (
|
|
264
|
+
v_company_id,
|
|
265
|
+
v_job_id,
|
|
266
|
+
(sc ->> 'start_time')::timestamptz,
|
|
267
|
+
(sc ->> 'end_time')::timestamptz,
|
|
268
|
+
coalesce((sc ->> 'status')::job_status_enum, v_status)
|
|
269
|
+
) returning id into v_schedule_id;
|
|
270
|
+
|
|
271
|
+
for v_user_id in select value::uuid from jsonb_array_elements_text(coalesce(sc -> 'assignee_user_ids', '[]'::jsonb)) loop
|
|
272
|
+
perform api_assert_active_user(v_user_id, v_company_id);
|
|
273
|
+
insert into job_user (company_id, job_id, job_schedule_id, user_id)
|
|
274
|
+
values (v_company_id, v_job_id, v_schedule_id, v_user_id);
|
|
275
|
+
end loop;
|
|
276
|
+
end loop;
|
|
277
|
+
|
|
278
|
+
for di in select * from jsonb_array_elements(coalesce(p -> 'discounts', '[]'::jsonb)) loop
|
|
279
|
+
insert into job_discount (company_id, job_id, discount_name, discount_amount, discount_type)
|
|
280
|
+
values (
|
|
281
|
+
v_company_id,
|
|
282
|
+
v_job_id,
|
|
283
|
+
coalesce(di ->> 'discount_name', ''),
|
|
284
|
+
(di ->> 'discount_amount')::double precision,
|
|
285
|
+
(di ->> 'discount_type')::discount_type_enum
|
|
286
|
+
);
|
|
287
|
+
end loop;
|
|
288
|
+
|
|
289
|
+
return v_job_id;
|
|
290
|
+
end;
|
|
291
|
+
$$;
|
|
292
|
+
|
|
293
|
+
-- ============================================================
|
|
294
|
+
-- api_create_invoice
|
|
295
|
+
-- p: { company_id, client_id, status?, job_id?, address_id?, due_date?,
|
|
296
|
+
-- start_date?, end_date?, notes?, tax_rate_id?,
|
|
297
|
+
-- items?: [...same shape as job items...],
|
|
298
|
+
-- discounts?: [...same shape as job discounts...] }
|
|
299
|
+
-- Items/discounts are attached to the invoice only (invoice_id set, job_id
|
|
300
|
+
-- null) — linking a job's existing items onto an invoice is an update-path
|
|
301
|
+
-- concern, not a create-path one.
|
|
302
|
+
-- ============================================================
|
|
303
|
+
|
|
304
|
+
create or replace function "public"."api_create_invoice"("p" jsonb)
|
|
305
|
+
returns uuid
|
|
306
|
+
language "plpgsql"
|
|
307
|
+
security definer
|
|
308
|
+
set search_path = 'public'
|
|
309
|
+
as $$
|
|
310
|
+
declare
|
|
311
|
+
v_company_id uuid := (p ->> 'company_id')::uuid;
|
|
312
|
+
v_invoice_id uuid;
|
|
313
|
+
it jsonb;
|
|
314
|
+
di jsonb;
|
|
315
|
+
begin
|
|
316
|
+
perform api_assert_company_ref('client', (p ->> 'client_id')::uuid, v_company_id);
|
|
317
|
+
perform api_assert_company_ref('job', (p ->> 'job_id')::uuid, v_company_id);
|
|
318
|
+
perform api_assert_company_ref('address', (p ->> 'address_id')::uuid, v_company_id);
|
|
319
|
+
perform api_assert_company_ref('tax_rate', (p ->> 'tax_rate_id')::uuid, v_company_id);
|
|
320
|
+
|
|
321
|
+
insert into invoice (
|
|
322
|
+
company_id, client_id, status, job_id, address_id, due_date,
|
|
323
|
+
start_date, end_date, notes, tax_rate_id
|
|
324
|
+
) values (
|
|
325
|
+
v_company_id,
|
|
326
|
+
(p ->> 'client_id')::uuid,
|
|
327
|
+
coalesce((p ->> 'status')::invoice_status_enum, 'Unsent'),
|
|
328
|
+
(p ->> 'job_id')::uuid,
|
|
329
|
+
(p ->> 'address_id')::uuid,
|
|
330
|
+
coalesce((p ->> 'due_date')::timestamptz, now()),
|
|
331
|
+
(p ->> 'start_date')::timestamptz,
|
|
332
|
+
(p ->> 'end_date')::timestamptz,
|
|
333
|
+
coalesce(p ->> 'notes', ''),
|
|
334
|
+
-- standalone invoices fall back to the company default tax rate,
|
|
335
|
+
-- matching in-app createInvoice; job-linked invoices take exactly
|
|
336
|
+
-- what was passed (the app copies the job's rate in that path)
|
|
337
|
+
case
|
|
338
|
+
when (p ->> 'job_id') is null
|
|
339
|
+
then coalesce((p ->> 'tax_rate_id')::uuid, api_default_tax_rate_id(v_company_id))
|
|
340
|
+
else (p ->> 'tax_rate_id')::uuid
|
|
341
|
+
end
|
|
342
|
+
) returning id into v_invoice_id;
|
|
343
|
+
|
|
344
|
+
for it in select * from jsonb_array_elements(coalesce(p -> 'items', '[]'::jsonb)) loop
|
|
345
|
+
insert into job_item (
|
|
346
|
+
company_id, invoice_id, item_name, item_price, item_cost,
|
|
347
|
+
quantity, taxable, description, payment_upfront
|
|
348
|
+
) values (
|
|
349
|
+
v_company_id,
|
|
350
|
+
v_invoice_id,
|
|
351
|
+
it ->> 'item_name',
|
|
352
|
+
(it ->> 'item_price')::numeric,
|
|
353
|
+
coalesce((it ->> 'item_cost')::numeric, 0),
|
|
354
|
+
coalesce((it ->> 'quantity')::numeric, 1),
|
|
355
|
+
coalesce((it ->> 'taxable')::boolean, true),
|
|
356
|
+
it ->> 'description',
|
|
357
|
+
(it ->> 'payment_upfront')::boolean
|
|
358
|
+
);
|
|
359
|
+
end loop;
|
|
360
|
+
|
|
361
|
+
for di in select * from jsonb_array_elements(coalesce(p -> 'discounts', '[]'::jsonb)) loop
|
|
362
|
+
insert into job_discount (company_id, invoice_id, discount_name, discount_amount, discount_type)
|
|
363
|
+
values (
|
|
364
|
+
v_company_id,
|
|
365
|
+
v_invoice_id,
|
|
366
|
+
coalesce(di ->> 'discount_name', ''),
|
|
367
|
+
(di ->> 'discount_amount')::double precision,
|
|
368
|
+
(di ->> 'discount_type')::discount_type_enum
|
|
369
|
+
);
|
|
370
|
+
end loop;
|
|
371
|
+
|
|
372
|
+
return v_invoice_id;
|
|
373
|
+
end;
|
|
374
|
+
$$;
|
|
375
|
+
|
|
376
|
+
-- ============================================================
|
|
377
|
+
-- api_create_estimate
|
|
378
|
+
-- p: { company_id, client_id, status?, notes?, address_id?, tax_rate_id?,
|
|
379
|
+
-- show_on_schedule?, schedule_start?, schedule_end?, schedule_status?,
|
|
380
|
+
-- items?: [{ item_name, item_price, item_cost?, quantity?, taxable?,
|
|
381
|
+
-- description?, payment_upfront? }],
|
|
382
|
+
-- discounts?: [{ discount_name?, discount_amount, discount_type }],
|
|
383
|
+
-- assignee_user_ids?: [uuid] }
|
|
384
|
+
-- ============================================================
|
|
385
|
+
|
|
386
|
+
create or replace function "public"."api_create_estimate"("p" jsonb)
|
|
387
|
+
returns uuid
|
|
388
|
+
language "plpgsql"
|
|
389
|
+
security definer
|
|
390
|
+
set search_path = 'public'
|
|
391
|
+
as $$
|
|
392
|
+
declare
|
|
393
|
+
v_company_id uuid := (p ->> 'company_id')::uuid;
|
|
394
|
+
v_estimate_id uuid;
|
|
395
|
+
it jsonb;
|
|
396
|
+
di jsonb;
|
|
397
|
+
v_user_id uuid;
|
|
398
|
+
begin
|
|
399
|
+
perform api_assert_company_ref('client', (p ->> 'client_id')::uuid, v_company_id);
|
|
400
|
+
perform api_assert_company_ref('address', (p ->> 'address_id')::uuid, v_company_id);
|
|
401
|
+
perform api_assert_company_ref('tax_rate', (p ->> 'tax_rate_id')::uuid, v_company_id);
|
|
402
|
+
|
|
403
|
+
insert into estimate (
|
|
404
|
+
company_id, client_id, status, notes, address_id, tax_rate_id,
|
|
405
|
+
show_on_schedule, schedule_start, schedule_end, schedule_status
|
|
406
|
+
) values (
|
|
407
|
+
v_company_id,
|
|
408
|
+
(p ->> 'client_id')::uuid,
|
|
409
|
+
coalesce((p ->> 'status')::estimate_status_enum, 'Unsent'),
|
|
410
|
+
p ->> 'notes',
|
|
411
|
+
(p ->> 'address_id')::uuid,
|
|
412
|
+
(p ->> 'tax_rate_id')::uuid,
|
|
413
|
+
coalesce((p ->> 'show_on_schedule')::boolean, false),
|
|
414
|
+
(p ->> 'schedule_start')::timestamptz,
|
|
415
|
+
(p ->> 'schedule_end')::timestamptz,
|
|
416
|
+
(p ->> 'schedule_status')::job_status_enum
|
|
417
|
+
) returning id into v_estimate_id;
|
|
418
|
+
|
|
419
|
+
for it in select * from jsonb_array_elements(coalesce(p -> 'items', '[]'::jsonb)) loop
|
|
420
|
+
insert into estimate_item (
|
|
421
|
+
company_id, estimate_id, item_name, item_price, item_cost,
|
|
422
|
+
quantity, taxable, description, payment_upfront
|
|
423
|
+
) values (
|
|
424
|
+
v_company_id,
|
|
425
|
+
v_estimate_id,
|
|
426
|
+
it ->> 'item_name',
|
|
427
|
+
(it ->> 'item_price')::numeric,
|
|
428
|
+
coalesce((it ->> 'item_cost')::numeric, 0),
|
|
429
|
+
coalesce((it ->> 'quantity')::numeric, 1),
|
|
430
|
+
coalesce((it ->> 'taxable')::boolean, true),
|
|
431
|
+
it ->> 'description',
|
|
432
|
+
(it ->> 'payment_upfront')::boolean
|
|
433
|
+
);
|
|
434
|
+
end loop;
|
|
435
|
+
|
|
436
|
+
for di in select * from jsonb_array_elements(coalesce(p -> 'discounts', '[]'::jsonb)) loop
|
|
437
|
+
insert into estimate_discount (company_id, estimate_id, discount_name, discount_amount, discount_type)
|
|
438
|
+
values (
|
|
439
|
+
v_company_id,
|
|
440
|
+
v_estimate_id,
|
|
441
|
+
coalesce(di ->> 'discount_name', ''),
|
|
442
|
+
(di ->> 'discount_amount')::double precision,
|
|
443
|
+
(di ->> 'discount_type')::discount_type_enum
|
|
444
|
+
);
|
|
445
|
+
end loop;
|
|
446
|
+
|
|
447
|
+
for v_user_id in select value::uuid from jsonb_array_elements_text(coalesce(p -> 'assignee_user_ids', '[]'::jsonb)) loop
|
|
448
|
+
perform api_assert_active_user(v_user_id, v_company_id);
|
|
449
|
+
insert into estimate_user (company_id, estimate_id, user_id)
|
|
450
|
+
values (v_company_id, v_estimate_id, v_user_id);
|
|
451
|
+
end loop;
|
|
452
|
+
|
|
453
|
+
return v_estimate_id;
|
|
454
|
+
end;
|
|
455
|
+
$$;
|
|
456
|
+
|
|
457
|
+
-- ============================================================
|
|
458
|
+
-- grants: service_role only
|
|
459
|
+
-- ============================================================
|
|
460
|
+
|
|
461
|
+
revoke all on function "public"."api_create_client"(jsonb) from public;
|
|
462
|
+
revoke all on function "public"."api_create_client"(jsonb) from "anon";
|
|
463
|
+
revoke all on function "public"."api_create_client"(jsonb) from "authenticated";
|
|
464
|
+
grant execute on function "public"."api_create_client"(jsonb) to "service_role";
|
|
465
|
+
|
|
466
|
+
revoke all on function "public"."api_create_job"(jsonb) from public;
|
|
467
|
+
revoke all on function "public"."api_create_job"(jsonb) from "anon";
|
|
468
|
+
revoke all on function "public"."api_create_job"(jsonb) from "authenticated";
|
|
469
|
+
grant execute on function "public"."api_create_job"(jsonb) to "service_role";
|
|
470
|
+
|
|
471
|
+
revoke all on function "public"."api_create_invoice"(jsonb) from public;
|
|
472
|
+
revoke all on function "public"."api_create_invoice"(jsonb) from "anon";
|
|
473
|
+
revoke all on function "public"."api_create_invoice"(jsonb) from "authenticated";
|
|
474
|
+
grant execute on function "public"."api_create_invoice"(jsonb) to "service_role";
|
|
475
|
+
|
|
476
|
+
revoke all on function "public"."api_create_estimate"(jsonb) from public;
|
|
477
|
+
revoke all on function "public"."api_create_estimate"(jsonb) from "anon";
|
|
478
|
+
revoke all on function "public"."api_create_estimate"(jsonb) from "authenticated";
|
|
479
|
+
grant execute on function "public"."api_create_estimate"(jsonb) to "service_role";
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
-- webhook_subscription: support user-managed (non-Zapier) webhook endpoints.
|
|
2
|
+
--
|
|
3
|
+
-- A user-facing "webhook endpoint" is one target URL subscribed to N event
|
|
4
|
+
-- types, stored as N webhook_subscription rows sharing an endpoint_id and a
|
|
5
|
+
-- single signing secret. The delivery worker matches per-row on
|
|
6
|
+
-- (company_id, event_type, is_active) and never reads the grouping, so
|
|
7
|
+
-- fan-out/delivery/backoff/deactivation are unchanged.
|
|
8
|
+
--
|
|
9
|
+
-- source default 'zapier' doubles as the backfill: the Zapier subscribe route
|
|
10
|
+
-- was the only creation path before this, and that route keeps inserting
|
|
11
|
+
-- without code changes. User-managed paths write source = 'user' explicitly.
|
|
12
|
+
-- Zapier rows keep endpoint_id null and stay managed exclusively from Zapier.
|
|
13
|
+
|
|
14
|
+
alter table "public"."webhook_subscription"
|
|
15
|
+
add column if not exists "source" text default 'zapier' not null,
|
|
16
|
+
add column if not exists "endpoint_id" uuid,
|
|
17
|
+
add column if not exists "label" text;
|
|
18
|
+
|
|
19
|
+
alter table "public"."webhook_subscription"
|
|
20
|
+
add constraint "webhook_subscription_source_check"
|
|
21
|
+
check ("source" in ('zapier', 'user'));
|
|
22
|
+
|
|
23
|
+
-- A user row without an endpoint_id would still be delivered by the worker but
|
|
24
|
+
-- be invisible to the management UI (which filters on both columns) — an
|
|
25
|
+
-- active webhook the customer can't see or delete. Enforce the pairing here.
|
|
26
|
+
alter table "public"."webhook_subscription"
|
|
27
|
+
add constraint "webhook_subscription_source_endpoint_check"
|
|
28
|
+
check (
|
|
29
|
+
("source" = 'zapier' and "endpoint_id" is null) or
|
|
30
|
+
("source" = 'user' and "endpoint_id" is not null)
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
-- one row per (endpoint, event type)
|
|
34
|
+
create unique index if not exists "webhook_subscription_endpoint_event_key"
|
|
35
|
+
on "public"."webhook_subscription" ("endpoint_id", "event_type")
|
|
36
|
+
where "endpoint_id" is not null;
|
|
37
|
+
|
|
38
|
+
-- management API / settings UI listing
|
|
39
|
+
create index if not exists "webhook_subscription_endpoint_idx"
|
|
40
|
+
on "public"."webhook_subscription" ("company_id", "endpoint_id")
|
|
41
|
+
where "endpoint_id" is not null;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
-- Retention support for the webhook outbox. A nightly cron in autopilot-web
|
|
2
|
+
-- (/api/webhook-retention-cron) calls cleanup_webhook_outbox to purge
|
|
3
|
+
-- terminal webhook_delivery rows and processed outbound_event rows past
|
|
4
|
+
-- their retention windows (30 days for deliveries, 90 days for events).
|
|
5
|
+
--
|
|
6
|
+
-- The delivery window must stay UNIFORM across all terminal statuses
|
|
7
|
+
-- ('delivered', 'skipped', 'dead'): the outbox worker's
|
|
8
|
+
-- deactivate-persistently-dead check counts dead rows created after the most
|
|
9
|
+
-- recent delivered row, and purging statuses on different schedules could
|
|
10
|
+
-- pull pre-success dead rows into that count.
|
|
11
|
+
|
|
12
|
+
-- Cleanup scans "old + terminal"; the existing partial index on
|
|
13
|
+
-- outbound_event covers only the opposite (unprocessed) predicate.
|
|
14
|
+
create index if not exists "outbound_event_cleanup_idx"
|
|
15
|
+
on "public"."outbound_event" ("created_at")
|
|
16
|
+
where "processed_at" is not null;
|
|
17
|
+
|
|
18
|
+
create index if not exists "webhook_delivery_cleanup_idx"
|
|
19
|
+
on "public"."webhook_delivery" ("created_at")
|
|
20
|
+
where "status" in ('delivered', 'skipped', 'dead');
|
|
21
|
+
|
|
22
|
+
create or replace function "public"."cleanup_webhook_outbox"(
|
|
23
|
+
"event_retention_days" integer,
|
|
24
|
+
"delivery_retention_days" integer,
|
|
25
|
+
"batch_size" integer
|
|
26
|
+
)
|
|
27
|
+
returns table ("deliveries_deleted" integer, "events_deleted" integer)
|
|
28
|
+
language "plpgsql"
|
|
29
|
+
security definer
|
|
30
|
+
set search_path = 'public'
|
|
31
|
+
as $$
|
|
32
|
+
declare
|
|
33
|
+
-- floor of 7 days: a miscalled 0 must never purge fresh history
|
|
34
|
+
event_cutoff timestamptz :=
|
|
35
|
+
now() - make_interval(days => greatest(event_retention_days, 7));
|
|
36
|
+
delivery_cutoff timestamptz :=
|
|
37
|
+
now() - make_interval(days => greatest(delivery_retention_days, 7));
|
|
38
|
+
-- floor of 1: a caller-supplied 0 would otherwise LIMIT 0 into a silent
|
|
39
|
+
-- no-op, and a negative value is a runtime error
|
|
40
|
+
capped_batch integer := least(greatest(batch_size, 1), 5000);
|
|
41
|
+
del_count integer;
|
|
42
|
+
evt_count integer;
|
|
43
|
+
begin
|
|
44
|
+
-- Deleting an event cascades its deliveries regardless of delivery_cutoff,
|
|
45
|
+
-- so the event window must never be the shorter one.
|
|
46
|
+
if greatest(event_retention_days, 7) < greatest(delivery_retention_days, 7) then
|
|
47
|
+
raise exception 'event_retention_days (%) must be >= delivery_retention_days (%)',
|
|
48
|
+
event_retention_days, delivery_retention_days;
|
|
49
|
+
end if;
|
|
50
|
+
|
|
51
|
+
-- Terminal deliveries first, so the outbound_event cascade below touches
|
|
52
|
+
-- almost nothing and each statement's row count stays bounded.
|
|
53
|
+
delete from webhook_delivery
|
|
54
|
+
where id in (
|
|
55
|
+
select id from webhook_delivery
|
|
56
|
+
where status in ('delivered', 'skipped', 'dead')
|
|
57
|
+
and created_at < delivery_cutoff
|
|
58
|
+
order by created_at
|
|
59
|
+
limit capped_batch
|
|
60
|
+
);
|
|
61
|
+
get diagnostics del_count = row_count;
|
|
62
|
+
|
|
63
|
+
delete from outbound_event
|
|
64
|
+
where id in (
|
|
65
|
+
select id from outbound_event
|
|
66
|
+
where processed_at is not null
|
|
67
|
+
and created_at < event_cutoff
|
|
68
|
+
-- belt-and-suspenders: never cascade away a live delivery (retries
|
|
69
|
+
-- terminate ~1.6 days after creation, so this should match nothing)
|
|
70
|
+
and not exists (
|
|
71
|
+
select 1 from webhook_delivery d
|
|
72
|
+
where d.event_id = outbound_event.id
|
|
73
|
+
and d.status in ('pending', 'delivering')
|
|
74
|
+
)
|
|
75
|
+
order by created_at
|
|
76
|
+
limit capped_batch
|
|
77
|
+
);
|
|
78
|
+
get diagnostics evt_count = row_count;
|
|
79
|
+
|
|
80
|
+
return query select del_count, evt_count;
|
|
81
|
+
end;
|
|
82
|
+
$$;
|
|
83
|
+
|
|
84
|
+
revoke all on function "public"."cleanup_webhook_outbox"(integer, integer, integer) from public;
|
|
85
|
+
revoke all on function "public"."cleanup_webhook_outbox"(integer, integer, integer) from "anon";
|
|
86
|
+
revoke all on function "public"."cleanup_webhook_outbox"(integer, integer, integer) from "authenticated";
|
|
87
|
+
grant execute on function "public"."cleanup_webhook_outbox"(integer, integer, integer) to "service_role";
|