Skip to content

🗃️ Base de datos en Supabase

La base de datos de FixBoard se aloja en Supabase (PostgreSQL) y aplica RLS para aislamiento multi-tenant.


📦 Tablas principales

TablaPropósitoClaves relevantes
tenantsTenants (talleres)id (uuid, PK)
usersUsuarios autenticadosid (uuid, PK), tenant_id (FK)
clientsClientes finalesid (uuid, PK), tenant_id (FK)
repair_itemsReparacionesid (uuid), client_id (FK), tenant_id (FK), status
notificationsMensajes enviadosid (uuid), repair_id (FK), type, status
events_logAuditoría y eventosid (uuid), entity, action, meta, created_at

🔗 Relaciones

mermaid
erDiagram
TENANTS ||--o{ USERS : has
TENANTS ||--o{ CLIENTS : has
CLIENTS ||--o{ REPAIR_ITEMS : owns
REPAIR_ITEMS ||--o{ NOTIFICATIONS : triggers
REPAIR_ITEMS ||--o{ EVENTS_LOG : logs

👁️‍🗨️ Vistas

  • repair_summary — agregados por estado, tiempos medios y conteos por tenant.

    Definida con SECURITY DEFINER para exponer métricas sin romper RLS.


⚙️ Funciones y triggers

  • log_repair_status_change() — registra cambios de estado de reparaciones en events_log.
  • Triggers AFTER UPDATE sobre repair_items(status).

🔒 Políticas RLS (ejemplos)

sql
create policy "tenant_isolation_select_clients"
on public.clients
for select
using (tenant_id::text = auth.jwt() ->> 'tenant_id');

create policy "tenant_isolation_ins_clients"
on public.clients
for insert
with check (tenant_id::text = auth.jwt() ->> 'tenant_id');

Asegúrate de habilitar RLS:

sql
alter table public.clients enable row level security;

© FixBoard — Todos los derechos reservados.