mirror of https://github.com/buster-so/buster.git
missing sql file
This commit is contained in:
parent
86e2bad9ea
commit
a7ad7b6a84
|
@ -0,0 +1,150 @@
|
|||
-- Create Buster system user if it doesn't exist
|
||||
DO $$
|
||||
DECLARE
|
||||
buster_user_id uuid;
|
||||
BEGIN
|
||||
-- Check if Buster user already exists
|
||||
SELECT id INTO buster_user_id
|
||||
FROM users
|
||||
WHERE email = 'support@buster.so';
|
||||
|
||||
-- If not exists, create the user
|
||||
IF buster_user_id IS NULL THEN
|
||||
INSERT INTO users (
|
||||
email,
|
||||
name,
|
||||
is_guest,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES (
|
||||
'support@buster.so',
|
||||
'Buster',
|
||||
false,
|
||||
now(),
|
||||
now()
|
||||
)
|
||||
RETURNING id INTO buster_user_id;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
--> statement-breakpoint
|
||||
|
||||
-- Function to add default shortcuts for an organization
|
||||
CREATE OR REPLACE FUNCTION add_default_shortcuts_for_org(org_id uuid)
|
||||
RETURNS void AS $$
|
||||
DECLARE
|
||||
buster_user_id uuid;
|
||||
BEGIN
|
||||
-- Get the Buster user ID
|
||||
SELECT id INTO buster_user_id
|
||||
FROM users
|
||||
WHERE email = 'support@buster.so';
|
||||
|
||||
-- Insert default shortcuts if they don't exist
|
||||
-- quick shortcut
|
||||
INSERT INTO shortcuts (name, instructions, created_by, organization_id, share_with_workspace, created_at, updated_at)
|
||||
VALUES (
|
||||
'quick',
|
||||
'Quickly answer my request as fast as possible. Use as little prep, thoughts, validation as possible. Again, this should be fulfilled as quickly as possible: ',
|
||||
buster_user_id,
|
||||
org_id,
|
||||
true,
|
||||
now(),
|
||||
now()
|
||||
)
|
||||
ON CONFLICT (name, organization_id) WHERE share_with_workspace = true
|
||||
DO NOTHING;
|
||||
|
||||
-- deep-dive shortcut
|
||||
INSERT INTO shortcuts (name, instructions, created_by, organization_id, share_with_workspace, created_at, updated_at)
|
||||
VALUES (
|
||||
'deep-dive',
|
||||
'Do a deep dive and build me a thorough report. Find meaningful insights and thoroughly explore. If I have a specific topic in mind, I''ll include it here: ',
|
||||
buster_user_id,
|
||||
org_id,
|
||||
true,
|
||||
now(),
|
||||
now()
|
||||
)
|
||||
ON CONFLICT (name, organization_id) WHERE share_with_workspace = true
|
||||
DO NOTHING;
|
||||
|
||||
-- csv shortcut
|
||||
INSERT INTO shortcuts (name, instructions, created_by, organization_id, share_with_workspace, created_at, updated_at)
|
||||
VALUES (
|
||||
'csv',
|
||||
'Return a table/list that I can export as a CSV. Here is my request: ',
|
||||
buster_user_id,
|
||||
org_id,
|
||||
true,
|
||||
now(),
|
||||
now()
|
||||
)
|
||||
ON CONFLICT (name, organization_id) WHERE share_with_workspace = true
|
||||
DO NOTHING;
|
||||
|
||||
-- suggestions shortcut
|
||||
INSERT INTO shortcuts (name, instructions, created_by, organization_id, share_with_workspace, created_at, updated_at)
|
||||
VALUES (
|
||||
'suggestions',
|
||||
'What specific questions I can ask that may be of value? The more specific and high-impact the better. If I have a specific topic in mind, I''ll include it here: ',
|
||||
buster_user_id,
|
||||
org_id,
|
||||
true,
|
||||
now(),
|
||||
now()
|
||||
)
|
||||
ON CONFLICT (name, organization_id) WHERE share_with_workspace = true
|
||||
DO NOTHING;
|
||||
|
||||
-- dashboard shortcut
|
||||
INSERT INTO shortcuts (name, instructions, created_by, organization_id, share_with_workspace, created_at, updated_at)
|
||||
VALUES (
|
||||
'dashboard',
|
||||
'Build me a dashboard. If I have a specific topic in mind, I''ll include it here: ',
|
||||
buster_user_id,
|
||||
org_id,
|
||||
true,
|
||||
now(),
|
||||
now()
|
||||
)
|
||||
ON CONFLICT (name, organization_id) WHERE share_with_workspace = true
|
||||
DO NOTHING;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
--> statement-breakpoint
|
||||
|
||||
-- Backfill existing organizations with default shortcuts
|
||||
DO $$
|
||||
DECLARE
|
||||
org_record RECORD;
|
||||
BEGIN
|
||||
FOR org_record IN
|
||||
SELECT id
|
||||
FROM organizations
|
||||
WHERE deleted_at IS NULL
|
||||
LOOP
|
||||
PERFORM add_default_shortcuts_for_org(org_record.id);
|
||||
END LOOP;
|
||||
END $$;
|
||||
|
||||
--> statement-breakpoint
|
||||
|
||||
-- Create trigger function for new organizations
|
||||
CREATE OR REPLACE FUNCTION add_default_shortcuts_on_org_create()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
PERFORM add_default_shortcuts_for_org(NEW.id);
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
--> statement-breakpoint
|
||||
|
||||
-- Create trigger on organization insert
|
||||
DROP TRIGGER IF EXISTS add_default_shortcuts_trigger ON organizations;
|
||||
CREATE TRIGGER add_default_shortcuts_trigger
|
||||
AFTER INSERT ON organizations
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION add_default_shortcuts_on_org_create();
|
Loading…
Reference in New Issue