2017-09-04 14:03:39 +01:00
-- Convert schema 'share/ddl/_source/deploy/5/001-auto.yml' to 'share/ddl/_source/deploy/6/001-auto.yml':;
-- Customised for proper migration
BEGIN ;
CREATE TABLE " entities " (
" id " serial NOT NULL ,
" type " character varying ( 255 ) NOT NULL ,
PRIMARY KEY ( " id " )
) ;
ALTER TABLE customers RENAME TO customers_temp ;
ALTER TABLE organisations RENAME TO organisations_temp ;
ALTER TABLE transactions RENAME TO transactions_temp ;
ALTER TABLE users RENAME TO users_temp ;
2017-09-06 16:45:29 +01:00
ALTER TABLE session_tokens RENAME TO session_tokens_temp ;
ALTER TABLE feedback RENAME TO feedback_temp ;
2017-09-04 14:03:39 +01:00
2017-09-06 16:20:48 +01:00
ALTER INDEX transactions_idx_buyer_id RENAME TO transactions_temp_idx_buyer_id ;
ALTER INDEX transactions_idx_seller_id RENAME TO transactions_temp_idx_seller_id ;
2017-09-06 16:45:29 +01:00
ALTER INDEX session_tokens_idx_user_id RENAME TO session_tokens_temp_idx_user_id ;
ALTER INDEX feedback_idx_user_id RENAME TO feedback_temp_idx_user_id ;
2017-09-06 16:48:06 +01:00
ALTER TABLE session_tokens_temp DROP CONSTRAINT session_tokens_token ;
2017-09-06 16:45:29 +01:00
ALTER TABLE users_temp DROP CONSTRAINT users_email ;
2017-09-06 16:20:48 +01:00
2017-09-04 14:03:39 +01:00
CREATE TABLE " customers " (
" id " serial NOT NULL ,
" entity_id " integer NOT NULL ,
" display_name " character varying ( 255 ) NOT NULL ,
" full_name " character varying ( 255 ) NOT NULL ,
" year_of_birth " integer NOT NULL ,
" postcode " character varying ( 16 ) NOT NULL ,
PRIMARY KEY ( " id " )
) ;
CREATE INDEX " customers_idx_entity_id " on " customers " ( " entity_id " ) ;
CREATE TABLE " organisations " (
" id " serial NOT NULL ,
" entity_id " integer NOT NULL ,
" name " character varying ( 255 ) NOT NULL ,
" street_name " text ,
" town " character varying ( 255 ) NOT NULL ,
" postcode " character varying ( 16 ) ,
" country " character varying ( 255 ) ,
" sector " character varying ( 1 ) ,
2017-09-06 16:16:35 +01:00
" pending " boolean DEFAULT false NOT NULL ,
2017-09-04 14:03:39 +01:00
" submitted_by_id " integer ,
PRIMARY KEY ( " id " )
) ;
CREATE INDEX " organisations_idx_entity_id " on " organisations " ( " entity_id " ) ;
CREATE TABLE " transactions " (
" id " serial NOT NULL ,
" buyer_id " integer NOT NULL ,
" seller_id " integer NOT NULL ,
" value " numeric ( 16 , 2 ) NOT NULL ,
" proof_image " text ,
" submitted_at " timestamp NOT NULL ,
" purchase_time " timestamp NOT NULL ,
PRIMARY KEY ( " id " )
) ;
CREATE INDEX " transactions_idx_buyer_id " on " transactions " ( " buyer_id " ) ;
CREATE INDEX " transactions_idx_seller_id " on " transactions " ( " seller_id " ) ;
CREATE TABLE " users " (
" id " serial NOT NULL ,
" entity_id " integer NOT NULL ,
" email " text NOT NULL ,
" join_date " timestamp NOT NULL ,
" password " character varying ( 100 ) NOT NULL ,
2017-09-06 16:16:35 +01:00
" is_admin " boolean DEFAULT false NOT NULL ,
2017-09-04 14:03:39 +01:00
PRIMARY KEY ( " id " ) ,
CONSTRAINT " users_email " UNIQUE ( " email " )
) ;
CREATE INDEX " users_idx_entity_id " on " users " ( " entity_id " ) ;
2017-09-06 16:45:29 +01:00
-- Recreate session table as users is changing completely
CREATE TABLE " session_tokens " (
" id " serial NOT NULL ,
" token " character varying ( 255 ) NOT NULL ,
" user_id " integer NOT NULL ,
PRIMARY KEY ( " id " ) ,
CONSTRAINT " session_tokens_token " UNIQUE ( " token " )
) ;
CREATE INDEX " session_tokens_idx_user_id " on " session_tokens " ( " user_id " ) ;
-- Also recreate feedback as this also gets broken by the user_id changes
CREATE TABLE " feedback " (
" id " serial NOT NULL ,
" user_id " integer NOT NULL ,
" submitted_at " timestamp NOT NULL ,
" feedbacktext " text NOT NULL ,
" app_name " character varying ( 255 ) NOT NULL ,
" package_name " character varying ( 255 ) NOT NULL ,
" version_code " character varying ( 255 ) NOT NULL ,
" version_number " character varying ( 255 ) NOT NULL ,
PRIMARY KEY ( " id " )
) ;
CREATE INDEX " feedback_idx_user_id " on " feedback " ( " user_id " ) ;
2017-09-04 14:03:39 +01:00
DROP TABLE leaderboard_values ;
TRUNCATE TABLE leaderboard_sets ;
CREATE TABLE " leaderboard_values " (
" id " serial NOT NULL ,
" entity_id " integer NOT NULL ,
" set_id " integer NOT NULL ,
" position " integer NOT NULL ,
" value " numeric ( 16 , 2 ) NOT NULL ,
" trend " integer DEFAULT 0 NOT NULL ,
PRIMARY KEY ( " id " ) ,
CONSTRAINT " leaderboard_values_entity_id_set_id " UNIQUE ( " entity_id " , " set_id " )
) ;
CREATE INDEX " leaderboard_values_idx_entity_id " on " leaderboard_values " ( " entity_id " ) ;
CREATE INDEX " leaderboard_values_idx_set_id " on " leaderboard_values " ( " set_id " ) ;
2017-09-06 16:45:29 +01:00
2017-09-04 14:03:39 +01:00
COMMIT ;