hmn/src/migration/migrations/2022-05-06T221726Z_RenameEv...

147 lines
6.0 KiB
Go

package migrations
import (
"context"
"time"
"git.handmade.network/hmn/hmn/src/migration/types"
"git.handmade.network/hmn/hmn/src/oops"
"github.com/jackc/pgx/v5"
)
func init() {
registerMigration(RenameEverything{})
}
type RenameEverything struct{}
func (m RenameEverything) Version() types.MigrationVersion {
return types.MigrationVersion(time.Date(2022, 5, 6, 22, 17, 26, 0, time.UTC))
}
func (m RenameEverything) Name() string {
return "RenameEverything"
}
func (m RenameEverything) Description() string {
return "Rename all the tables, and remove the ones we no longer need"
}
func (m RenameEverything) Up(ctx context.Context, tx pgx.Tx) error {
// Drop unused tables
_, err := tx.Exec(ctx, `
DROP TABLE
auth_permission,
django_content_type,
django_migrations,
django_site,
handmade_blacklistemail,
handmade_blacklisthostname,
handmade_codelanguage,
handmade_communicationchoice,
handmade_communicationchoicelist,
handmade_communicationsubcategory,
handmade_communicationsubthread,
handmade_kunenathread,
handmade_license,
handmade_license_texts,
handmade_project_languages,
handmade_project_licenses
`)
if err != nil {
return oops.New(err, "failed to drop unused tables")
}
// Rename everything!!
_, err = tx.Exec(ctx, `
ALTER TABLE auth_user RENAME TO hmn_user;
ALTER TABLE discord_outgoingmessages RENAME TO discord_outgoing_message;
ALTER TABLE handmade_asset RENAME TO asset;
ALTER TABLE handmade_discordmessage RENAME TO discord_message;
ALTER TABLE handmade_discordmessageattachment RENAME TO discord_message_attachment;
ALTER TABLE handmade_discordmessagecontent RENAME TO discord_message_content;
ALTER TABLE handmade_discordmessageembed RENAME TO discord_message_embed;
ALTER TABLE handmade_discorduser RENAME TO discord_user;
ALTER TABLE handmade_imagefile RENAME TO image_file;
ALTER TABLE handmade_librarymediatype RENAME TO library_media_type;
ALTER TABLE handmade_libraryresource RENAME TO library_resource;
ALTER TABLE handmade_libraryresource_media_types RENAME TO library_resource_media_type;
ALTER TABLE handmade_libraryresource_topics RENAME TO library_resource_topic;
ALTER TABLE handmade_libraryresourcestar RENAME TO library_resource_star;
ALTER TABLE handmade_librarytopic RENAME TO library_topic;
ALTER TABLE handmade_links RENAME TO link;
ALTER TABLE handmade_onetimetoken RENAME TO one_time_token;
ALTER TABLE handmade_otherfile RENAME TO other_file;
ALTER TABLE handmade_podcast RENAME TO podcast;
ALTER TABLE handmade_podcastepisode RENAME TO podcast_episode;
ALTER TABLE handmade_post RENAME TO post;
ALTER TABLE handmade_post_asset_usage RENAME TO post_asset_usage;
ALTER TABLE handmade_postversion RENAME TO post_version;
ALTER TABLE handmade_project RENAME TO project;
ALTER TABLE handmade_project_downloads RENAME TO project_download;
ALTER TABLE handmade_project_screenshots RENAME TO project_screenshot;
ALTER TABLE handmade_snippet RENAME TO snippet;
ALTER TABLE handmade_subforum RENAME TO subforum;
ALTER TABLE handmade_subforumlastreadinfo RENAME TO subforum_last_read_info;
ALTER TABLE handmade_thread RENAME TO thread;
ALTER TABLE handmade_threadlastreadinfo RENAME TO thread_last_read_info;
ALTER TABLE handmade_user_projects RENAME TO user_project;
ALTER TABLE sessions RENAME TO session;
ALTER TABLE snippet_tags RENAME TO snippet_tag;
ALTER TABLE tags RENAME TO tag;
ALTER TABLE twitch_streams RENAME TO twitch_stream;
ALTER SEQUENCE auth_user_id_seq RENAME TO hmn_user_id_seq;
ALTER SEQUENCE discord_outgoingmessages_id_seq RENAME TO discord_outgoing_message_id_seq;
ALTER SEQUENCE handmade_category_id_seq RENAME TO subforum_id_seq;
ALTER SEQUENCE handmade_categorylastreadinfo_id_seq RENAME TO subforum_last_read_info_id_seq;
ALTER SEQUENCE handmade_discord_id_seq RENAME TO discord_user_id_seq;
ALTER SEQUENCE handmade_discordmessageembed_id_seq RENAME TO discord_message_embed_id_seq;
ALTER SEQUENCE handmade_imagefile_id_seq RENAME TO image_file_id_seq;
ALTER SEQUENCE handmade_librarymediatype_id_seq RENAME TO library_media_type_id_seq;
ALTER SEQUENCE handmade_libraryresource_id_seq RENAME TO library_resource_id_seq;
ALTER SEQUENCE handmade_libraryresource_media_types_id_seq RENAME TO library_resource_media_type_id_seq;
ALTER SEQUENCE handmade_libraryresource_topics_id_seq RENAME TO library_resource_topic_id_seq;
ALTER SEQUENCE handmade_libraryresourcestar_id_seq RENAME TO library_resource_star_id_seq;
ALTER SEQUENCE handmade_librarytopic_id_seq RENAME TO library_topic_id_seq;
ALTER SEQUENCE handmade_links_id_seq RENAME TO link_id_seq;
ALTER SEQUENCE handmade_onetimetoken_id_seq RENAME TO one_time_token_id_seq;
ALTER SEQUENCE handmade_otherfile_id_seq RENAME TO other_file_id_seq;
ALTER SEQUENCE handmade_podcast_id_seq RENAME TO podcast_id_seq;
ALTER SEQUENCE handmade_post_id_seq RENAME TO post_id_seq;
ALTER SEQUENCE handmade_postversion_id_seq RENAME TO post_version_id_seq;
ALTER SEQUENCE handmade_project_downloads_id_seq RENAME TO project_download_id_seq;
ALTER SEQUENCE handmade_project_id_seq RENAME TO project_id_seq;
ALTER SEQUENCE handmade_project_screenshots_id_seq RENAME TO project_screenshot_id_seq;
ALTER SEQUENCE handmade_snippet_id_seq RENAME TO snippet_id_seq;
ALTER SEQUENCE handmade_thread_id_seq RENAME TO thread_id_seq;
ALTER SEQUENCE handmade_threadlastreadinfo_id_seq RENAME TO thread_last_read_info_id_seq;
ALTER SEQUENCE tags_id_seq RENAME TO tag_id_seq;
CREATE OR REPLACE FUNCTION thread_type_for_post(int) RETURNS int AS $$
SELECT thread.type
FROM
public.post
JOIN public.thread ON post.thread_id = thread.id
WHERE post.id = $1
$$ LANGUAGE SQL;
CREATE OR REPLACE FUNCTION project_id_for_post(int) RETURNS int AS $$
SELECT thread.project_id
FROM
public.post
JOIN public.thread ON post.thread_id = thread.id
WHERE post.id = $1
$$ LANGUAGE SQL;
`)
if err != nil {
return oops.New(err, "failed to rename tables")
}
return nil
}
func (m RenameEverything) Down(ctx context.Context, tx pgx.Tx) error {
panic("Implement me")
}