2.6 KiB
2.6 KiB
Modelos de Dados
User
Propósito: Representa usuário autenticado do portal (gerenciado pelo Supabase Auth, tabela auth.users)
Atributos Principais:
id: UUID - ID único do usuário (primary key Supabase Auth)email: string - Email do usuário (usado para login)created_at: timestamp - Data de criação da contaupdated_at: timestamp - Última atualização
Interface TypeScript
// Baseado em Supabase Auth User
interface User {
id: string; // UUID
email: string;
created_at: string; // ISO timestamp
updated_at: string; // ISO timestamp
}
Relacionamentos
- One-to-One com
UserSettings - One-to-Many com
GoogleCalendarIntegration
UserSettings
Propósito: Configurações e preferências do usuário específicas do portal
Atributos Principais:
user_id: UUID - FK paraauth.users.idcreated_at: timestamp - Data de criaçãoupdated_at: timestamp - Última atualização
Interface TypeScript
interface UserSettings {
user_id: string; // UUID, FK to auth.users
created_at: string;
updated_at: string;
}
Relacionamentos
- Belongs-to
User(auth.users)
GoogleCalendarIntegration
Propósito: Armazena status de autorização OAuth do Google Calendar por usuário
Atributos Principais:
id: UUID - Primary keyuser_id: UUID - FK paraauth.users.idis_connected: boolean - Status de conexãoconnected_email: string | null - Email da conta Google autorizadaconnected_at: timestamp | null - Data da última autorizaçãocreated_at: timestamp - Data de criaçãoupdated_at: timestamp - Última atualização
Interface TypeScript
interface GoogleCalendarIntegration {
id: string; // UUID
user_id: string; // UUID, FK to auth.users
is_connected: boolean;
connected_email: string | null;
connected_at: string | null; // ISO timestamp
created_at: string;
updated_at: string;
}
Relacionamentos
- Belongs-to
User(auth.users)
WhatsAppInstance
Propósito: Modelo virtual (não armazenado no DB) representando instância EvolutionAPI
Atributos Principais:
instanceName: string - Nome da instânciastatus: 'connected' | 'disconnected' - Status de conexãoqrCode: string | null - Base64 do QR code (quando gerado)
Interface TypeScript
interface WhatsAppInstance {
instanceName: string;
status: 'connected' | 'disconnected';
qrCode?: string | null; // Base64 image
}
Relacionamentos
- Não persistido no Supabase (dados efêmeros da EvolutionAPI)