Marketplace móvil para negocios locales mexicanos. Estructura inicial: - apps/backend (NestJS API) - apps/frontend (React Web) - apps/mobile (Expo/React Native) - apps/mcp-server (Claude MCP Server) - apps/whatsapp-service (WhatsApp Business API) - database/ (PostgreSQL DDL) - docs/ (Documentación) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
101 lines
3.1 KiB
SQL
101 lines
3.1 KiB
SQL
-- =============================================================================
|
|
-- MICHANGARRITO - 03 PUBLIC (Tenants)
|
|
-- =============================================================================
|
|
-- Tabla principal de tenants (multi-tenant)
|
|
-- =============================================================================
|
|
|
|
-- Tenants (negocios)
|
|
CREATE TABLE IF NOT EXISTS public.tenants (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
|
|
-- Identificación
|
|
name VARCHAR(100) NOT NULL,
|
|
slug VARCHAR(50) UNIQUE NOT NULL,
|
|
business_type VARCHAR(50) NOT NULL,
|
|
|
|
-- Contacto
|
|
phone VARCHAR(20) NOT NULL,
|
|
email VARCHAR(100),
|
|
address TEXT,
|
|
city VARCHAR(50),
|
|
state VARCHAR(50),
|
|
zip_code VARCHAR(10),
|
|
|
|
-- Configuración
|
|
timezone VARCHAR(50) DEFAULT 'America/Mexico_City',
|
|
currency VARCHAR(3) DEFAULT 'MXN',
|
|
tax_rate DECIMAL(5,2) DEFAULT 16.00,
|
|
tax_included BOOLEAN DEFAULT true,
|
|
|
|
-- WhatsApp
|
|
whatsapp_number VARCHAR(20),
|
|
whatsapp_verified BOOLEAN DEFAULT false,
|
|
uses_platform_number BOOLEAN DEFAULT true,
|
|
|
|
-- Suscripción
|
|
current_plan_id UUID,
|
|
subscription_status VARCHAR(20) DEFAULT 'trial',
|
|
|
|
-- Estado
|
|
status VARCHAR(20) DEFAULT 'active',
|
|
onboarding_completed BOOLEAN DEFAULT false,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_tenants_slug ON public.tenants(slug);
|
|
CREATE INDEX idx_tenants_phone ON public.tenants(phone);
|
|
CREATE INDEX idx_tenants_status ON public.tenants(status);
|
|
|
|
-- Trigger de updated_at
|
|
CREATE TRIGGER update_tenants_updated_at
|
|
BEFORE UPDATE ON public.tenants
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at();
|
|
|
|
-- Configuración de tenant
|
|
CREATE TABLE IF NOT EXISTS public.tenant_configs (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tenant_id UUID NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
|
|
|
|
-- Horarios
|
|
opening_hour TIME DEFAULT '08:00',
|
|
closing_hour TIME DEFAULT '22:00',
|
|
working_days INTEGER[] DEFAULT ARRAY[1,2,3,4,5,6],
|
|
|
|
-- Tickets
|
|
ticket_header TEXT,
|
|
ticket_footer TEXT DEFAULT 'Gracias por su compra',
|
|
print_logo BOOLEAN DEFAULT false,
|
|
|
|
-- Notificaciones
|
|
daily_summary_enabled BOOLEAN DEFAULT true,
|
|
daily_summary_time TIME DEFAULT '21:00',
|
|
low_stock_alerts BOOLEAN DEFAULT true,
|
|
|
|
-- Fiados
|
|
fiados_enabled BOOLEAN DEFAULT true,
|
|
default_fiado_limit DECIMAL(10,2) DEFAULT 500.00,
|
|
fiado_reminder_days INTEGER DEFAULT 7,
|
|
|
|
-- Pedidos
|
|
delivery_enabled BOOLEAN DEFAULT false,
|
|
delivery_fee DECIMAL(10,2) DEFAULT 0.00,
|
|
delivery_radius_km DECIMAL(5,2),
|
|
|
|
-- Métodos de pago
|
|
payment_cash BOOLEAN DEFAULT true,
|
|
payment_card_mercadopago BOOLEAN DEFAULT false,
|
|
payment_card_clip BOOLEAN DEFAULT false,
|
|
payment_codi BOOLEAN DEFAULT false,
|
|
payment_transfer BOOLEAN DEFAULT false,
|
|
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
|
|
UNIQUE(tenant_id)
|
|
);
|
|
|
|
CREATE TRIGGER update_tenant_configs_updated_at
|
|
BEFORE UPDATE ON public.tenant_configs
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at();
|