mirror of
https://github.com/QuivrHQ/quivr.git
synced 2024-12-15 09:32:22 +03:00
87 lines
2.2 KiB
MySQL
87 lines
2.2 KiB
MySQL
|
-- Create extension 'wrappers' if it doesn't exist
|
||
|
CREATE EXTENSION IF NOT EXISTS wrappers;
|
||
|
|
||
|
-- Create foreign data wrapper 'stripe_wrapper' if it doesn't exist
|
||
|
DO $$
|
||
|
BEGIN
|
||
|
IF NOT EXISTS (
|
||
|
SELECT 1
|
||
|
FROM information_schema.foreign_data_wrappers
|
||
|
WHERE foreign_data_wrapper_name = 'stripe_wrapper'
|
||
|
) THEN
|
||
|
CREATE FOREIGN DATA WRAPPER stripe_wrapper
|
||
|
HANDLER stripe_fdw_handler;
|
||
|
END IF;
|
||
|
END $$;
|
||
|
|
||
|
-- Check if the server 'stripe_server' exists before creating it
|
||
|
DO $$
|
||
|
BEGIN
|
||
|
IF NOT EXISTS (SELECT 1 FROM pg_foreign_server WHERE srvname = 'stripe_server') THEN
|
||
|
CREATE SERVER stripe_server
|
||
|
FOREIGN DATA WRAPPER stripe_wrapper
|
||
|
OPTIONS (
|
||
|
api_key 'your_stripe_api_key' -- Replace with your Stripe API key
|
||
|
);
|
||
|
END IF;
|
||
|
END $$;
|
||
|
|
||
|
-- Create foreign table 'public.customers' if it doesn't exist
|
||
|
DO $$
|
||
|
BEGIN
|
||
|
IF NOT EXISTS (
|
||
|
SELECT 1
|
||
|
FROM information_schema.tables
|
||
|
WHERE table_name = 'customers'
|
||
|
) THEN
|
||
|
CREATE FOREIGN TABLE public.customers (
|
||
|
id text,
|
||
|
email text,
|
||
|
name text,
|
||
|
description text,
|
||
|
created timestamp,
|
||
|
attrs jsonb
|
||
|
)
|
||
|
SERVER stripe_server
|
||
|
OPTIONS (
|
||
|
OBJECT 'customers',
|
||
|
ROWID_COLUMN 'id'
|
||
|
);
|
||
|
END IF;
|
||
|
END $$;
|
||
|
|
||
|
-- Create table 'users' if it doesn't exist
|
||
|
CREATE TABLE IF NOT EXISTS public.users (
|
||
|
id uuid REFERENCES auth.users NOT NULL PRIMARY KEY,
|
||
|
email text
|
||
|
);
|
||
|
|
||
|
-- Create or replace function 'public.handle_new_user'
|
||
|
CREATE OR REPLACE FUNCTION public.handle_new_user()
|
||
|
RETURNS TRIGGER AS $$
|
||
|
BEGIN
|
||
|
INSERT INTO public.users (id, email)
|
||
|
VALUES (NEW.id, NEW.email);
|
||
|
RETURN NEW;
|
||
|
END;
|
||
|
$$ LANGUAGE plpgsql SECURITY DEFINER;
|
||
|
|
||
|
-- Check if the trigger 'on_auth_user_created' exists before creating it
|
||
|
DO $$
|
||
|
BEGIN
|
||
|
IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'on_auth_user_created') THEN
|
||
|
CREATE TRIGGER on_auth_user_created
|
||
|
AFTER INSERT ON auth.users
|
||
|
FOR EACH ROW EXECUTE FUNCTION public.handle_new_user();
|
||
|
END IF;
|
||
|
END $$;
|
||
|
|
||
|
-- Update migrations table
|
||
|
INSERT INTO migrations (name)
|
||
|
SELECT '20231023140000_add_stripe_wrapper'
|
||
|
WHERE NOT EXISTS (
|
||
|
SELECT 1 FROM migrations WHERE name = '20231023140000_add_stripe_wrapper'
|
||
|
);
|
||
|
|
||
|
COMMIT;
|