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,26 @@
|
|
|
1
|
+
-- The event map and task queue are worker bookkeeping, accessed only by
|
|
2
|
+
-- service-role server routes (same posture as qb_sync_task and the
|
|
3
|
+
-- connection tables). Clients never touch them.
|
|
4
|
+
alter table "public"."google_calendar_event_map" enable row level security;
|
|
5
|
+
alter table "public"."google_calendar_sync_task" enable row level security;
|
|
6
|
+
|
|
7
|
+
revoke all on table "public"."google_calendar_event_map" from public;
|
|
8
|
+
revoke all on table "public"."google_calendar_event_map" from "anon";
|
|
9
|
+
revoke all on table "public"."google_calendar_event_map" from "authenticated";
|
|
10
|
+
|
|
11
|
+
revoke all on table "public"."google_calendar_sync_task" from public;
|
|
12
|
+
revoke all on table "public"."google_calendar_sync_task" from "anon";
|
|
13
|
+
revoke all on table "public"."google_calendar_sync_task" from "authenticated";
|
|
14
|
+
|
|
15
|
+
grant all on table "public"."google_calendar_event_map" to "service_role";
|
|
16
|
+
grant all on table "public"."google_calendar_sync_task" to "service_role";
|
|
17
|
+
|
|
18
|
+
revoke all on function "public"."enqueue_gcal_sync_tasks"(jsonb) from public;
|
|
19
|
+
revoke all on function "public"."enqueue_gcal_sync_tasks"(jsonb) from "anon";
|
|
20
|
+
revoke all on function "public"."enqueue_gcal_sync_tasks"(jsonb) from "authenticated";
|
|
21
|
+
grant execute on function "public"."enqueue_gcal_sync_tasks"(jsonb) to "service_role";
|
|
22
|
+
|
|
23
|
+
revoke all on function "public"."claim_gcal_sync_tasks"(integer) from public;
|
|
24
|
+
revoke all on function "public"."claim_gcal_sync_tasks"(integer) from "anon";
|
|
25
|
+
revoke all on function "public"."claim_gcal_sync_tasks"(integer) from "authenticated";
|
|
26
|
+
grant execute on function "public"."claim_gcal_sync_tasks"(integer) to "service_role";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-- Extend the outbox to the event (calendar block) table so the Google
|
|
2
|
+
-- Calendar sync can react to event changes like it does to job/estimate
|
|
3
|
+
-- changes. event.* rows flow harmlessly through the webhook fan-out: no
|
|
4
|
+
-- webhook subscription can name event.*, so the worker finds no subscribers
|
|
5
|
+
-- and just stamps them processed.
|
|
6
|
+
--
|
|
7
|
+
-- event has no is_deleted column — deletes are hard deletes, so
|
|
8
|
+
-- event.deleted fires from AFTER DELETE and carries the to_jsonb(OLD)
|
|
9
|
+
-- snapshot, exactly like the other parents handled by enqueue_parent_event
|
|
10
|
+
-- (reused unchanged; it derives everything from TG_TABLE_NAME).
|
|
11
|
+
|
|
12
|
+
alter table "public"."outbound_event"
|
|
13
|
+
drop constraint "outbound_event_entity_type_check";
|
|
14
|
+
alter table "public"."outbound_event"
|
|
15
|
+
add constraint "outbound_event_entity_type_check"
|
|
16
|
+
check ("entity_type" in ('client', 'job', 'invoice', 'estimate', 'event'));
|
|
17
|
+
|
|
18
|
+
alter table "public"."outbound_event"
|
|
19
|
+
drop constraint "outbound_event_event_type_check";
|
|
20
|
+
alter table "public"."outbound_event"
|
|
21
|
+
add constraint "outbound_event_event_type_check"
|
|
22
|
+
check ("event_type" ~ '^(client|job|invoice|estimate|event)\.(created|updated|deleted)$');
|
|
23
|
+
|
|
24
|
+
create or replace trigger "outbound_event_event_cd" after insert or delete on "public"."event"
|
|
25
|
+
for each row execute function "public"."enqueue_parent_event"();
|
|
26
|
+
create or replace trigger "outbound_event_event_u" after update on "public"."event"
|
|
27
|
+
for each row when (old.* is distinct from new.*)
|
|
28
|
+
execute function "public"."enqueue_parent_event"();
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
-- New purchasable add-on: per-user Google Calendar sync. Mirrors the
|
|
2
|
+
-- google_calendar entry added to ADDON_KEYS in src/server-safe/
|
|
3
|
+
-- entitlements.ts — the two lists must stay in sync. Included with Scale
|
|
4
|
+
-- like every add-on (Scale resolves to FULL_ENTITLEMENTS and has no
|
|
5
|
+
-- billing_addon rows).
|
|
6
|
+
alter table "public"."billing_addon"
|
|
7
|
+
drop constraint "billing_addon_addon_key_check";
|
|
8
|
+
alter table "public"."billing_addon"
|
|
9
|
+
add constraint "billing_addon_addon_key_check"
|
|
10
|
+
check ("addon_key" in (
|
|
11
|
+
'ai_voice_assistant',
|
|
12
|
+
'dumpster_asset_tracking',
|
|
13
|
+
'marketing_tools',
|
|
14
|
+
'open_api',
|
|
15
|
+
'quickbooks',
|
|
16
|
+
'gps_tracking',
|
|
17
|
+
'client_portal',
|
|
18
|
+
'google_reserve',
|
|
19
|
+
'employee_permissions',
|
|
20
|
+
'google_ads',
|
|
21
|
+
'facebook_ads',
|
|
22
|
+
'bing_ads',
|
|
23
|
+
'google_calendar'
|
|
24
|
+
));
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
-- Extend cleanup_webhook_outbox (20260721190308) to also purge terminal
|
|
2
|
+
-- google_calendar_sync_task rows past the event retention window, keeping
|
|
3
|
+
-- the whole outbox family on the one nightly sweep. Same signature and
|
|
4
|
+
-- behavior as before, plus a fourth result column.
|
|
5
|
+
|
|
6
|
+
-- cleanup scans "old + terminal", matching the other outbox cleanup indexes
|
|
7
|
+
create index if not exists "google_calendar_sync_task_cleanup_idx"
|
|
8
|
+
on "public"."google_calendar_sync_task" ("created_at")
|
|
9
|
+
where "status" in ('done', 'skipped', 'dead');
|
|
10
|
+
|
|
11
|
+
drop function if exists "public"."cleanup_webhook_outbox"(integer, integer, integer);
|
|
12
|
+
|
|
13
|
+
create or replace function "public"."cleanup_webhook_outbox"(
|
|
14
|
+
"event_retention_days" integer,
|
|
15
|
+
"delivery_retention_days" integer,
|
|
16
|
+
"batch_size" integer
|
|
17
|
+
)
|
|
18
|
+
returns table (
|
|
19
|
+
"deliveries_deleted" integer,
|
|
20
|
+
"events_deleted" integer,
|
|
21
|
+
"qb_tasks_deleted" integer,
|
|
22
|
+
"gcal_tasks_deleted" integer
|
|
23
|
+
)
|
|
24
|
+
language "plpgsql"
|
|
25
|
+
security definer
|
|
26
|
+
set search_path = 'public'
|
|
27
|
+
as $$
|
|
28
|
+
declare
|
|
29
|
+
-- floor of 7 days: a miscalled 0 must never purge fresh history
|
|
30
|
+
event_cutoff timestamptz :=
|
|
31
|
+
now() - make_interval(days => greatest(event_retention_days, 7));
|
|
32
|
+
delivery_cutoff timestamptz :=
|
|
33
|
+
now() - make_interval(days => greatest(delivery_retention_days, 7));
|
|
34
|
+
-- floor of 1: a caller-supplied 0 would otherwise LIMIT 0 into a silent
|
|
35
|
+
-- no-op, and a negative value is a runtime error
|
|
36
|
+
capped_batch integer := least(greatest(batch_size, 1), 5000);
|
|
37
|
+
del_count integer;
|
|
38
|
+
evt_count integer;
|
|
39
|
+
qb_count integer;
|
|
40
|
+
gcal_count integer;
|
|
41
|
+
begin
|
|
42
|
+
-- Deleting an event cascades its deliveries regardless of delivery_cutoff,
|
|
43
|
+
-- so the event window must never be the shorter one.
|
|
44
|
+
if greatest(event_retention_days, 7) < greatest(delivery_retention_days, 7) then
|
|
45
|
+
raise exception 'event_retention_days (%) must be >= delivery_retention_days (%)',
|
|
46
|
+
event_retention_days, delivery_retention_days;
|
|
47
|
+
end if;
|
|
48
|
+
|
|
49
|
+
-- Terminal deliveries first, so the outbound_event cascade below touches
|
|
50
|
+
-- almost nothing and each statement's row count stays bounded.
|
|
51
|
+
delete from webhook_delivery
|
|
52
|
+
where id in (
|
|
53
|
+
select id from webhook_delivery
|
|
54
|
+
where status in ('delivered', 'skipped', 'dead')
|
|
55
|
+
and created_at < delivery_cutoff
|
|
56
|
+
order by created_at
|
|
57
|
+
limit capped_batch
|
|
58
|
+
);
|
|
59
|
+
get diagnostics del_count = row_count;
|
|
60
|
+
|
|
61
|
+
delete from outbound_event
|
|
62
|
+
where id in (
|
|
63
|
+
select id from outbound_event
|
|
64
|
+
where processed_at is not null
|
|
65
|
+
and created_at < event_cutoff
|
|
66
|
+
-- belt-and-suspenders: never cascade away a live delivery (retries
|
|
67
|
+
-- terminate ~1.6 days after creation, so this should match nothing)
|
|
68
|
+
and not exists (
|
|
69
|
+
select 1 from webhook_delivery d
|
|
70
|
+
where d.event_id = outbound_event.id
|
|
71
|
+
and d.status in ('pending', 'delivering')
|
|
72
|
+
)
|
|
73
|
+
order by created_at
|
|
74
|
+
limit capped_batch
|
|
75
|
+
);
|
|
76
|
+
get diagnostics evt_count = row_count;
|
|
77
|
+
|
|
78
|
+
-- Terminal QB sync tasks share the event window; pending/processing rows
|
|
79
|
+
-- are never touched.
|
|
80
|
+
delete from qb_sync_task
|
|
81
|
+
where id in (
|
|
82
|
+
select id from qb_sync_task
|
|
83
|
+
where status in ('done', 'skipped', 'dead')
|
|
84
|
+
and created_at < event_cutoff
|
|
85
|
+
order by created_at
|
|
86
|
+
limit capped_batch
|
|
87
|
+
);
|
|
88
|
+
get diagnostics qb_count = row_count;
|
|
89
|
+
|
|
90
|
+
-- Terminal Google Calendar sync tasks, same window; pending/processing
|
|
91
|
+
-- rows are never touched (tasks are self-contained, no FK to events).
|
|
92
|
+
delete from google_calendar_sync_task
|
|
93
|
+
where id in (
|
|
94
|
+
select id from google_calendar_sync_task
|
|
95
|
+
where status in ('done', 'skipped', 'dead')
|
|
96
|
+
and created_at < event_cutoff
|
|
97
|
+
order by created_at
|
|
98
|
+
limit capped_batch
|
|
99
|
+
);
|
|
100
|
+
get diagnostics gcal_count = row_count;
|
|
101
|
+
|
|
102
|
+
return query select del_count, evt_count, qb_count, gcal_count;
|
|
103
|
+
end;
|
|
104
|
+
$$;
|
|
105
|
+
|
|
106
|
+
revoke all on function "public"."cleanup_webhook_outbox"(integer, integer, integer) from public;
|
|
107
|
+
revoke all on function "public"."cleanup_webhook_outbox"(integer, integer, integer) from "anon";
|
|
108
|
+
revoke all on function "public"."cleanup_webhook_outbox"(integer, integer, integer) from "authenticated";
|
|
109
|
+
grant execute on function "public"."cleanup_webhook_outbox"(integer, integer, integer) to "service_role";
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
-- Good/Better/Best proposals for estimates.
|
|
2
|
+
--
|
|
3
|
+
-- A proposal presents up to three item packages ("options") plus optional
|
|
4
|
+
-- add-ons to the end customer, who picks one package and any add-ons on the
|
|
5
|
+
-- public estimate page. Option items and add-ons mirror estimate_item's
|
|
6
|
+
-- columns exactly (denormalized snapshots, no FK back to the price book)
|
|
7
|
+
-- because approval copies the winning selection into estimate_item
|
|
8
|
+
-- column-for-column (see approve_estimate_proposal), after which every
|
|
9
|
+
-- downstream consumer (PDF, totals, job conversion, invoicing) works
|
|
10
|
+
-- unchanged. estimate_item rows are untouched until that approval.
|
|
11
|
+
--
|
|
12
|
+
-- Good/Better/Best labels are derived from position among surviving options
|
|
13
|
+
-- (1st/2nd/3rd; a single option renders unlabeled), so there is no label
|
|
14
|
+
-- column.
|
|
15
|
+
--
|
|
16
|
+
-- Parent references are composite (child_fk, company_id) foreign keys onto
|
|
17
|
+
-- (id, company_id) so a row can never point at another tenant's parent:
|
|
18
|
+
-- company-scoped RLS alone would accept a proposal whose estimate_id belongs
|
|
19
|
+
-- to a different company, and the service-role approval function follows
|
|
20
|
+
-- that reference to replace estimate items. The composite keys make such a
|
|
21
|
+
-- row unrepresentable. (selected_option_id stays a plain FK because its
|
|
22
|
+
-- on delete set null must not null company_id; approval validates that the
|
|
23
|
+
-- option belongs to the proposal.)
|
|
24
|
+
|
|
25
|
+
-- Backing unique key for the composite references below; (id) is already
|
|
26
|
+
-- the primary key so this holds for every existing row.
|
|
27
|
+
alter table only "public"."estimate"
|
|
28
|
+
add constraint "estimate_id_company_id_key" unique ("id", "company_id");
|
|
29
|
+
|
|
30
|
+
create table if not exists "public"."estimate_proposal" (
|
|
31
|
+
"id" "uuid" default "gen_random_uuid"() not null,
|
|
32
|
+
"created_at" timestamp with time zone default "now"() not null,
|
|
33
|
+
"company_id" "uuid" not null,
|
|
34
|
+
"estimate_id" "uuid" not null,
|
|
35
|
+
"status" "text" default 'Unsent' not null,
|
|
36
|
+
-- Set at approval time only; which package the customer chose.
|
|
37
|
+
"selected_option_id" "uuid",
|
|
38
|
+
-- Free-form notes typed by the end customer, distinct from the staff
|
|
39
|
+
-- notes on estimate.notes.
|
|
40
|
+
"customer_notes" "text",
|
|
41
|
+
"sent_at" timestamp with time zone,
|
|
42
|
+
"opened_at" timestamp with time zone,
|
|
43
|
+
"responded_at" timestamp with time zone,
|
|
44
|
+
constraint "estimate_proposal_pkey" primary key ("id"),
|
|
45
|
+
constraint "estimate_proposal_estimate_id_key" unique ("estimate_id"),
|
|
46
|
+
constraint "estimate_proposal_id_company_id_key" unique ("id", "company_id"),
|
|
47
|
+
constraint "estimate_proposal_status_check" check ("status" in (
|
|
48
|
+
'Unsent', 'Sent', 'Opened', 'Approved', 'Declined'
|
|
49
|
+
))
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
alter table "public"."estimate_proposal" owner to "postgres";
|
|
53
|
+
|
|
54
|
+
alter table only "public"."estimate_proposal"
|
|
55
|
+
add constraint "estimate_proposal_company_id_fkey"
|
|
56
|
+
foreign key ("company_id") references "public"."company"("id") on delete cascade;
|
|
57
|
+
|
|
58
|
+
alter table only "public"."estimate_proposal"
|
|
59
|
+
add constraint "estimate_proposal_estimate_id_fkey"
|
|
60
|
+
foreign key ("estimate_id", "company_id")
|
|
61
|
+
references "public"."estimate"("id", "company_id") on delete cascade;
|
|
62
|
+
|
|
63
|
+
create table if not exists "public"."estimate_proposal_option" (
|
|
64
|
+
"id" "uuid" default "gen_random_uuid"() not null,
|
|
65
|
+
"created_at" timestamp with time zone default "now"() not null,
|
|
66
|
+
"company_id" "uuid" not null,
|
|
67
|
+
"proposal_id" "uuid" not null,
|
|
68
|
+
"sort_order" integer default 0 not null,
|
|
69
|
+
constraint "estimate_proposal_option_pkey" primary key ("id"),
|
|
70
|
+
constraint "estimate_proposal_option_id_company_id_key" unique ("id", "company_id")
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
alter table "public"."estimate_proposal_option" owner to "postgres";
|
|
74
|
+
|
|
75
|
+
alter table only "public"."estimate_proposal_option"
|
|
76
|
+
add constraint "estimate_proposal_option_company_id_fkey"
|
|
77
|
+
foreign key ("company_id") references "public"."company"("id") on delete cascade;
|
|
78
|
+
|
|
79
|
+
alter table only "public"."estimate_proposal_option"
|
|
80
|
+
add constraint "estimate_proposal_option_proposal_id_fkey"
|
|
81
|
+
foreign key ("proposal_id", "company_id")
|
|
82
|
+
references "public"."estimate_proposal"("id", "company_id") on delete cascade;
|
|
83
|
+
|
|
84
|
+
-- selected_option_id FK added after estimate_proposal_option exists.
|
|
85
|
+
alter table only "public"."estimate_proposal"
|
|
86
|
+
add constraint "estimate_proposal_selected_option_id_fkey"
|
|
87
|
+
foreign key ("selected_option_id") references "public"."estimate_proposal_option"("id") on delete set null;
|
|
88
|
+
|
|
89
|
+
create table if not exists "public"."estimate_proposal_option_item" (
|
|
90
|
+
"id" "uuid" default "gen_random_uuid"() not null,
|
|
91
|
+
"created_at" timestamp with time zone default "now"() not null,
|
|
92
|
+
"company_id" "uuid" not null,
|
|
93
|
+
"option_id" "uuid" not null,
|
|
94
|
+
"item_name" "text" not null,
|
|
95
|
+
"item_price" numeric not null,
|
|
96
|
+
"item_cost" numeric not null,
|
|
97
|
+
"quantity" numeric not null,
|
|
98
|
+
"taxable" boolean not null,
|
|
99
|
+
"description" "text",
|
|
100
|
+
"payment_upfront" boolean,
|
|
101
|
+
"sort_order" integer default 0 not null,
|
|
102
|
+
constraint "estimate_proposal_option_item_pkey" primary key ("id")
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
alter table "public"."estimate_proposal_option_item" owner to "postgres";
|
|
106
|
+
|
|
107
|
+
alter table only "public"."estimate_proposal_option_item"
|
|
108
|
+
add constraint "estimate_proposal_option_item_company_id_fkey"
|
|
109
|
+
foreign key ("company_id") references "public"."company"("id") on delete cascade;
|
|
110
|
+
|
|
111
|
+
alter table only "public"."estimate_proposal_option_item"
|
|
112
|
+
add constraint "estimate_proposal_option_item_option_id_fkey"
|
|
113
|
+
foreign key ("option_id", "company_id")
|
|
114
|
+
references "public"."estimate_proposal_option"("id", "company_id") on delete cascade;
|
|
115
|
+
|
|
116
|
+
create table if not exists "public"."estimate_proposal_addon" (
|
|
117
|
+
"id" "uuid" default "gen_random_uuid"() not null,
|
|
118
|
+
"created_at" timestamp with time zone default "now"() not null,
|
|
119
|
+
"company_id" "uuid" not null,
|
|
120
|
+
"proposal_id" "uuid" not null,
|
|
121
|
+
"item_name" "text" not null,
|
|
122
|
+
"item_price" numeric not null,
|
|
123
|
+
"item_cost" numeric not null,
|
|
124
|
+
"quantity" numeric default 1 not null,
|
|
125
|
+
"taxable" boolean not null,
|
|
126
|
+
"description" "text",
|
|
127
|
+
-- Whether the end customer checked this add-on; finalized at approval.
|
|
128
|
+
"is_selected" boolean default false not null,
|
|
129
|
+
"sort_order" integer default 0 not null,
|
|
130
|
+
constraint "estimate_proposal_addon_pkey" primary key ("id")
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
alter table "public"."estimate_proposal_addon" owner to "postgres";
|
|
134
|
+
|
|
135
|
+
alter table only "public"."estimate_proposal_addon"
|
|
136
|
+
add constraint "estimate_proposal_addon_company_id_fkey"
|
|
137
|
+
foreign key ("company_id") references "public"."company"("id") on delete cascade;
|
|
138
|
+
|
|
139
|
+
alter table only "public"."estimate_proposal_addon"
|
|
140
|
+
add constraint "estimate_proposal_addon_proposal_id_fkey"
|
|
141
|
+
foreign key ("proposal_id", "company_id")
|
|
142
|
+
references "public"."estimate_proposal"("id", "company_id") on delete cascade;
|
|
143
|
+
|
|
144
|
+
create index "estimate_proposal_company_id_idx"
|
|
145
|
+
on "public"."estimate_proposal" ("company_id");
|
|
146
|
+
create index "estimate_proposal_option_company_id_idx"
|
|
147
|
+
on "public"."estimate_proposal_option" ("company_id");
|
|
148
|
+
create index "estimate_proposal_option_proposal_id_idx"
|
|
149
|
+
on "public"."estimate_proposal_option" ("proposal_id");
|
|
150
|
+
create index "estimate_proposal_option_item_company_id_idx"
|
|
151
|
+
on "public"."estimate_proposal_option_item" ("company_id");
|
|
152
|
+
create index "estimate_proposal_option_item_option_id_idx"
|
|
153
|
+
on "public"."estimate_proposal_option_item" ("option_id");
|
|
154
|
+
create index "estimate_proposal_addon_company_id_idx"
|
|
155
|
+
on "public"."estimate_proposal_addon" ("company_id");
|
|
156
|
+
create index "estimate_proposal_addon_proposal_id_idx"
|
|
157
|
+
on "public"."estimate_proposal_addon" ("proposal_id");
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
-- RLS for the estimate proposal tables: the standard house policy — any
|
|
2
|
+
-- authenticated staff member of the owning company can CRUD. End customers
|
|
3
|
+
-- never touch these tables directly; the public estimate page reads and
|
|
4
|
+
-- responds through service-role API routes, same as the rest of the
|
|
5
|
+
-- customer-facing estimate flow.
|
|
6
|
+
--
|
|
7
|
+
-- Affected tables: estimate_proposal, estimate_proposal_option,
|
|
8
|
+
-- estimate_proposal_option_item, estimate_proposal_addon.
|
|
9
|
+
|
|
10
|
+
alter table "public"."estimate_proposal" enable row level security;
|
|
11
|
+
alter table "public"."estimate_proposal_option" enable row level security;
|
|
12
|
+
alter table "public"."estimate_proposal_option_item" enable row level security;
|
|
13
|
+
alter table "public"."estimate_proposal_addon" enable row level security;
|
|
14
|
+
|
|
15
|
+
grant all on table "public"."estimate_proposal" to "authenticated";
|
|
16
|
+
grant all on table "public"."estimate_proposal" to "service_role";
|
|
17
|
+
grant all on table "public"."estimate_proposal_option" to "authenticated";
|
|
18
|
+
grant all on table "public"."estimate_proposal_option" to "service_role";
|
|
19
|
+
grant all on table "public"."estimate_proposal_option_item" to "authenticated";
|
|
20
|
+
grant all on table "public"."estimate_proposal_option_item" to "service_role";
|
|
21
|
+
grant all on table "public"."estimate_proposal_addon" to "authenticated";
|
|
22
|
+
grant all on table "public"."estimate_proposal_addon" to "service_role";
|
|
23
|
+
|
|
24
|
+
create policy "Anyone with matching company_id can CRUD"
|
|
25
|
+
on "public"."estimate_proposal"
|
|
26
|
+
to "authenticated"
|
|
27
|
+
using (((nullif(trim(both '"'::"text" from ("public"."get_my_claim"('autopilot_company_id'::"text"))::"text"), ''::"text"))::"uuid" = "company_id"))
|
|
28
|
+
with check (((nullif(trim(both '"'::"text" from ("public"."get_my_claim"('autopilot_company_id'::"text"))::"text"), ''::"text"))::"uuid" = "company_id"));
|
|
29
|
+
|
|
30
|
+
create policy "Anyone with matching company_id can CRUD"
|
|
31
|
+
on "public"."estimate_proposal_option"
|
|
32
|
+
to "authenticated"
|
|
33
|
+
using (((nullif(trim(both '"'::"text" from ("public"."get_my_claim"('autopilot_company_id'::"text"))::"text"), ''::"text"))::"uuid" = "company_id"))
|
|
34
|
+
with check (((nullif(trim(both '"'::"text" from ("public"."get_my_claim"('autopilot_company_id'::"text"))::"text"), ''::"text"))::"uuid" = "company_id"));
|
|
35
|
+
|
|
36
|
+
create policy "Anyone with matching company_id can CRUD"
|
|
37
|
+
on "public"."estimate_proposal_option_item"
|
|
38
|
+
to "authenticated"
|
|
39
|
+
using (((nullif(trim(both '"'::"text" from ("public"."get_my_claim"('autopilot_company_id'::"text"))::"text"), ''::"text"))::"uuid" = "company_id"))
|
|
40
|
+
with check (((nullif(trim(both '"'::"text" from ("public"."get_my_claim"('autopilot_company_id'::"text"))::"text"), ''::"text"))::"uuid" = "company_id"));
|
|
41
|
+
|
|
42
|
+
create policy "Anyone with matching company_id can CRUD"
|
|
43
|
+
on "public"."estimate_proposal_addon"
|
|
44
|
+
to "authenticated"
|
|
45
|
+
using (((nullif(trim(both '"'::"text" from ("public"."get_my_claim"('autopilot_company_id'::"text"))::"text"), ''::"text"))::"uuid" = "company_id"))
|
|
46
|
+
with check (((nullif(trim(both '"'::"text" from ("public"."get_my_claim"('autopilot_company_id'::"text"))::"text"), ''::"text"))::"uuid" = "company_id"));
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
-- Company-level proposal configuration on the existing settings_estimate row.
|
|
2
|
+
--
|
|
3
|
+
-- proposals_enabled follows the default-on opt-out idiom (see
|
|
4
|
+
-- settings_client_portal.enable_booking): the feature is on for every
|
|
5
|
+
-- entitled company until they switch it off. Entitlement gates turning it
|
|
6
|
+
-- ON in the settings routes; turning it OFF is never blocked.
|
|
7
|
+
--
|
|
8
|
+
-- proposal_video_url is only ever rendered through extractYouTubeVideoId in
|
|
9
|
+
-- src/server-safe/proposals.ts (a non-YouTube URL renders nothing), so a
|
|
10
|
+
-- plain text column is safe.
|
|
11
|
+
|
|
12
|
+
alter table "public"."settings_estimate"
|
|
13
|
+
add column "proposals_enabled" boolean default true not null,
|
|
14
|
+
add column "proposal_show_video" boolean default false not null,
|
|
15
|
+
add column "proposal_video_url" "text",
|
|
16
|
+
-- Generic paragraph shown under the video on every proposal.
|
|
17
|
+
add column "proposal_description" "text";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-- New purchasable add-on: Good/Better/Best estimate proposals. Mirrors the
|
|
2
|
+
-- estimate_proposals entry added to ADDON_KEYS in src/server-safe/
|
|
3
|
+
-- entitlements.ts — the two lists must stay in sync. Included with Scale
|
|
4
|
+
-- like every add-on (Scale resolves to FULL_ENTITLEMENTS and has no
|
|
5
|
+
-- billing_addon rows).
|
|
6
|
+
alter table "public"."billing_addon"
|
|
7
|
+
drop constraint "billing_addon_addon_key_check";
|
|
8
|
+
alter table "public"."billing_addon"
|
|
9
|
+
add constraint "billing_addon_addon_key_check"
|
|
10
|
+
check ("addon_key" in (
|
|
11
|
+
'ai_voice_assistant',
|
|
12
|
+
'dumpster_asset_tracking',
|
|
13
|
+
'marketing_tools',
|
|
14
|
+
'open_api',
|
|
15
|
+
'quickbooks',
|
|
16
|
+
'gps_tracking',
|
|
17
|
+
'client_portal',
|
|
18
|
+
'google_reserve',
|
|
19
|
+
'employee_permissions',
|
|
20
|
+
'google_ads',
|
|
21
|
+
'facebook_ads',
|
|
22
|
+
'bing_ads',
|
|
23
|
+
'google_calendar',
|
|
24
|
+
'estimate_proposals'
|
|
25
|
+
));
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
-- Transactional proposal approval.
|
|
2
|
+
--
|
|
3
|
+
-- Approving a proposal must atomically (1) record the customer's choice,
|
|
4
|
+
-- (2) replace the estimate's line items with the chosen package plus any
|
|
5
|
+
-- selected add-ons, and (3) mark the estimate Approved. Done as separate
|
|
6
|
+
-- PostgREST calls, a failure between steps would leave an Approved proposal
|
|
7
|
+
-- whose estimate still shows the pre-proposal items — so it is one function,
|
|
8
|
+
-- one transaction.
|
|
9
|
+
--
|
|
10
|
+
-- The row lock plus the status precondition also resolves the concurrent
|
|
11
|
+
-- staff-edit race: once this commits, the proposal is Approved and the
|
|
12
|
+
-- staff save route refuses further edits; if staff saved first, the items
|
|
13
|
+
-- copied here are re-read inside the same transaction and therefore current.
|
|
14
|
+
--
|
|
15
|
+
-- security definer: the sole caller is the web server's service-role client
|
|
16
|
+
-- (the public estimate page has no authenticated user). The revoke/grant
|
|
17
|
+
-- statements live in this file rather than a companion rls migration
|
|
18
|
+
-- because they are inseparable from the function's security posture
|
|
19
|
+
-- (service_role-only, like charge_marketing_usage).
|
|
20
|
+
|
|
21
|
+
create or replace function "public"."approve_estimate_proposal"(
|
|
22
|
+
"p_proposal_id" uuid,
|
|
23
|
+
"p_option_id" uuid,
|
|
24
|
+
"p_addon_ids" uuid[],
|
|
25
|
+
"p_customer_notes" text
|
|
26
|
+
) returns void
|
|
27
|
+
language plpgsql
|
|
28
|
+
security definer
|
|
29
|
+
set search_path = public
|
|
30
|
+
as $$
|
|
31
|
+
declare
|
|
32
|
+
v_proposal "public"."estimate_proposal"%rowtype;
|
|
33
|
+
begin
|
|
34
|
+
select * into v_proposal
|
|
35
|
+
from "public"."estimate_proposal"
|
|
36
|
+
where "id" = p_proposal_id
|
|
37
|
+
for update;
|
|
38
|
+
|
|
39
|
+
if not found then
|
|
40
|
+
raise exception 'proposal not found'
|
|
41
|
+
using errcode = 'P0002';
|
|
42
|
+
end if;
|
|
43
|
+
|
|
44
|
+
if v_proposal."status" not in ('Sent', 'Opened', 'Declined') then
|
|
45
|
+
raise exception 'proposal is not in an approvable status: %',
|
|
46
|
+
v_proposal."status"
|
|
47
|
+
using errcode = 'P0003';
|
|
48
|
+
end if;
|
|
49
|
+
|
|
50
|
+
if not exists (
|
|
51
|
+
select 1 from "public"."estimate_proposal_option"
|
|
52
|
+
where "id" = p_option_id and "proposal_id" = p_proposal_id
|
|
53
|
+
) then
|
|
54
|
+
raise exception 'option does not belong to proposal'
|
|
55
|
+
using errcode = 'P0004';
|
|
56
|
+
end if;
|
|
57
|
+
|
|
58
|
+
-- Tenant-consistency belt on top of the composite FKs: this function is
|
|
59
|
+
-- security definer and rewrites estimate_item, so never follow a
|
|
60
|
+
-- reference whose estimate does not belong to the proposal's company.
|
|
61
|
+
if not exists (
|
|
62
|
+
select 1 from "public"."estimate"
|
|
63
|
+
where "id" = v_proposal."estimate_id"
|
|
64
|
+
and "company_id" = v_proposal."company_id"
|
|
65
|
+
) then
|
|
66
|
+
raise exception 'estimate does not belong to proposal company'
|
|
67
|
+
using errcode = 'P0005';
|
|
68
|
+
end if;
|
|
69
|
+
|
|
70
|
+
update "public"."estimate_proposal"
|
|
71
|
+
set "status" = 'Approved',
|
|
72
|
+
"selected_option_id" = p_option_id,
|
|
73
|
+
"customer_notes" = p_customer_notes,
|
|
74
|
+
"responded_at" = now()
|
|
75
|
+
where "id" = p_proposal_id;
|
|
76
|
+
|
|
77
|
+
update "public"."estimate_proposal_addon"
|
|
78
|
+
set "is_selected" = ("id" = any(coalesce(p_addon_ids, '{}')))
|
|
79
|
+
where "proposal_id" = p_proposal_id;
|
|
80
|
+
|
|
81
|
+
delete from "public"."estimate_item"
|
|
82
|
+
where "estimate_id" = v_proposal."estimate_id"
|
|
83
|
+
and "company_id" = v_proposal."company_id";
|
|
84
|
+
|
|
85
|
+
insert into "public"."estimate_item" (
|
|
86
|
+
"estimate_id", "company_id", "item_name", "item_price", "item_cost",
|
|
87
|
+
"quantity", "taxable", "description", "payment_upfront"
|
|
88
|
+
)
|
|
89
|
+
select
|
|
90
|
+
v_proposal."estimate_id", v_proposal."company_id", oi."item_name",
|
|
91
|
+
oi."item_price", oi."item_cost", oi."quantity", oi."taxable",
|
|
92
|
+
oi."description", oi."payment_upfront"
|
|
93
|
+
from "public"."estimate_proposal_option_item" oi
|
|
94
|
+
where oi."option_id" = p_option_id
|
|
95
|
+
order by oi."sort_order", oi."created_at";
|
|
96
|
+
|
|
97
|
+
insert into "public"."estimate_item" (
|
|
98
|
+
"estimate_id", "company_id", "item_name", "item_price", "item_cost",
|
|
99
|
+
"quantity", "taxable", "description", "payment_upfront"
|
|
100
|
+
)
|
|
101
|
+
select
|
|
102
|
+
v_proposal."estimate_id", v_proposal."company_id", a."item_name",
|
|
103
|
+
a."item_price", a."item_cost", a."quantity", a."taxable",
|
|
104
|
+
a."description", null
|
|
105
|
+
from "public"."estimate_proposal_addon" a
|
|
106
|
+
where a."proposal_id" = p_proposal_id
|
|
107
|
+
and a."id" = any(coalesce(p_addon_ids, '{}'))
|
|
108
|
+
order by a."sort_order", a."created_at";
|
|
109
|
+
|
|
110
|
+
update "public"."estimate"
|
|
111
|
+
set "status" = 'Approved'
|
|
112
|
+
where "id" = v_proposal."estimate_id"
|
|
113
|
+
and "company_id" = v_proposal."company_id";
|
|
114
|
+
end;
|
|
115
|
+
$$;
|
|
116
|
+
|
|
117
|
+
alter function "public"."approve_estimate_proposal"(uuid, uuid, uuid[], text)
|
|
118
|
+
owner to "postgres";
|
|
119
|
+
|
|
120
|
+
-- security definer + service_role-only: the public page's server routes are
|
|
121
|
+
-- the sole caller; no authenticated/anon path exists.
|
|
122
|
+
revoke all on function "public"."approve_estimate_proposal"(
|
|
123
|
+
uuid, uuid, uuid[], text
|
|
124
|
+
) from public;
|
|
125
|
+
revoke all on function "public"."approve_estimate_proposal"(
|
|
126
|
+
uuid, uuid, uuid[], text
|
|
127
|
+
) from "anon";
|
|
128
|
+
revoke all on function "public"."approve_estimate_proposal"(
|
|
129
|
+
uuid, uuid, uuid[], text
|
|
130
|
+
) from "authenticated";
|
|
131
|
+
grant execute on function "public"."approve_estimate_proposal"(
|
|
132
|
+
uuid, uuid, uuid[], text
|
|
133
|
+
) to "service_role";
|