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,1011 @@
|
|
|
1
|
+
-- Row-level security and least-privilege grants for Autopilot Fleet V1.
|
|
2
|
+
--
|
|
3
|
+
-- Affected tables:
|
|
4
|
+
-- fleet_organization, fleet_member, fleet_vehicle,
|
|
5
|
+
-- fleet_form_template, fleet_form_template_version, fleet_form_section,
|
|
6
|
+
-- fleet_form_question, fleet_form_assignment, fleet_inspection,
|
|
7
|
+
-- fleet_inspection_answer, fleet_media, fleet_issue,
|
|
8
|
+
-- fleet_issue_status_history, fleet_issue_comment, fleet_repair_order,
|
|
9
|
+
-- fleet_repair_order_line_item, fleet_pm_schedule, fleet_service_record,
|
|
10
|
+
-- fleet_notification_preference, fleet_audit_event, storage.objects
|
|
11
|
+
-- (policies scoped only to the private fleet-media bucket).
|
|
12
|
+
--
|
|
13
|
+
-- Every policy first proves the JWT company claim and an active Fleet
|
|
14
|
+
-- membership backed by a current, visible public.user employee row. Helpers
|
|
15
|
+
-- are SECURITY DEFINER to avoid recursive fleet_member RLS evaluation; each
|
|
16
|
+
-- helper binds its decision to auth.uid() and the JWT company claim.
|
|
17
|
+
|
|
18
|
+
-- ============================================================
|
|
19
|
+
-- Policy helpers
|
|
20
|
+
-- ============================================================
|
|
21
|
+
|
|
22
|
+
create or replace function "public"."fleet_current_company_id"()
|
|
23
|
+
returns uuid
|
|
24
|
+
language sql
|
|
25
|
+
stable
|
|
26
|
+
set search_path = ''
|
|
27
|
+
as $$
|
|
28
|
+
select nullif(
|
|
29
|
+
trim(both '"' from (
|
|
30
|
+
"public"."get_my_claim"('autopilot_company_id'::text)
|
|
31
|
+
)::text),
|
|
32
|
+
''
|
|
33
|
+
)::uuid;
|
|
34
|
+
$$;
|
|
35
|
+
|
|
36
|
+
alter function "public"."fleet_current_company_id"() owner to "postgres";
|
|
37
|
+
|
|
38
|
+
create or replace function "public"."fleet_has_any_role"(
|
|
39
|
+
"p_company_id" uuid,
|
|
40
|
+
"p_roles" text[]
|
|
41
|
+
)
|
|
42
|
+
returns boolean
|
|
43
|
+
language sql
|
|
44
|
+
stable
|
|
45
|
+
security definer
|
|
46
|
+
set search_path = ''
|
|
47
|
+
as $$
|
|
48
|
+
select
|
|
49
|
+
"p_company_id" is not null
|
|
50
|
+
and "p_company_id" = "public"."fleet_current_company_id"()
|
|
51
|
+
and exists (
|
|
52
|
+
select 1
|
|
53
|
+
from "public"."fleet_member" as "member"
|
|
54
|
+
join "public"."user" as "employee"
|
|
55
|
+
on "employee"."id" = "member"."user_id"
|
|
56
|
+
and "employee"."company_id" = "member"."company_id"
|
|
57
|
+
where "member"."company_id" = "p_company_id"
|
|
58
|
+
and "member"."user_id" = (select auth.uid())
|
|
59
|
+
and "member"."is_active"
|
|
60
|
+
and "member"."role" = any("p_roles")
|
|
61
|
+
and "employee"."is_current_employee"
|
|
62
|
+
and not "employee"."is_hidden"
|
|
63
|
+
);
|
|
64
|
+
$$;
|
|
65
|
+
|
|
66
|
+
alter function "public"."fleet_has_any_role"(uuid, text[]) owner to "postgres";
|
|
67
|
+
|
|
68
|
+
create or replace function "public"."fleet_is_member"("p_company_id" uuid)
|
|
69
|
+
returns boolean
|
|
70
|
+
language sql
|
|
71
|
+
stable
|
|
72
|
+
security definer
|
|
73
|
+
set search_path = ''
|
|
74
|
+
as $$
|
|
75
|
+
select "public"."fleet_has_any_role"(
|
|
76
|
+
"p_company_id",
|
|
77
|
+
array['owner', 'manager', 'operator', 'technician', 'viewer']::text[]
|
|
78
|
+
);
|
|
79
|
+
$$;
|
|
80
|
+
|
|
81
|
+
alter function "public"."fleet_is_member"(uuid) owner to "postgres";
|
|
82
|
+
|
|
83
|
+
create or replace function "public"."fleet_can_bootstrap_owner"(
|
|
84
|
+
"p_company_id" uuid,
|
|
85
|
+
"p_user_id" uuid
|
|
86
|
+
)
|
|
87
|
+
returns boolean
|
|
88
|
+
language sql
|
|
89
|
+
stable
|
|
90
|
+
security definer
|
|
91
|
+
set search_path = ''
|
|
92
|
+
as $$
|
|
93
|
+
select
|
|
94
|
+
"p_company_id" is not null
|
|
95
|
+
and "p_company_id" = "public"."fleet_current_company_id"()
|
|
96
|
+
and "p_user_id" = (select auth.uid())
|
|
97
|
+
and coalesce(
|
|
98
|
+
"public"."get_my_claim"('autopilot_role'::text)::text,
|
|
99
|
+
''::text
|
|
100
|
+
) = '"owner"'::text
|
|
101
|
+
and exists (
|
|
102
|
+
select 1
|
|
103
|
+
from "public"."user_role" as "autopilot_membership"
|
|
104
|
+
where "autopilot_membership"."company_id" = "p_company_id"
|
|
105
|
+
and "autopilot_membership"."user_id" = "p_user_id"
|
|
106
|
+
and "autopilot_membership"."role_id" = 1
|
|
107
|
+
)
|
|
108
|
+
and exists (
|
|
109
|
+
select 1
|
|
110
|
+
from "public"."user" as "employee"
|
|
111
|
+
where "employee"."id" = "p_user_id"
|
|
112
|
+
and "employee"."company_id" = "p_company_id"
|
|
113
|
+
and "employee"."is_current_employee"
|
|
114
|
+
and not "employee"."is_hidden"
|
|
115
|
+
)
|
|
116
|
+
-- Permit recovery when old Fleet rows exist but no current, visible
|
|
117
|
+
-- employee still holds active Fleet ownership. The canonical
|
|
118
|
+
-- Autopilot owner can reactivate/upgrade their own membership below.
|
|
119
|
+
and not exists (
|
|
120
|
+
select 1
|
|
121
|
+
from "public"."fleet_member" as "existing_owner"
|
|
122
|
+
join "public"."user" as "owner_employee"
|
|
123
|
+
on "owner_employee"."id" = "existing_owner"."user_id"
|
|
124
|
+
and "owner_employee"."company_id" = "existing_owner"."company_id"
|
|
125
|
+
where "existing_owner"."company_id" = "p_company_id"
|
|
126
|
+
and "existing_owner"."user_id" <> "p_user_id"
|
|
127
|
+
and "existing_owner"."role" = 'owner'
|
|
128
|
+
and "existing_owner"."is_active"
|
|
129
|
+
and "owner_employee"."is_current_employee"
|
|
130
|
+
and not "owner_employee"."is_hidden"
|
|
131
|
+
);
|
|
132
|
+
$$;
|
|
133
|
+
|
|
134
|
+
alter function "public"."fleet_can_bootstrap_owner"(uuid, uuid)
|
|
135
|
+
owner to "postgres";
|
|
136
|
+
|
|
137
|
+
create or replace function "public"."fleet_can_edit_inspection"(
|
|
138
|
+
"p_company_id" uuid,
|
|
139
|
+
"p_inspection_id" uuid
|
|
140
|
+
)
|
|
141
|
+
returns boolean
|
|
142
|
+
language sql
|
|
143
|
+
stable
|
|
144
|
+
security definer
|
|
145
|
+
set search_path = ''
|
|
146
|
+
as $$
|
|
147
|
+
select
|
|
148
|
+
"public"."fleet_has_any_role"(
|
|
149
|
+
"p_company_id",
|
|
150
|
+
array['owner', 'manager', 'operator', 'technician']::text[]
|
|
151
|
+
)
|
|
152
|
+
and exists (
|
|
153
|
+
select 1
|
|
154
|
+
from "public"."fleet_inspection" as "inspection"
|
|
155
|
+
where "inspection"."id" = "p_inspection_id"
|
|
156
|
+
and "inspection"."company_id" = "p_company_id"
|
|
157
|
+
and "inspection"."inspector_user_id" = (select auth.uid())
|
|
158
|
+
and "inspection"."status" = 'draft'
|
|
159
|
+
);
|
|
160
|
+
$$;
|
|
161
|
+
|
|
162
|
+
alter function "public"."fleet_can_edit_inspection"(uuid, uuid)
|
|
163
|
+
owner to "postgres";
|
|
164
|
+
|
|
165
|
+
create or replace function "public"."fleet_can_write_media"(
|
|
166
|
+
"p_company_id" uuid,
|
|
167
|
+
"p_inspection_id" uuid,
|
|
168
|
+
"p_answer_id" uuid,
|
|
169
|
+
"p_issue_id" uuid,
|
|
170
|
+
"p_issue_comment_id" uuid,
|
|
171
|
+
"p_repair_order_id" uuid,
|
|
172
|
+
"p_service_record_id" uuid
|
|
173
|
+
)
|
|
174
|
+
returns boolean
|
|
175
|
+
language sql
|
|
176
|
+
stable
|
|
177
|
+
security definer
|
|
178
|
+
set search_path = ''
|
|
179
|
+
as $$
|
|
180
|
+
select case
|
|
181
|
+
when "p_inspection_id" is not null then
|
|
182
|
+
"public"."fleet_can_edit_inspection"(
|
|
183
|
+
"p_company_id", "p_inspection_id"
|
|
184
|
+
)
|
|
185
|
+
when "p_answer_id" is not null then
|
|
186
|
+
exists (
|
|
187
|
+
select 1
|
|
188
|
+
from "public"."fleet_inspection_answer" as "answer"
|
|
189
|
+
where "answer"."id" = "p_answer_id"
|
|
190
|
+
and "answer"."company_id" = "p_company_id"
|
|
191
|
+
and "public"."fleet_can_edit_inspection"(
|
|
192
|
+
"p_company_id", "answer"."inspection_id"
|
|
193
|
+
)
|
|
194
|
+
)
|
|
195
|
+
when "p_issue_id" is not null then
|
|
196
|
+
"public"."fleet_has_any_role"(
|
|
197
|
+
"p_company_id",
|
|
198
|
+
array['owner', 'manager', 'operator', 'technician']::text[]
|
|
199
|
+
)
|
|
200
|
+
and exists (
|
|
201
|
+
select 1
|
|
202
|
+
from "public"."fleet_issue" as "issue"
|
|
203
|
+
where "issue"."id" = "p_issue_id"
|
|
204
|
+
and "issue"."company_id" = "p_company_id"
|
|
205
|
+
)
|
|
206
|
+
when "p_issue_comment_id" is not null then
|
|
207
|
+
"public"."fleet_has_any_role"(
|
|
208
|
+
"p_company_id",
|
|
209
|
+
array['owner', 'manager', 'operator', 'technician']::text[]
|
|
210
|
+
)
|
|
211
|
+
and exists (
|
|
212
|
+
select 1
|
|
213
|
+
from "public"."fleet_issue_comment" as "comment"
|
|
214
|
+
where "comment"."id" = "p_issue_comment_id"
|
|
215
|
+
and "comment"."company_id" = "p_company_id"
|
|
216
|
+
)
|
|
217
|
+
when "p_repair_order_id" is not null then
|
|
218
|
+
"public"."fleet_has_any_role"(
|
|
219
|
+
"p_company_id", array['owner', 'manager', 'technician']::text[]
|
|
220
|
+
)
|
|
221
|
+
and exists (
|
|
222
|
+
select 1
|
|
223
|
+
from "public"."fleet_repair_order" as "repair_order"
|
|
224
|
+
where "repair_order"."id" = "p_repair_order_id"
|
|
225
|
+
and "repair_order"."company_id" = "p_company_id"
|
|
226
|
+
)
|
|
227
|
+
when "p_service_record_id" is not null then
|
|
228
|
+
"public"."fleet_has_any_role"(
|
|
229
|
+
"p_company_id", array['owner', 'manager', 'technician']::text[]
|
|
230
|
+
)
|
|
231
|
+
and exists (
|
|
232
|
+
select 1
|
|
233
|
+
from "public"."fleet_service_record" as "service_record"
|
|
234
|
+
where "service_record"."id" = "p_service_record_id"
|
|
235
|
+
and "service_record"."company_id" = "p_company_id"
|
|
236
|
+
)
|
|
237
|
+
else false
|
|
238
|
+
end;
|
|
239
|
+
$$;
|
|
240
|
+
|
|
241
|
+
alter function "public"."fleet_can_write_media"(
|
|
242
|
+
uuid, uuid, uuid, uuid, uuid, uuid, uuid
|
|
243
|
+
) owner to "postgres";
|
|
244
|
+
|
|
245
|
+
-- Keep internal lifecycle functions out of the PostgREST/RPC surface. Trigger
|
|
246
|
+
-- execution does not depend on caller EXECUTE privileges.
|
|
247
|
+
revoke all on function "public"."fleet_set_updated_at"() from public, anon, authenticated;
|
|
248
|
+
revoke all on function "public"."fleet_guard_vehicle_status"()
|
|
249
|
+
from public, anon, authenticated;
|
|
250
|
+
revoke all on function "public"."fleet_prepare_member"() from public, anon, authenticated;
|
|
251
|
+
revoke all on function "public"."fleet_build_form_version_snapshot"(uuid)
|
|
252
|
+
from public, anon, authenticated;
|
|
253
|
+
revoke all on function "public"."fleet_prepare_form_version"() from public, anon, authenticated;
|
|
254
|
+
revoke all on function "public"."fleet_guard_form_version_child"()
|
|
255
|
+
from public, anon, authenticated;
|
|
256
|
+
revoke all on function "public"."fleet_validate_form_assignment"()
|
|
257
|
+
from public, anon, authenticated;
|
|
258
|
+
revoke all on function "public"."fleet_prepare_inspection_answer"()
|
|
259
|
+
from public, anon, authenticated;
|
|
260
|
+
revoke all on function "public"."fleet_question_condition_met"(uuid, uuid, jsonb)
|
|
261
|
+
from public, anon, authenticated;
|
|
262
|
+
revoke all on function "public"."fleet_prepare_inspection"() from public, anon, authenticated;
|
|
263
|
+
revoke all on function "public"."fleet_guard_inspection_media"()
|
|
264
|
+
from public, anon, authenticated;
|
|
265
|
+
revoke all on function "public"."fleet_prepare_issue"() from public, anon, authenticated;
|
|
266
|
+
revoke all on function "public"."fleet_record_issue_status"()
|
|
267
|
+
from public, anon, authenticated;
|
|
268
|
+
revoke all on function "public"."fleet_reject_mutation"() from public, anon, authenticated;
|
|
269
|
+
revoke all on function "public"."fleet_prepare_repair_order"()
|
|
270
|
+
from public, anon, authenticated;
|
|
271
|
+
revoke all on function "public"."fleet_guard_repair_line_item"()
|
|
272
|
+
from public, anon, authenticated;
|
|
273
|
+
revoke all on function "public"."fleet_prepare_pm_schedule"()
|
|
274
|
+
from public, anon, authenticated;
|
|
275
|
+
revoke all on function "public"."fleet_prepare_service_record"()
|
|
276
|
+
from public, anon, authenticated;
|
|
277
|
+
revoke all on function "public"."fleet_apply_service_record"()
|
|
278
|
+
from public, anon, authenticated;
|
|
279
|
+
revoke all on function "public"."fleet_write_audit_event"()
|
|
280
|
+
from public, anon, authenticated;
|
|
281
|
+
revoke all on function "public"."fleet_seed_default_form_templates"(uuid, uuid)
|
|
282
|
+
from public, anon, authenticated;
|
|
283
|
+
revoke all on function "public"."fleet_seed_default_form_templates_trigger"()
|
|
284
|
+
from public, anon, authenticated;
|
|
285
|
+
|
|
286
|
+
revoke all on function "public"."fleet_current_company_id"()
|
|
287
|
+
from public, anon;
|
|
288
|
+
revoke all on function "public"."fleet_has_any_role"(uuid, text[])
|
|
289
|
+
from public, anon;
|
|
290
|
+
revoke all on function "public"."fleet_is_member"(uuid)
|
|
291
|
+
from public, anon;
|
|
292
|
+
revoke all on function "public"."fleet_can_bootstrap_owner"(uuid, uuid)
|
|
293
|
+
from public, anon;
|
|
294
|
+
revoke all on function "public"."fleet_can_edit_inspection"(uuid, uuid)
|
|
295
|
+
from public, anon;
|
|
296
|
+
revoke all on function "public"."fleet_can_write_media"(
|
|
297
|
+
uuid, uuid, uuid, uuid, uuid, uuid, uuid
|
|
298
|
+
) from public, anon;
|
|
299
|
+
|
|
300
|
+
grant execute on function "public"."fleet_current_company_id"()
|
|
301
|
+
to authenticated, service_role;
|
|
302
|
+
grant execute on function "public"."fleet_has_any_role"(uuid, text[])
|
|
303
|
+
to authenticated, service_role;
|
|
304
|
+
grant execute on function "public"."fleet_is_member"(uuid)
|
|
305
|
+
to authenticated, service_role;
|
|
306
|
+
grant execute on function "public"."fleet_can_bootstrap_owner"(uuid, uuid)
|
|
307
|
+
to authenticated, service_role;
|
|
308
|
+
grant execute on function "public"."fleet_can_edit_inspection"(uuid, uuid)
|
|
309
|
+
to authenticated, service_role;
|
|
310
|
+
grant execute on function "public"."fleet_can_write_media"(
|
|
311
|
+
uuid, uuid, uuid, uuid, uuid, uuid, uuid
|
|
312
|
+
) to authenticated, service_role;
|
|
313
|
+
grant execute on function "public"."fleet_seed_default_form_templates"(uuid, uuid)
|
|
314
|
+
to service_role;
|
|
315
|
+
|
|
316
|
+
-- ============================================================
|
|
317
|
+
-- RLS enablement and base grants
|
|
318
|
+
-- ============================================================
|
|
319
|
+
|
|
320
|
+
alter table "public"."fleet_organization" enable row level security;
|
|
321
|
+
alter table "public"."fleet_member" enable row level security;
|
|
322
|
+
alter table "public"."fleet_vehicle" enable row level security;
|
|
323
|
+
alter table "public"."fleet_form_template" enable row level security;
|
|
324
|
+
alter table "public"."fleet_form_template_version" enable row level security;
|
|
325
|
+
alter table "public"."fleet_form_section" enable row level security;
|
|
326
|
+
alter table "public"."fleet_form_question" enable row level security;
|
|
327
|
+
alter table "public"."fleet_form_assignment" enable row level security;
|
|
328
|
+
alter table "public"."fleet_inspection" enable row level security;
|
|
329
|
+
alter table "public"."fleet_inspection_answer" enable row level security;
|
|
330
|
+
alter table "public"."fleet_media" enable row level security;
|
|
331
|
+
alter table "public"."fleet_issue" enable row level security;
|
|
332
|
+
alter table "public"."fleet_issue_status_history" enable row level security;
|
|
333
|
+
alter table "public"."fleet_issue_comment" enable row level security;
|
|
334
|
+
alter table "public"."fleet_repair_order" enable row level security;
|
|
335
|
+
alter table "public"."fleet_repair_order_line_item" enable row level security;
|
|
336
|
+
alter table "public"."fleet_pm_schedule" enable row level security;
|
|
337
|
+
alter table "public"."fleet_service_record" enable row level security;
|
|
338
|
+
alter table "public"."fleet_notification_preference" enable row level security;
|
|
339
|
+
alter table "public"."fleet_audit_event" enable row level security;
|
|
340
|
+
|
|
341
|
+
do $$
|
|
342
|
+
declare
|
|
343
|
+
"v_table" text;
|
|
344
|
+
begin
|
|
345
|
+
foreach "v_table" in array array[
|
|
346
|
+
'fleet_organization', 'fleet_member', 'fleet_vehicle',
|
|
347
|
+
'fleet_form_template', 'fleet_form_template_version',
|
|
348
|
+
'fleet_form_section', 'fleet_form_question', 'fleet_form_assignment',
|
|
349
|
+
'fleet_inspection', 'fleet_inspection_answer', 'fleet_media',
|
|
350
|
+
'fleet_issue', 'fleet_issue_status_history', 'fleet_issue_comment',
|
|
351
|
+
'fleet_repair_order', 'fleet_repair_order_line_item',
|
|
352
|
+
'fleet_pm_schedule', 'fleet_service_record',
|
|
353
|
+
'fleet_notification_preference', 'fleet_audit_event'
|
|
354
|
+
]
|
|
355
|
+
loop
|
|
356
|
+
execute format(
|
|
357
|
+
'revoke all on table public.%I from public, anon, authenticated',
|
|
358
|
+
"v_table"
|
|
359
|
+
);
|
|
360
|
+
execute format('grant all on table public.%I to service_role', "v_table");
|
|
361
|
+
end loop;
|
|
362
|
+
end;
|
|
363
|
+
$$;
|
|
364
|
+
|
|
365
|
+
grant select, insert, update on table "public"."fleet_organization" to authenticated;
|
|
366
|
+
grant select, insert, update on table "public"."fleet_member" to authenticated;
|
|
367
|
+
grant select, insert, update on table "public"."fleet_vehicle" to authenticated;
|
|
368
|
+
grant select, insert, update on table "public"."fleet_form_template" to authenticated;
|
|
369
|
+
grant select, insert, update, delete on table "public"."fleet_form_template_version"
|
|
370
|
+
to authenticated;
|
|
371
|
+
grant select, insert, update, delete on table "public"."fleet_form_section"
|
|
372
|
+
to authenticated;
|
|
373
|
+
grant select, insert, update, delete on table "public"."fleet_form_question"
|
|
374
|
+
to authenticated;
|
|
375
|
+
grant select, insert, update, delete on table "public"."fleet_form_assignment"
|
|
376
|
+
to authenticated;
|
|
377
|
+
grant select, insert, update on table "public"."fleet_inspection" to authenticated;
|
|
378
|
+
grant select, insert, update, delete on table "public"."fleet_inspection_answer"
|
|
379
|
+
to authenticated;
|
|
380
|
+
grant select, insert, update, delete on table "public"."fleet_media" to authenticated;
|
|
381
|
+
grant select, insert, update on table "public"."fleet_issue" to authenticated;
|
|
382
|
+
grant select on table "public"."fleet_issue_status_history" to authenticated;
|
|
383
|
+
grant select, insert on table "public"."fleet_issue_comment" to authenticated;
|
|
384
|
+
grant select, insert, update on table "public"."fleet_repair_order" to authenticated;
|
|
385
|
+
grant select, insert, update, delete on table "public"."fleet_repair_order_line_item"
|
|
386
|
+
to authenticated;
|
|
387
|
+
grant select, insert, update on table "public"."fleet_pm_schedule" to authenticated;
|
|
388
|
+
grant select, insert, update on table "public"."fleet_service_record" to authenticated;
|
|
389
|
+
grant select, insert, update, delete on table "public"."fleet_notification_preference"
|
|
390
|
+
to authenticated;
|
|
391
|
+
grant select on table "public"."fleet_audit_event" to authenticated;
|
|
392
|
+
|
|
393
|
+
-- ============================================================
|
|
394
|
+
-- Organization, membership, vehicles, and form configuration
|
|
395
|
+
-- ============================================================
|
|
396
|
+
|
|
397
|
+
create policy "Fleet members can view their organization"
|
|
398
|
+
on "public"."fleet_organization"
|
|
399
|
+
for select to authenticated
|
|
400
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
401
|
+
|
|
402
|
+
create policy "Autopilot owner can create first Fleet organization"
|
|
403
|
+
on "public"."fleet_organization"
|
|
404
|
+
for insert to authenticated
|
|
405
|
+
with check ((select "public"."fleet_can_bootstrap_owner"(
|
|
406
|
+
"company_id", (select auth.uid())
|
|
407
|
+
)) and "created_by" = (select auth.uid()));
|
|
408
|
+
|
|
409
|
+
create policy "Fleet owners and managers can update organization"
|
|
410
|
+
on "public"."fleet_organization"
|
|
411
|
+
for update to authenticated
|
|
412
|
+
using ((select "public"."fleet_has_any_role"(
|
|
413
|
+
"company_id", array['owner', 'manager']::text[]
|
|
414
|
+
)))
|
|
415
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
416
|
+
"company_id", array['owner', 'manager']::text[]
|
|
417
|
+
)));
|
|
418
|
+
|
|
419
|
+
create policy "Fleet members can view memberships"
|
|
420
|
+
on "public"."fleet_member"
|
|
421
|
+
for select to authenticated
|
|
422
|
+
using (
|
|
423
|
+
(select "public"."fleet_is_member"("company_id"))
|
|
424
|
+
or (
|
|
425
|
+
"user_id" = (select auth.uid())
|
|
426
|
+
and (select "public"."fleet_can_bootstrap_owner"(
|
|
427
|
+
"company_id", "user_id"
|
|
428
|
+
))
|
|
429
|
+
)
|
|
430
|
+
);
|
|
431
|
+
|
|
432
|
+
create policy "Fleet owner bootstrap or leadership can add memberships"
|
|
433
|
+
on "public"."fleet_member"
|
|
434
|
+
for insert to authenticated
|
|
435
|
+
with check (
|
|
436
|
+
"created_by" = (select auth.uid())
|
|
437
|
+
and (
|
|
438
|
+
(select "public"."fleet_has_any_role"(
|
|
439
|
+
"company_id", array['owner']::text[]
|
|
440
|
+
))
|
|
441
|
+
or (
|
|
442
|
+
"role" <> 'owner'
|
|
443
|
+
and (select "public"."fleet_has_any_role"(
|
|
444
|
+
"company_id", array['manager']::text[]
|
|
445
|
+
))
|
|
446
|
+
)
|
|
447
|
+
or (
|
|
448
|
+
"role" = 'owner'
|
|
449
|
+
and "is_active"
|
|
450
|
+
and (select "public"."fleet_can_bootstrap_owner"(
|
|
451
|
+
"company_id", "user_id"
|
|
452
|
+
))
|
|
453
|
+
)
|
|
454
|
+
)
|
|
455
|
+
);
|
|
456
|
+
|
|
457
|
+
create policy "Fleet leadership can update memberships"
|
|
458
|
+
on "public"."fleet_member"
|
|
459
|
+
for update to authenticated
|
|
460
|
+
using (
|
|
461
|
+
(select "public"."fleet_has_any_role"(
|
|
462
|
+
"company_id", array['owner']::text[]
|
|
463
|
+
))
|
|
464
|
+
or (
|
|
465
|
+
"role" <> 'owner'
|
|
466
|
+
and (select "public"."fleet_has_any_role"(
|
|
467
|
+
"company_id", array['manager']::text[]
|
|
468
|
+
))
|
|
469
|
+
)
|
|
470
|
+
or (
|
|
471
|
+
"user_id" = (select auth.uid())
|
|
472
|
+
and (select "public"."fleet_can_bootstrap_owner"(
|
|
473
|
+
"company_id", "user_id"
|
|
474
|
+
))
|
|
475
|
+
)
|
|
476
|
+
)
|
|
477
|
+
with check (
|
|
478
|
+
(select "public"."fleet_has_any_role"(
|
|
479
|
+
"company_id", array['owner']::text[]
|
|
480
|
+
))
|
|
481
|
+
or (
|
|
482
|
+
"role" <> 'owner'
|
|
483
|
+
and (select "public"."fleet_has_any_role"(
|
|
484
|
+
"company_id", array['manager']::text[]
|
|
485
|
+
))
|
|
486
|
+
)
|
|
487
|
+
or (
|
|
488
|
+
"user_id" = (select auth.uid())
|
|
489
|
+
and "role" = 'owner'
|
|
490
|
+
and "is_active"
|
|
491
|
+
and (select "public"."fleet_can_bootstrap_owner"(
|
|
492
|
+
"company_id", "user_id"
|
|
493
|
+
))
|
|
494
|
+
)
|
|
495
|
+
);
|
|
496
|
+
|
|
497
|
+
create policy "Fleet members can view vehicles"
|
|
498
|
+
on "public"."fleet_vehicle"
|
|
499
|
+
for select to authenticated
|
|
500
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
501
|
+
|
|
502
|
+
create policy "Fleet owners and managers can add vehicles"
|
|
503
|
+
on "public"."fleet_vehicle"
|
|
504
|
+
for insert to authenticated
|
|
505
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
506
|
+
"company_id", array['owner', 'manager']::text[]
|
|
507
|
+
)) and "created_by" = (select auth.uid()));
|
|
508
|
+
|
|
509
|
+
create policy "Fleet owners and managers can update vehicles"
|
|
510
|
+
on "public"."fleet_vehicle"
|
|
511
|
+
for update to authenticated
|
|
512
|
+
using ((select "public"."fleet_has_any_role"(
|
|
513
|
+
"company_id", array['owner', 'manager']::text[]
|
|
514
|
+
)))
|
|
515
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
516
|
+
"company_id", array['owner', 'manager']::text[]
|
|
517
|
+
)));
|
|
518
|
+
|
|
519
|
+
create policy "Fleet members can view form templates"
|
|
520
|
+
on "public"."fleet_form_template"
|
|
521
|
+
for select to authenticated
|
|
522
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
523
|
+
|
|
524
|
+
create policy "Fleet leadership can add form templates"
|
|
525
|
+
on "public"."fleet_form_template"
|
|
526
|
+
for insert to authenticated
|
|
527
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
528
|
+
"company_id", array['owner', 'manager']::text[]
|
|
529
|
+
)) and "created_by" = (select auth.uid()));
|
|
530
|
+
|
|
531
|
+
create policy "Fleet leadership can update form templates"
|
|
532
|
+
on "public"."fleet_form_template"
|
|
533
|
+
for update to authenticated
|
|
534
|
+
using ((select "public"."fleet_has_any_role"(
|
|
535
|
+
"company_id", array['owner', 'manager']::text[]
|
|
536
|
+
)))
|
|
537
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
538
|
+
"company_id", array['owner', 'manager']::text[]
|
|
539
|
+
)));
|
|
540
|
+
|
|
541
|
+
create policy "Fleet members can view form versions"
|
|
542
|
+
on "public"."fleet_form_template_version"
|
|
543
|
+
for select to authenticated
|
|
544
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
545
|
+
|
|
546
|
+
create policy "Fleet leadership can add form versions"
|
|
547
|
+
on "public"."fleet_form_template_version"
|
|
548
|
+
for insert to authenticated
|
|
549
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
550
|
+
"company_id", array['owner', 'manager']::text[]
|
|
551
|
+
)) and "created_by" = (select auth.uid()));
|
|
552
|
+
|
|
553
|
+
create policy "Fleet leadership can update form versions"
|
|
554
|
+
on "public"."fleet_form_template_version"
|
|
555
|
+
for update to authenticated
|
|
556
|
+
using ((select "public"."fleet_has_any_role"(
|
|
557
|
+
"company_id", array['owner', 'manager']::text[]
|
|
558
|
+
)))
|
|
559
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
560
|
+
"company_id", array['owner', 'manager']::text[]
|
|
561
|
+
)));
|
|
562
|
+
|
|
563
|
+
create policy "Fleet leadership can delete draft form versions"
|
|
564
|
+
on "public"."fleet_form_template_version"
|
|
565
|
+
for delete to authenticated
|
|
566
|
+
using (
|
|
567
|
+
"status" = 'draft'
|
|
568
|
+
and (select "public"."fleet_has_any_role"(
|
|
569
|
+
"company_id", array['owner', 'manager']::text[]
|
|
570
|
+
))
|
|
571
|
+
);
|
|
572
|
+
|
|
573
|
+
create policy "Fleet members can view form sections"
|
|
574
|
+
on "public"."fleet_form_section"
|
|
575
|
+
for select to authenticated
|
|
576
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
577
|
+
|
|
578
|
+
create policy "Fleet leadership can add form sections"
|
|
579
|
+
on "public"."fleet_form_section"
|
|
580
|
+
for insert to authenticated
|
|
581
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
582
|
+
"company_id", array['owner', 'manager']::text[]
|
|
583
|
+
)));
|
|
584
|
+
|
|
585
|
+
create policy "Fleet leadership can update form sections"
|
|
586
|
+
on "public"."fleet_form_section"
|
|
587
|
+
for update to authenticated
|
|
588
|
+
using ((select "public"."fleet_has_any_role"(
|
|
589
|
+
"company_id", array['owner', 'manager']::text[]
|
|
590
|
+
)))
|
|
591
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
592
|
+
"company_id", array['owner', 'manager']::text[]
|
|
593
|
+
)));
|
|
594
|
+
|
|
595
|
+
create policy "Fleet leadership can delete form sections"
|
|
596
|
+
on "public"."fleet_form_section"
|
|
597
|
+
for delete to authenticated
|
|
598
|
+
using ((select "public"."fleet_has_any_role"(
|
|
599
|
+
"company_id", array['owner', 'manager']::text[]
|
|
600
|
+
)));
|
|
601
|
+
|
|
602
|
+
create policy "Fleet members can view form questions"
|
|
603
|
+
on "public"."fleet_form_question"
|
|
604
|
+
for select to authenticated
|
|
605
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
606
|
+
|
|
607
|
+
create policy "Fleet leadership can add form questions"
|
|
608
|
+
on "public"."fleet_form_question"
|
|
609
|
+
for insert to authenticated
|
|
610
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
611
|
+
"company_id", array['owner', 'manager']::text[]
|
|
612
|
+
)));
|
|
613
|
+
|
|
614
|
+
create policy "Fleet leadership can update form questions"
|
|
615
|
+
on "public"."fleet_form_question"
|
|
616
|
+
for update to authenticated
|
|
617
|
+
using ((select "public"."fleet_has_any_role"(
|
|
618
|
+
"company_id", array['owner', 'manager']::text[]
|
|
619
|
+
)))
|
|
620
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
621
|
+
"company_id", array['owner', 'manager']::text[]
|
|
622
|
+
)));
|
|
623
|
+
|
|
624
|
+
create policy "Fleet leadership can delete form questions"
|
|
625
|
+
on "public"."fleet_form_question"
|
|
626
|
+
for delete to authenticated
|
|
627
|
+
using ((select "public"."fleet_has_any_role"(
|
|
628
|
+
"company_id", array['owner', 'manager']::text[]
|
|
629
|
+
)));
|
|
630
|
+
|
|
631
|
+
create policy "Fleet members can view form assignments"
|
|
632
|
+
on "public"."fleet_form_assignment"
|
|
633
|
+
for select to authenticated
|
|
634
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
635
|
+
|
|
636
|
+
create policy "Fleet leadership can add form assignments"
|
|
637
|
+
on "public"."fleet_form_assignment"
|
|
638
|
+
for insert to authenticated
|
|
639
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
640
|
+
"company_id", array['owner', 'manager']::text[]
|
|
641
|
+
)) and "created_by" = (select auth.uid()));
|
|
642
|
+
|
|
643
|
+
create policy "Fleet leadership can update form assignments"
|
|
644
|
+
on "public"."fleet_form_assignment"
|
|
645
|
+
for update to authenticated
|
|
646
|
+
using ((select "public"."fleet_has_any_role"(
|
|
647
|
+
"company_id", array['owner', 'manager']::text[]
|
|
648
|
+
)))
|
|
649
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
650
|
+
"company_id", array['owner', 'manager']::text[]
|
|
651
|
+
)));
|
|
652
|
+
|
|
653
|
+
create policy "Fleet leadership can delete form assignments"
|
|
654
|
+
on "public"."fleet_form_assignment"
|
|
655
|
+
for delete to authenticated
|
|
656
|
+
using ((select "public"."fleet_has_any_role"(
|
|
657
|
+
"company_id", array['owner', 'manager']::text[]
|
|
658
|
+
)));
|
|
659
|
+
|
|
660
|
+
-- ============================================================
|
|
661
|
+
-- Inspection execution, evidence, and issue lifecycle
|
|
662
|
+
-- ============================================================
|
|
663
|
+
|
|
664
|
+
create policy "Fleet members can view inspections"
|
|
665
|
+
on "public"."fleet_inspection"
|
|
666
|
+
for select to authenticated
|
|
667
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
668
|
+
|
|
669
|
+
create policy "Fleet operational roles can start inspections"
|
|
670
|
+
on "public"."fleet_inspection"
|
|
671
|
+
for insert to authenticated
|
|
672
|
+
with check (
|
|
673
|
+
"inspector_user_id" = (select auth.uid())
|
|
674
|
+
and "created_by" = (select auth.uid())
|
|
675
|
+
and (select "public"."fleet_has_any_role"(
|
|
676
|
+
"company_id", array['owner', 'manager', 'operator', 'technician']::text[]
|
|
677
|
+
))
|
|
678
|
+
);
|
|
679
|
+
|
|
680
|
+
create policy "Fleet inspectors can update their drafts"
|
|
681
|
+
on "public"."fleet_inspection"
|
|
682
|
+
for update to authenticated
|
|
683
|
+
using ((select "public"."fleet_can_edit_inspection"(
|
|
684
|
+
"company_id", "id"
|
|
685
|
+
)))
|
|
686
|
+
with check (
|
|
687
|
+
"inspector_user_id" = (select auth.uid())
|
|
688
|
+
and (select "public"."fleet_has_any_role"(
|
|
689
|
+
"company_id", array['owner', 'manager', 'operator', 'technician']::text[]
|
|
690
|
+
))
|
|
691
|
+
);
|
|
692
|
+
|
|
693
|
+
create policy "Fleet members can view inspection answers"
|
|
694
|
+
on "public"."fleet_inspection_answer"
|
|
695
|
+
for select to authenticated
|
|
696
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
697
|
+
|
|
698
|
+
create policy "Fleet inspection editors can add answers"
|
|
699
|
+
on "public"."fleet_inspection_answer"
|
|
700
|
+
for insert to authenticated
|
|
701
|
+
with check (
|
|
702
|
+
(select "public"."fleet_can_edit_inspection"(
|
|
703
|
+
"company_id", "inspection_id"
|
|
704
|
+
))
|
|
705
|
+
and "answered_by" = (select auth.uid())
|
|
706
|
+
);
|
|
707
|
+
|
|
708
|
+
create policy "Fleet inspection editors can update answers"
|
|
709
|
+
on "public"."fleet_inspection_answer"
|
|
710
|
+
for update to authenticated
|
|
711
|
+
using (
|
|
712
|
+
"answered_by" = (select auth.uid())
|
|
713
|
+
and (select "public"."fleet_can_edit_inspection"(
|
|
714
|
+
"company_id", "inspection_id"
|
|
715
|
+
))
|
|
716
|
+
)
|
|
717
|
+
with check (
|
|
718
|
+
(select "public"."fleet_can_edit_inspection"(
|
|
719
|
+
"company_id", "inspection_id"
|
|
720
|
+
))
|
|
721
|
+
and "answered_by" = (select auth.uid())
|
|
722
|
+
);
|
|
723
|
+
|
|
724
|
+
create policy "Fleet inspection editors can delete draft answers"
|
|
725
|
+
on "public"."fleet_inspection_answer"
|
|
726
|
+
for delete to authenticated
|
|
727
|
+
using ((select "public"."fleet_can_edit_inspection"(
|
|
728
|
+
"company_id", "inspection_id"
|
|
729
|
+
)) and "answered_by" = (select auth.uid()));
|
|
730
|
+
|
|
731
|
+
create policy "Fleet members can view media metadata"
|
|
732
|
+
on "public"."fleet_media"
|
|
733
|
+
for select to authenticated
|
|
734
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
735
|
+
|
|
736
|
+
create policy "Fleet operational roles can add media metadata"
|
|
737
|
+
on "public"."fleet_media"
|
|
738
|
+
for insert to authenticated
|
|
739
|
+
with check (
|
|
740
|
+
"uploaded_by" = (select auth.uid())
|
|
741
|
+
and "storage_bucket" = 'fleet-media'
|
|
742
|
+
and ("storage"."foldername"("storage_object_path"))[1] = "company_id"::text
|
|
743
|
+
and ("storage"."foldername"("storage_object_path"))[2]
|
|
744
|
+
= (select auth.uid()::text)
|
|
745
|
+
and (select "public"."fleet_can_write_media"(
|
|
746
|
+
"company_id", "inspection_id", "answer_id", "issue_id",
|
|
747
|
+
"issue_comment_id", "repair_order_id", "service_record_id"
|
|
748
|
+
))
|
|
749
|
+
);
|
|
750
|
+
|
|
751
|
+
create policy "Fleet media uploaders can update authorized metadata"
|
|
752
|
+
on "public"."fleet_media"
|
|
753
|
+
for update to authenticated
|
|
754
|
+
using (
|
|
755
|
+
"uploaded_by" = (select auth.uid())
|
|
756
|
+
and (select "public"."fleet_can_write_media"(
|
|
757
|
+
"company_id", "inspection_id", "answer_id", "issue_id",
|
|
758
|
+
"issue_comment_id", "repair_order_id", "service_record_id"
|
|
759
|
+
))
|
|
760
|
+
)
|
|
761
|
+
with check (
|
|
762
|
+
"uploaded_by" = (select auth.uid())
|
|
763
|
+
and "storage_bucket" = 'fleet-media'
|
|
764
|
+
and ("storage"."foldername"("storage_object_path"))[1] = "company_id"::text
|
|
765
|
+
and ("storage"."foldername"("storage_object_path"))[2]
|
|
766
|
+
= (select auth.uid()::text)
|
|
767
|
+
and (select "public"."fleet_can_write_media"(
|
|
768
|
+
"company_id", "inspection_id", "answer_id", "issue_id",
|
|
769
|
+
"issue_comment_id", "repair_order_id", "service_record_id"
|
|
770
|
+
))
|
|
771
|
+
);
|
|
772
|
+
|
|
773
|
+
create policy "Fleet media uploaders can delete authorized metadata"
|
|
774
|
+
on "public"."fleet_media"
|
|
775
|
+
for delete to authenticated
|
|
776
|
+
using (
|
|
777
|
+
"uploaded_by" = (select auth.uid())
|
|
778
|
+
and (select "public"."fleet_can_write_media"(
|
|
779
|
+
"company_id", "inspection_id", "answer_id", "issue_id",
|
|
780
|
+
"issue_comment_id", "repair_order_id", "service_record_id"
|
|
781
|
+
))
|
|
782
|
+
);
|
|
783
|
+
|
|
784
|
+
create policy "Fleet members can view issues"
|
|
785
|
+
on "public"."fleet_issue"
|
|
786
|
+
for select to authenticated
|
|
787
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
788
|
+
|
|
789
|
+
create policy "Fleet operational roles can report issues"
|
|
790
|
+
on "public"."fleet_issue"
|
|
791
|
+
for insert to authenticated
|
|
792
|
+
with check (
|
|
793
|
+
"reported_by" = (select auth.uid())
|
|
794
|
+
and
|
|
795
|
+
(select "public"."fleet_has_any_role"(
|
|
796
|
+
"company_id", array['owner', 'manager', 'operator', 'technician']::text[]
|
|
797
|
+
))
|
|
798
|
+
);
|
|
799
|
+
|
|
800
|
+
create policy "Fleet leadership and technicians can update issues"
|
|
801
|
+
on "public"."fleet_issue"
|
|
802
|
+
for update to authenticated
|
|
803
|
+
using ((select "public"."fleet_has_any_role"(
|
|
804
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
805
|
+
)))
|
|
806
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
807
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
808
|
+
)));
|
|
809
|
+
|
|
810
|
+
create policy "Fleet members can view issue status history"
|
|
811
|
+
on "public"."fleet_issue_status_history"
|
|
812
|
+
for select to authenticated
|
|
813
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
814
|
+
|
|
815
|
+
create policy "Fleet members can view issue comments"
|
|
816
|
+
on "public"."fleet_issue_comment"
|
|
817
|
+
for select to authenticated
|
|
818
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
819
|
+
|
|
820
|
+
create policy "Fleet operational roles can add issue comments"
|
|
821
|
+
on "public"."fleet_issue_comment"
|
|
822
|
+
for insert to authenticated
|
|
823
|
+
with check (
|
|
824
|
+
"author_user_id" = (select auth.uid())
|
|
825
|
+
and (select "public"."fleet_has_any_role"(
|
|
826
|
+
"company_id", array['owner', 'manager', 'operator', 'technician']::text[]
|
|
827
|
+
))
|
|
828
|
+
);
|
|
829
|
+
|
|
830
|
+
-- ============================================================
|
|
831
|
+
-- Repairs, preventive maintenance, preferences, and audit
|
|
832
|
+
-- ============================================================
|
|
833
|
+
|
|
834
|
+
create policy "Fleet members can view repair orders"
|
|
835
|
+
on "public"."fleet_repair_order"
|
|
836
|
+
for select to authenticated
|
|
837
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
838
|
+
|
|
839
|
+
create policy "Fleet leadership and technicians can add repair orders"
|
|
840
|
+
on "public"."fleet_repair_order"
|
|
841
|
+
for insert to authenticated
|
|
842
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
843
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
844
|
+
)) and "created_by" = (select auth.uid()));
|
|
845
|
+
|
|
846
|
+
create policy "Fleet leadership and technicians can update repair orders"
|
|
847
|
+
on "public"."fleet_repair_order"
|
|
848
|
+
for update to authenticated
|
|
849
|
+
using ((select "public"."fleet_has_any_role"(
|
|
850
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
851
|
+
)))
|
|
852
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
853
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
854
|
+
)));
|
|
855
|
+
|
|
856
|
+
create policy "Fleet members can view repair line items"
|
|
857
|
+
on "public"."fleet_repair_order_line_item"
|
|
858
|
+
for select to authenticated
|
|
859
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
860
|
+
|
|
861
|
+
create policy "Fleet leadership and technicians can add repair line items"
|
|
862
|
+
on "public"."fleet_repair_order_line_item"
|
|
863
|
+
for insert to authenticated
|
|
864
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
865
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
866
|
+
)));
|
|
867
|
+
|
|
868
|
+
create policy "Fleet leadership and technicians can update repair line items"
|
|
869
|
+
on "public"."fleet_repair_order_line_item"
|
|
870
|
+
for update to authenticated
|
|
871
|
+
using ((select "public"."fleet_has_any_role"(
|
|
872
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
873
|
+
)))
|
|
874
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
875
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
876
|
+
)));
|
|
877
|
+
|
|
878
|
+
create policy "Fleet leadership and technicians can delete repair line items"
|
|
879
|
+
on "public"."fleet_repair_order_line_item"
|
|
880
|
+
for delete to authenticated
|
|
881
|
+
using ((select "public"."fleet_has_any_role"(
|
|
882
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
883
|
+
)));
|
|
884
|
+
|
|
885
|
+
create policy "Fleet members can view PM schedules"
|
|
886
|
+
on "public"."fleet_pm_schedule"
|
|
887
|
+
for select to authenticated
|
|
888
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
889
|
+
|
|
890
|
+
create policy "Fleet leadership and technicians can add PM schedules"
|
|
891
|
+
on "public"."fleet_pm_schedule"
|
|
892
|
+
for insert to authenticated
|
|
893
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
894
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
895
|
+
)) and "created_by" = (select auth.uid()));
|
|
896
|
+
|
|
897
|
+
create policy "Fleet leadership and technicians can update PM schedules"
|
|
898
|
+
on "public"."fleet_pm_schedule"
|
|
899
|
+
for update to authenticated
|
|
900
|
+
using ((select "public"."fleet_has_any_role"(
|
|
901
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
902
|
+
)))
|
|
903
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
904
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
905
|
+
)));
|
|
906
|
+
|
|
907
|
+
create policy "Fleet members can view service records"
|
|
908
|
+
on "public"."fleet_service_record"
|
|
909
|
+
for select to authenticated
|
|
910
|
+
using ((select "public"."fleet_is_member"("company_id")));
|
|
911
|
+
|
|
912
|
+
create policy "Fleet leadership and technicians can add service records"
|
|
913
|
+
on "public"."fleet_service_record"
|
|
914
|
+
for insert to authenticated
|
|
915
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
916
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
917
|
+
))
|
|
918
|
+
and "created_by" = (select auth.uid())
|
|
919
|
+
and (
|
|
920
|
+
"performed_by_user_id" is null
|
|
921
|
+
or "performed_by_user_id" = (select auth.uid())
|
|
922
|
+
));
|
|
923
|
+
|
|
924
|
+
create policy "Fleet leadership and technicians can correct service notes"
|
|
925
|
+
on "public"."fleet_service_record"
|
|
926
|
+
for update to authenticated
|
|
927
|
+
using ((select "public"."fleet_has_any_role"(
|
|
928
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
929
|
+
)))
|
|
930
|
+
with check ((select "public"."fleet_has_any_role"(
|
|
931
|
+
"company_id", array['owner', 'manager', 'technician']::text[]
|
|
932
|
+
)));
|
|
933
|
+
|
|
934
|
+
create policy "Fleet users or leadership can view notification preferences"
|
|
935
|
+
on "public"."fleet_notification_preference"
|
|
936
|
+
for select to authenticated
|
|
937
|
+
using (
|
|
938
|
+
(
|
|
939
|
+
"user_id" = (select auth.uid())
|
|
940
|
+
and (select "public"."fleet_is_member"("company_id"))
|
|
941
|
+
)
|
|
942
|
+
or (select "public"."fleet_has_any_role"(
|
|
943
|
+
"company_id", array['owner', 'manager']::text[]
|
|
944
|
+
))
|
|
945
|
+
);
|
|
946
|
+
|
|
947
|
+
create policy "Fleet users can add their notification preferences"
|
|
948
|
+
on "public"."fleet_notification_preference"
|
|
949
|
+
for insert to authenticated
|
|
950
|
+
with check (
|
|
951
|
+
"user_id" = (select auth.uid())
|
|
952
|
+
and (select "public"."fleet_is_member"("company_id"))
|
|
953
|
+
);
|
|
954
|
+
|
|
955
|
+
create policy "Fleet users can update their notification preferences"
|
|
956
|
+
on "public"."fleet_notification_preference"
|
|
957
|
+
for update to authenticated
|
|
958
|
+
using (
|
|
959
|
+
"user_id" = (select auth.uid())
|
|
960
|
+
and (select "public"."fleet_is_member"("company_id"))
|
|
961
|
+
)
|
|
962
|
+
with check (
|
|
963
|
+
"user_id" = (select auth.uid())
|
|
964
|
+
and (select "public"."fleet_is_member"("company_id"))
|
|
965
|
+
);
|
|
966
|
+
|
|
967
|
+
create policy "Fleet users can delete their notification preferences"
|
|
968
|
+
on "public"."fleet_notification_preference"
|
|
969
|
+
for delete to authenticated
|
|
970
|
+
using (
|
|
971
|
+
"user_id" = (select auth.uid())
|
|
972
|
+
and (select "public"."fleet_is_member"("company_id"))
|
|
973
|
+
);
|
|
974
|
+
|
|
975
|
+
create policy "Fleet reporting roles can view audit events"
|
|
976
|
+
on "public"."fleet_audit_event"
|
|
977
|
+
for select to authenticated
|
|
978
|
+
using ((select "public"."fleet_has_any_role"(
|
|
979
|
+
"company_id", array['owner', 'manager']::text[]
|
|
980
|
+
)));
|
|
981
|
+
|
|
982
|
+
-- ============================================================
|
|
983
|
+
-- Private Supabase Storage objects
|
|
984
|
+
-- ============================================================
|
|
985
|
+
|
|
986
|
+
create policy "Fleet members can read tenant media objects"
|
|
987
|
+
on "storage"."objects"
|
|
988
|
+
for select to authenticated
|
|
989
|
+
using (
|
|
990
|
+
"bucket_id" = 'fleet-media'
|
|
991
|
+
and ("storage"."foldername"("name"))[1]
|
|
992
|
+
= (select "public"."fleet_current_company_id"()::text)
|
|
993
|
+
and (select "public"."fleet_is_member"(
|
|
994
|
+
"public"."fleet_current_company_id"()
|
|
995
|
+
))
|
|
996
|
+
);
|
|
997
|
+
|
|
998
|
+
create policy "Fleet operational roles can upload tenant media objects"
|
|
999
|
+
on "storage"."objects"
|
|
1000
|
+
for insert to authenticated
|
|
1001
|
+
with check (
|
|
1002
|
+
"bucket_id" = 'fleet-media'
|
|
1003
|
+
and ("storage"."foldername"("name"))[1]
|
|
1004
|
+
= (select "public"."fleet_current_company_id"()::text)
|
|
1005
|
+
and ("storage"."foldername"("name"))[2]
|
|
1006
|
+
= (select auth.uid()::text)
|
|
1007
|
+
and (select "public"."fleet_has_any_role"(
|
|
1008
|
+
"public"."fleet_current_company_id"(),
|
|
1009
|
+
array['owner', 'manager', 'operator', 'technician']::text[]
|
|
1010
|
+
))
|
|
1011
|
+
);
|