Skip to main content
Glama
dj-pearson

Supabase Coolify MCP Server

by dj-pearson
migration-example.sql2.94 kB
-- Example database migration for Supabase -- This creates a user profiles table with RLS policies -- Create the profiles table CREATE TABLE IF NOT EXISTS public.profiles ( id UUID PRIMARY KEY REFERENCES auth.users(id) ON DELETE CASCADE, username TEXT UNIQUE, full_name TEXT, avatar_url TEXT, bio TEXT, website TEXT, location TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); -- Create an index on username for faster lookups CREATE INDEX IF NOT EXISTS idx_profiles_username ON public.profiles(username); -- Enable Row Level Security ALTER TABLE public.profiles ENABLE ROW LEVEL SECURITY; -- Create policies -- Policy: Public profiles are viewable by everyone CREATE POLICY "profiles_select_policy" ON public.profiles FOR SELECT USING (true); -- Policy: Users can insert their own profile CREATE POLICY "profiles_insert_policy" ON public.profiles FOR INSERT WITH CHECK (auth.uid() = id); -- Policy: Users can update their own profile CREATE POLICY "profiles_update_policy" ON public.profiles FOR UPDATE USING (auth.uid() = id) WITH CHECK (auth.uid() = id); -- Policy: Users can delete their own profile CREATE POLICY "profiles_delete_policy" ON public.profiles FOR DELETE USING (auth.uid() = id); -- Create a function to automatically create profile on user signup CREATE OR REPLACE FUNCTION public.handle_new_user() RETURNS TRIGGER AS $$ BEGIN INSERT INTO public.profiles (id, full_name, avatar_url) VALUES ( NEW.id, NEW.raw_user_meta_data->>'full_name', NEW.raw_user_meta_data->>'avatar_url' ); RETURN NEW; END; $$ LANGUAGE plpgsql SECURITY DEFINER; -- Create trigger to call the function on user signup DROP TRIGGER IF EXISTS on_auth_user_created ON auth.users; CREATE TRIGGER on_auth_user_created AFTER INSERT ON auth.users FOR EACH ROW EXECUTE FUNCTION public.handle_new_user(); -- Create a function to automatically update updated_at timestamp CREATE OR REPLACE FUNCTION public.handle_updated_at() RETURNS TRIGGER AS $$ BEGIN NEW.updated_at = NOW(); RETURN NEW; END; $$ LANGUAGE plpgsql; -- Create trigger to update updated_at on profile changes DROP TRIGGER IF EXISTS on_profile_updated ON public.profiles; CREATE TRIGGER on_profile_updated BEFORE UPDATE ON public.profiles FOR EACH ROW EXECUTE FUNCTION public.handle_updated_at(); -- Grant necessary permissions GRANT USAGE ON SCHEMA public TO anon, authenticated; GRANT SELECT ON public.profiles TO anon, authenticated; GRANT INSERT, UPDATE, DELETE ON public.profiles TO authenticated; -- Add comments for documentation COMMENT ON TABLE public.profiles IS 'User profiles with public information'; COMMENT ON COLUMN public.profiles.username IS 'Unique username for the user'; COMMENT ON COLUMN public.profiles.full_name IS 'Full name of the user'; COMMENT ON COLUMN public.profiles.avatar_url IS 'URL to user avatar image';

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dj-pearson/supabase-coolify-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server