-- ========================================== -- 03: INSTALL POSTGRESQL EXTENSIONS -- ========================================== -- This script installs required extensions on all databases -- Runs as: postgres (superuser) \echo '๐Ÿ”Œ Installing PostgreSQL extensions...' -- ========================================== -- DEVELOPMENT DATABASE -- ========================================== \c aurganize_dev \echo '' \echo '๐Ÿ“ฆ Installing extensions on aurganize_dev...' -- UUID Generation (Required) CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA public VERSION "1.1"; COMMENT ON EXTENSION "uuid-ossp" IS 'Generate universally unique identifiers (UUIDs)'; \echo ' โœ… uuid-ossp installed' -- Trigram Matching (For Fuzzy Search) CREATE EXTENSION IF NOT EXISTS "pg_trgm" WITH SCHEMA public; COMMENT ON EXTENSION "pg_trgm" IS 'Text similarity measurement and index searching based on trigrams'; \echo ' โœ… pg_trgm installed' -- BTree GIN Index (For Complex Queries) CREATE EXTENSION IF NOT EXISTS "btree_gin" WITH SCHEMA public; COMMENT ON EXTENSION "btree_gin" IS 'Support for indexing common datatypes in GIN'; \echo ' โœ… btree_gin installed' -- Test UUID generation DO $$ DECLARE test_uuid UUID; BEGIN test_uuid := uuid_generate_v4(); RAISE NOTICE ' ๐Ÿงช Test UUID generated: %', test_uuid; END $$; -- Test trigram similarity DO $$ DECLARE similarity_score FLOAT; BEGIN similarity_score := similarity('PostgreSQL', 'Postgres'); RAISE NOTICE ' ๐Ÿงช Trigram similarity test: %', similarity_score; END $$; -- ========================================== -- STAGING DATABASE -- ========================================== \c aurganize_staging \echo '' \echo '๐Ÿ“ฆ Installing extensions on aurganize_staging...' CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA public VERSION "1.1"; CREATE EXTENSION IF NOT EXISTS "pg_trgm" WITH SCHEMA public; CREATE EXTENSION IF NOT EXISTS "btree_gin" WITH SCHEMA public; \echo ' โœ… All extensions installed on staging' -- ========================================== -- PRODUCTION DATABASE -- ========================================== \c aurganize_prod \echo '' \echo '๐Ÿ“ฆ Installing extensions on aurganize_prod...' CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA public VERSION "1.1"; CREATE EXTENSION IF NOT EXISTS "pg_trgm" WITH SCHEMA public; CREATE EXTENSION IF NOT EXISTS "btree_gin" WITH SCHEMA public; \echo ' โœ… All extensions installed on production' -- ========================================== -- SUMMARY -- ========================================== \echo '' \echo '==========================================' \echo 'โœ… Extensions installed successfully!' \echo '==========================================' \echo '' -- List all extensions (on dev database) \c aurganize_dev SELECT e.extname AS "Extension", e.extversion AS "Version", n.nspname AS "Schema" FROM pg_extension e JOIN pg_namespace n ON e.extnamespace = n.oid WHERE e.extname IN ('uuid-ossp', 'pg_trgm', 'btree_gin') ORDER BY e.extname; \echo ''