from migrations.fixtures.delphi_tables.v6.tables import DelphiTables as DelphiTablesV6 class DelphiTables(DelphiTablesV6): def create(self): tables = [ self.decibel_labels_table, self.projects_table, self.project_artists_table, self.user_projects_table, self.user_labels_table, self.campaign_sub_category_table, self.campaign_category_table, self.campaign_platforms_table, self.campaign_objective_table, self.campaign_provider_table, self.campaigns_table, self.project_campaigns_table, self.linkfire_campaign_table, self.linkfire_project_table ] for t in tables: self.bind.execute(t()) self.bind.execute( self.create_indexes() ) def reindex(self): self.bind.execute( """ REINDEX TABLE projects; REINDEX TABLE campaigns; REINDEX TABLE project_artists; REINDEX TABLE project_campaigns; REINDEX TABLE user_projects; REINDEX TABLE user_labels; REINDEX TABLE decibel_labels; REINDEX TABLE campaign_platforms; REINDEX TABLE campaign_sub_category; REINDEX TABLE campaign_provider; REINDEX TABLE campaign_objective; REINDEX TABLE campaign_category; REINDEX TABLE linkfire_link_campaign; REINDEX TABLE linkfire_link_project; """ ) def drop(self): self.bind.execute( self.drop_indexes() ) self.bind.execute( """ DROP TABLE IF EXISTS projects CASCADE; DROP TABLE IF EXISTS campaigns CASCADE; DROP TABLE IF EXISTS project_artists CASCADE; DROP TABLE IF EXISTS project_campaigns CASCADE; DROP TABLE IF EXISTS user_projects CASCADE; DROP TABLE IF EXISTS user_labels CASCADE; DROP TABLE IF EXISTS decibel_labels CASCADE; DROP TABLE IF EXISTS campaign_platforms CASCADE; DROP TABLE IF EXISTS campaign_sub_category CASCADE; DROP TABLE IF EXISTS campaign_provider CASCADE; DROP TABLE IF EXISTS campaign_objective CASCADE; DROP TABLE IF EXISTS campaign_category CASCADE; DROP TABLE IF EXISTS linkfire_link_campaign CASCADE; DROP TABLE IF EXISTS linkfire_link_project CASCADE; DROP TABLE IF EXISTS phase_campaigns CASCADE; DROP TABLE IF EXISTS phases CASCADE; """ ) def create_indexes(self): return """ CREATE INDEX ix_projects_id ON projects using btree(id); CREATE INDEX ix_projects_gras_id ON projects using btree(gras_id); CREATE INDEX ix_projects_decibel_label_id ON projects using btree(decibel_label_id); CREATE INDEX ix_campaigns_id On campaigns using btree(id); CREATE INDEX ix_campaigns_provider_id On campaigns using btree(provider_id); CREATE INDEX ix_campaigns_objective_id On campaigns using btree(objective_id); CREATE INDEX ix_campaigns_decibel_label_id On campaigns using btree(decibel_label_id); CREATE INDEX ix_campaigns_category_id On campaigns using btree(category_id); CREATE INDEX ix_campaigns_sub_category_id On campaigns using btree(sub_category_id); CREATE INDEX ix_project_artists_project_id ON project_artists using btree(project_id); CREATE INDEX ix_project_artists_artist_id ON project_artists using btree(artist_id); CREATE INDEX ix_project_campaigns_project_id ON project_campaigns using btree(project_id); CREATE INDEX ix_project_campaigns_campaign_id ON project_campaigns using btree(campaign_id); CREATE INDEX ix_user_projects_project_id ON user_projects using btree(project_id); CREATE INDEX ix_user_projects_user_id ON user_projects using btree(user_id); CREATE INDEX ix_user_labels_user_id ON user_labels using btree(user_id); CREATE INDEX ix_user_labels_decibel_label_id ON user_labels using btree(decibel_label_id); CREATE INDEX ix_decibel_labels_id ON decibel_labels using btree(id); CREATE INDEX ix_decibel_labels_rep_owner_key ON decibel_labels using btree(rep_owner_key); CREATE INDEX ix_campaign_platforms_campaign_id ON campaign_platforms using btree(campaign_id); CREATE INDEX ix_campaign_sub_category_id ON campaign_sub_category using btree(id); CREATE INDEX ix_campaign_provider_id ON campaign_provider using btree(id); CREATE INDEX ix_campaign_objective_id ON campaign_objective using btree(id); CREATE INDEX ix_campaign_category_id ON campaign_category using btree(id); CREATE INDEX IF NOT EXISTS ix_linkfire_link_campaign_campaign_id ON linkfire_link_campaign using btree(campaign_id); CREATE INDEX IF NOT EXISTS ix_linkfire_link_campaign_link_id ON linkfire_link_campaign using btree(link_id); CREATE INDEX IF NOT EXISTS ix_linkfire_link_project_project_id ON linkfire_link_project using btree(project_id); CREATE INDEX IF NOT EXISTS ix_linkfire_link_project_link_id ON linkfire_link_project using btree(link_id); """ def drop_indexes(self): return """ DROP INDEX IF EXISTS ix_projects_id; DROP INDEX IF EXISTS ix_projects_decibel_label_id; DROP INDEX IF EXISTS ix_campaigns_id; DROP INDEX IF EXISTS ix_campaigns_provider_id; DROP INDEX IF EXISTS ix_campaigns_objective_id; DROP INDEX IF EXISTS ix_campaigns_decibel_label_id; DROP INDEX IF EXISTS ix_campaigns_category_id; DROP INDEX IF EXISTS ix_campaigns_sub_category_id; DROP INDEX IF EXISTS ix_project_artists_project_id; DROP INDEX IF EXISTS ix_project_artists_artist_id; DROP INDEX IF EXISTS ix_project_campaigns_project_id; DROP INDEX IF EXISTS ix_project_campaigns_campaign_id; DROP INDEX IF EXISTS ix_user_projects_project_id; DROP INDEX IF EXISTS ix_user_projects_user_id; DROP INDEX IF EXISTS ix_user_labels_user_id; DROP INDEX IF EXISTS ix_user_labels_decibel_label_id; DROP INDEX IF EXISTS ix_decibel_labels_id; DROP INDEX IF EXISTS ix_campaign_platforms_campaign_id; DROP INDEX IF EXISTS ix_campaign_sub_category_id; DROP INDEX IF EXISTS ix_campaign_provider_id; DROP INDEX IF EXISTS ix_campaign_objective_id; DROP INDEX IF EXISTS ix_campaign_category_id; DROP INDEX IF EXISTS ix_projects_decibel_label_id; DROP INDEX IF EXISTS ix_decibel_labels_rep_owner_key; DROP INDEX IF EXISTS ix_phases_id; DROP INDEX IF EXISTS ix_phases_project_id; DROP INDEX IF EXISTS ix_phase_campaigns_phase_id; DROP INDEX IF EXISTS ix_phase_campaigns_campaign_id; """