-- Messages
CREATE TABLE IF NOT EXISTS public.messages (
    messageid UUID DEFAULT gen_random_uuid () NOT NULL,
    chatid UUID NOT NULL,
    message TEXT,
    "time" TIMESTAMP WITHOUT TIME ZONE NOT NULL,
    isread boolean DEFAULT FALSE NOT NULL,
    sender UUID NOT NULL
);
-- Primary Key
DO $$ BEGIN
ALTER TABLE public.messages 
ADD CONSTRAINT messages_pkey PRIMARY KEY (messageid);
    EXCEPTION
        WHEN invalid_table_definition THEN
            RAISE NOTICE 'Primary key already exists. Ignoring...'; 
END $$;
-- Foreign Key to Chats
DO $$ BEGIN IF NOT EXISTS (
    SELECT 1 FROM pg_constraint 
    WHERE conname = 'messages_chatid_fkey'
    ) THEN
        ALTER TABLE public.messages 
        ADD CONSTRAINT messages_chatid_fkey 
        FOREIGN KEY (chatid) REFERENCES public.chats (chatid) 
        ON UPDATE CASCADE ON DELETE CASCADE;
    END IF;
END $$;
-- Foreign Key to Users
DO $$ BEGIN IF NOT EXISTS (
    SELECT 1 FROM pg_constraint 
    WHERE conname = 'messages_user_fkey'
    ) THEN
        ALTER TABLE public.messages 
        ADD CONSTRAINT messages_user_fkey 
        FOREIGN KEY (sender) REFERENCES public.users (id) 
        ON UPDATE CASCADE ON DELETE CASCADE;
    END IF;
END $$;