147 lines
6.0 KiB
Go
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")
|
|
}
|