-- LegacyWorlds Beta 6 -- PostgreSQL database scripts -- -- Main database script -- -- Initialises the various roles and the database itself, -- then processes scripts from the "parts" directory. -- -- Copyright(C) 2004-2010, DeepClone Development -- -------------------------------------------------------- -- Read configuration from file \set pgadmin `grep ^admin= db-config.txt | sed -e s/.*=//` \set dbname `grep ^db= db-config.txt | sed -e s/.*=//` \set dbname_string '''':dbname'''' \set dbuser `grep ^user= db-config.txt | sed -e s/.*=//` \set dbuser_string '''':dbuser'''' \set dbupass ''''`grep ^password= db-config.txt | sed -e s/.*=// -e "s/'/''/g"`'''' -- Connect to the main system database \c postgres :pgadmin -- Drop the database and users if they exist DROP DATABASE IF EXISTS :dbname; DROP ROLE IF EXISTS :dbuser; -- Create the LW users CREATE ROLE :dbuser WITH LOGIN ENCRYPTED PASSWORD :dbupass; -- Create the database CREATE DATABASE :dbname ENCODING='UTF8' TEMPLATE=template0; GRANT CONNECT ON DATABASE :dbname TO :dbuser; -- Connect to the LW database with the PostgreSQL admin user \c :dbname :pgadmin -- Register the dblink extension CREATE EXTENSION dblink; -- Create foreign data wrapper and server used to write logs from within -- transanctions CREATE FOREIGN DATA WRAPPER pgsql VALIDATOR postgresql_fdw_validator; CREATE SERVER srv_logging FOREIGN DATA WRAPPER pgsql OPTIONS ( hostaddr '127.0.0.1' , dbname :dbname_string ); CREATE USER MAPPING FOR :dbuser SERVER srv_logging OPTIONS ( user :dbuser_string , password :dbupass ); GRANT USAGE ON FOREIGN SERVER srv_logging TO :dbuser; BEGIN; -- Create database schemas \i parts/000-schemas.sql -- Process structure definition scripts \i parts/010-data.sql -- Process functions and views definition scripts \i parts/020-functions.sql -- Process game update functions \i parts/030-updates.sql COMMIT;