File size: 1,515 Bytes
90c6b42 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | -- Create workflow_components table for dynamic workflow system
CREATE TABLE IF NOT EXISTS public.workflow_components (
id uuid PRIMARY KEY DEFAULT public.gen_random_uuid(),
name TEXT NOT NULL,
type TEXT NOT NULL CHECK (type IN ('trigger', 'action')),
service TEXT NOT NULL,
description TEXT,
category TEXT DEFAULT 'general',
icon TEXT,
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(service, name)
);
-- Create indexes for better performance
CREATE INDEX IF NOT EXISTS idx_workflow_components_type ON public.workflow_components(type);
CREATE INDEX IF NOT EXISTS idx_workflow_components_service ON public.workflow_components(service);
CREATE INDEX IF NOT EXISTS idx_workflow_components_category ON public.workflow_components(category);
CREATE INDEX IF NOT EXISTS idx_workflow_components_active ON public.workflow_components(is_active);
-- Create updated_at trigger function if it doesn't exist
CREATE OR REPLACE FUNCTION public.set_current_timestamp_updated_at()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
-- Create trigger for updated_at
DROP TRIGGER IF EXISTS set_updated_at_workflow_components ON public.workflow_components;
CREATE TRIGGER set_updated_at_workflow_components
BEFORE UPDATE ON public.workflow_components
FOR EACH ROW
EXECUTE FUNCTION public.set_current_timestamp_updated_at();
|