2026-01-12 12:47:00 +05:30
|
|
|
-- Create Electric SQL replication user
|
|
|
|
|
-- This script is run during PostgreSQL initialization
|
|
|
|
|
|
|
|
|
|
DO $$
|
|
|
|
|
BEGIN
|
|
|
|
|
IF NOT EXISTS (SELECT FROM pg_user WHERE usename = 'electric') THEN
|
|
|
|
|
CREATE USER electric WITH REPLICATION PASSWORD 'electric_password';
|
|
|
|
|
END IF;
|
|
|
|
|
END
|
|
|
|
|
$$;
|
|
|
|
|
|
|
|
|
|
-- Grant necessary permissions
|
|
|
|
|
GRANT CONNECT ON DATABASE surfsense TO electric;
|
|
|
|
|
GRANT USAGE ON SCHEMA public TO electric;
|
|
|
|
|
GRANT SELECT ON ALL TABLES IN SCHEMA public TO electric;
|
|
|
|
|
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO electric;
|
|
|
|
|
|
|
|
|
|
-- Grant permissions on future tables
|
|
|
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO electric;
|
|
|
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON SEQUENCES TO electric;
|
|
|
|
|
|
2026-01-12 14:53:18 +05:30
|
|
|
-- Create the publication that Electric SQL expects
|
|
|
|
|
-- Electric will add tables to this publication when shapes are subscribed
|
|
|
|
|
DO $$
|
|
|
|
|
BEGIN
|
|
|
|
|
IF NOT EXISTS (SELECT FROM pg_publication WHERE pubname = 'electric_publication_default') THEN
|
|
|
|
|
CREATE PUBLICATION electric_publication_default;
|
|
|
|
|
END IF;
|
|
|
|
|
END
|
|
|
|
|
$$;
|