Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Upgrading Arcadia

This method is not the best, I know, but if you follow this guide carefully, it should be very simple.

In the root directory of the cloned Arcadia source, do:

  1. First make a dump of the DB:

    pg_dump -U postgres -d arcadia --data-only --column-inserts > arcadia-data.sql
    

    Then copy the arcadia-data.sql file in a safe place.

  2. Fetch and pull the origin changes to the local repo:

    git fetch && git pull
    
  3. Drop the DB and re-create it:

    sudo -u postgres psql -c "DROP DATABASE arcadia;"
    sudo -u postgres psql -c "CREATE DATABASE arcadia OWNER arcadia;"
    

    NOTE: Since you already created the arcadia user when you setup arcadia, it should run without issues.

  4. Run the sqlx migration:

    NOTE: Don’t forget to change THE_ACTUAL_PASSWORD to the actual password of the arcadia user in postgresql.

    cd backend/storage
    sqlx migrate run --database-url postgresql://arcadia:THE_ACTUAL_PASSWORD@localhost:5432/arcadia
    
  5. Adapt the dump so it will restore correctly:

    Before restoring the dump we made, we have to change some stuff.

    1. Comment or delete the _sqlx_migrations insert line (INSERT INTO public._sqlx_migrations (version, description, installed_on, success, checksum, execution_time) VALUES [...])

    2. Comment or delete the css_sheets insert line (INSERT INTO public.css_sheets (created_at, created_by_id, name, css, preview_image_url) VALUES [...])

    3. Sort the classes correctly:

      NOTE: Here, if you created multiple classes, you have to sort them. The classes below are the ones I created for example. You are NOT required to take these same classes; this is just an example.

      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Guest', '{immune_activity_pruning,send_pm}', NULL, false, false, false, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('User', '{download_torrent,upload_torrent,create_torrent_request,immune_activity_pruning,create_forum_post,send_pm,view_torrent_peers}', NULL, true, false, false, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Member', '{download_torrent,upload_torrent,create_torrent_request,immune_activity_pruning,create_forum_post,send_pm,view_torrent_peers,edit_collage}', NULL, true, true, false, 'User', 7, 0.65, 0, 0, 10737418240, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Power User', '{download_torrent,upload_torrent,create_torrent_request,immune_activity_pruning,create_forum_thread,create_forum_post,send_pm,view_torrent_peers,edit_collage}', NULL, true, true, false, 'Member', 14, 0.65, 5, 0, 26843545600, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Elite', '{download_torrent,upload_torrent,create_torrent_request,immune_activity_pruning,create_forum_thread,create_forum_post,send_pm,view_torrent_peers,edit_collage,edit_torrent,create_wiki_article,link_similar_wiki_articles,edit_title_group,edit_edition_group,edit_artist,delete_artist,delete_title_group,edit_series,delete_series,remove_title_group_from_series,delete_title_group_tag,edit_title_group_tag,delete_torrent,edit_wiki_article,merge_title_group,delete_edition_group,move_torrent_to_other_edition_group,view_stats_details}', NULL, true, true, false, 'Power User', 28, 0.65, 50, 0, 107374182400, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Torrent Master', '{download_torrent,upload_torrent,create_torrent_request,immune_activity_pruning,create_forum_thread,create_forum_post,send_pm,view_torrent_peers,edit_collage,edit_torrent,create_wiki_article,link_similar_wiki_articles,edit_title_group,edit_edition_group,edit_artist,delete_artist,delete_title_group,edit_series,delete_series,remove_title_group_from_series,delete_title_group_tag,edit_title_group_tag,delete_torrent,edit_wiki_article,merge_title_group,delete_edition_group,move_torrent_to_other_edition_group,view_stats_details,set_user_custom_title}', NULL, true, true, false, 'Elite', 56, 0.65, 500, 0, 536870912000, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Power TM', '{download_torrent,upload_torrent,create_torrent_request,immune_activity_pruning,create_forum_thread,create_forum_post,send_pm,view_torrent_peers,edit_collage,edit_torrent,create_wiki_article,link_similar_wiki_articles,edit_title_group,edit_edition_group,edit_artist,delete_artist,delete_title_group,edit_series,delete_series,remove_title_group_from_series,delete_title_group_tag,edit_title_group_tag,delete_torrent,edit_wiki_article,merge_title_group,delete_edition_group,move_torrent_to_other_edition_group,view_stats_details,set_user_custom_title}', NULL, true, true, false, 'Torrent Master', 56, 0.65, 0, 500, 536870912000, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Elite TM', '{download_torrent,upload_torrent,create_torrent_request,immune_activity_pruning,create_forum_thread,create_forum_post,send_pm,view_torrent_peers,edit_collage,edit_torrent,create_wiki_article,link_similar_wiki_articles,edit_title_group,edit_edition_group,edit_artist,delete_artist,delete_title_group,edit_series,delete_series,remove_title_group_from_series,delete_title_group_tag,edit_title_group_tag,delete_torrent,edit_wiki_article,merge_title_group,delete_edition_group,move_torrent_to_other_edition_group,view_stats_details,set_user_custom_title}', NULL, true, true, false, 'Power TM', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('VIP', '{download_torrent,upload_torrent,create_torrent_request,immune_activity_pruning,create_forum_thread,create_forum_post,send_pm,view_torrent_peers,edit_collage,edit_torrent,create_wiki_article,link_similar_wiki_articles,edit_title_group,edit_edition_group,edit_artist,delete_artist,delete_title_group,edit_series,delete_series,remove_title_group_from_series,delete_title_group_tag,edit_title_group_tag,delete_torrent,edit_wiki_article,merge_title_group,delete_edition_group,move_torrent_to_other_edition_group,view_stats_details,set_user_custom_title}', NULL, false, false, false, 'Elite TM', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Legend', '{download_torrent,upload_torrent,create_torrent_request,immune_activity_pruning,create_forum_thread,create_forum_post,send_pm,view_torrent_peers,edit_collage,edit_torrent,set_user_custom_title,link_similar_wiki_articles,edit_wiki_article,create_wiki_article,delete_forum_post,edit_forum_post,edit_forum_thread,edit_title_group,edit_title_group_comment,edit_edition_group,edit_artist,edit_series,edit_torrent_request,edit_title_group_tag,move_torrent_to_other_edition_group,delete_edition_group,view_stats_details,merge_title_group,delete_collage_entry,search_user_edit_change_logs,delete_torrent,delete_title_group_tag,delete_series,remove_title_group_from_series,delete_artist,delete_title_group}', NULL, false, false, false, 'VIP', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Forum Moderators', '{download_torrent,upload_torrent,create_torrent_request,immune_activity_pruning,create_forum_thread,create_forum_post,send_pm,view_torrent_peers,edit_collage,edit_torrent,set_user_custom_title,link_similar_wiki_articles,edit_wiki_article,create_wiki_article,delete_forum_post,edit_forum_post,edit_forum_thread,edit_title_group,edit_title_group_comment,edit_edition_group,edit_artist,edit_series,edit_torrent_request,edit_title_group_tag,move_torrent_to_other_edition_group,delete_edition_group,view_stats_details,merge_title_group,delete_collage_entry,search_user_edit_change_logs,delete_torrent,delete_title_group_tag,delete_series,remove_title_group_from_series,delete_artist,delete_title_group,delete_forum_thread,lock_forum_thread,pin_forum_thread,manage_related_forum_thread,delete_forum_sub_category,create_forum_sub_category,edit_forum_sub_category}', NULL, false, false, false, 'Legend', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Moderator', '{download_torrent,create_torrent_request,immune_activity_pruning,create_forum_thread,create_forum_post,send_pm,view_torrent_peers,edit_collage,edit_torrent,set_user_custom_title,link_similar_wiki_articles,edit_wiki_article,create_wiki_article,delete_forum_post,edit_forum_post,edit_forum_thread,edit_title_group,edit_title_group_comment,edit_edition_group,edit_artist,edit_series,edit_torrent_request,edit_title_group_tag,move_torrent_to_other_edition_group,delete_edition_group,edit_torrent_up_down_factors,view_stats_details,merge_title_group,delete_collage_entry,search_user_edit_change_logs,delete_torrent,delete_title_group_tag,delete_series,remove_title_group_from_series,delete_artist,delete_title_group,read_staff_pm,reply_staff_pm,unresolve_staff_pm,resolve_staff_pm,set_torrent_staff_checked,upload_torrent,pin_forum_thread,delete_forum_thread,lock_forum_thread,delete_collage,create_css_sheet,edit_css_sheet,warn_user,ban_user,edit_user,edit_user_permissions,lock_user_class,change_user_class,search_unauthorized_access,see_foreign_torrent_clients}', NULL, false, false, false, 'Forum Moderators', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Senior Moderator', '{download_torrent,create_torrent_request,immune_activity_pruning,create_forum_thread,create_forum_post,send_pm,view_torrent_peers,edit_collage,edit_torrent,set_user_custom_title,link_similar_wiki_articles,edit_wiki_article,create_wiki_article,delete_forum_post,edit_forum_post,edit_forum_thread,edit_title_group,edit_title_group_comment,edit_edition_group,edit_artist,edit_series,edit_torrent_request,edit_title_group_tag,move_torrent_to_other_edition_group,delete_edition_group,edit_torrent_up_down_factors,view_stats_details,merge_title_group,delete_collage_entry,search_user_edit_change_logs,delete_torrent,delete_title_group_tag,delete_series,remove_title_group_from_series,delete_artist,delete_title_group,read_staff_pm,reply_staff_pm,unresolve_staff_pm,resolve_staff_pm,set_torrent_staff_checked,upload_torrent,pin_forum_thread,delete_forum_category,delete_forum_sub_category,delete_forum_thread,lock_forum_thread,edit_forum_sub_category,edit_forum_category,create_forum_category,create_forum_sub_category,delete_collage,create_css_sheet,edit_css_sheet,warn_user,ban_user,edit_user,edit_user_permissions,lock_user_class,change_user_class,search_unauthorized_access,see_foreign_torrent_clients,search_donation,edit_donation,edit_user_class,create_user_class,read_all_conversations,edit_user_badge,view_invisible_user_badges,award_user_badge,revoke_user_badge,manage_related_forum_thread,search_users,edit_user_badge_category,create_user_badge_category,delete_user_badge,create_user_badge,delete_user_badge_category,manage_site_highlights}', NULL, false, false, false, 'Moderator', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Administrator', '{download_torrent,create_torrent_request,immune_activity_pruning,create_forum_thread,create_forum_post,send_pm,view_torrent_peers,edit_collage,edit_torrent,set_user_custom_title,link_similar_wiki_articles,edit_wiki_article,create_wiki_article,delete_forum_post,edit_forum_post,edit_forum_thread,edit_title_group,edit_title_group_comment,edit_edition_group,edit_artist,edit_series,edit_torrent_request,edit_title_group_tag,move_torrent_to_other_edition_group,delete_edition_group,edit_torrent_up_down_factors,view_stats_details,merge_title_group,delete_collage_entry,search_user_edit_change_logs,delete_torrent,delete_title_group_tag,delete_series,remove_title_group_from_series,delete_artist,delete_title_group,read_staff_pm,reply_staff_pm,unresolve_staff_pm,resolve_staff_pm,set_torrent_staff_checked,upload_torrent,pin_forum_thread,delete_forum_category,delete_forum_sub_category,delete_forum_thread,lock_forum_thread,edit_forum_sub_category,edit_forum_category,create_forum_category,create_forum_sub_category,delete_collage,create_css_sheet,edit_css_sheet,warn_user,ban_user,edit_user,edit_user_permissions,lock_user_class,change_user_class,search_unauthorized_access,see_foreign_torrent_clients,search_donation,edit_donation,edit_user_class,create_user_class,get_user_application,update_user_application,delete_user_class,edit_arcadia_settings,create_donation,delete_donation,delete_torrent_report,search_users,remove_user_warning,change_user_password,manage_related_forum_thread,manage_site_highlights,revoke_user_badge,award_user_badge,delete_user_badge_category,edit_user_badge_category,create_user_badge_category,view_invisible_user_badges,delete_user_badge,edit_user_badge,create_user_badge,read_all_conversations}', NULL, false, false, false, 'Senior Moderator', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('Sysop', '{upload_torrent,download_torrent,create_torrent_request,immune_activity_pruning,edit_title_group,edit_title_group_comment,edit_edition_group,edit_torrent,edit_artist,delete_artist,delete_title_group,edit_collage,delete_collage,edit_series,delete_series,remove_title_group_from_series,edit_torrent_request,edit_forum_post,edit_forum_thread,pin_forum_thread,lock_forum_thread,edit_forum_sub_category,edit_forum_category,create_forum_category,create_forum_sub_category,create_forum_thread,create_forum_post,delete_forum_category,delete_forum_sub_category,delete_forum_thread,delete_forum_post,send_pm,create_css_sheet,edit_css_sheet,read_staff_pm,reply_staff_pm,resolve_staff_pm,unresolve_staff_pm,delete_title_group_tag,edit_title_group_tag,delete_torrent,set_torrent_staff_checked,get_user_application,update_user_application,warn_user,ban_user,remove_user_warning,edit_user,change_user_password,create_wiki_article,edit_wiki_article,link_similar_wiki_articles,create_user_class,edit_user_class,delete_user_class,edit_user_permissions,lock_user_class,change_user_class,edit_arcadia_settings,create_donation,edit_donation,delete_donation,search_donation,search_users,search_unauthorized_access,search_user_edit_change_logs,delete_user_edit_change_log,view_torrent_peers,edit_torrent_up_down_factors,delete_collage_entry,delete_torrent_report,see_foreign_torrent_clients,set_user_custom_title,merge_title_group,delete_edition_group,move_torrent_to_other_edition_group,view_stats_details,read_all_conversations,create_user_badge,edit_user_badge,delete_user_badge,view_invisible_user_badges,create_user_badge_category,edit_user_badge_category,delete_user_badge_category,award_user_badge,revoke_user_badge,manage_site_highlights,manage_related_forum_thread}', NULL, false, false, false, 'Administrator', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      INSERT INTO public.user_classes (name, new_permissions, max_snatches_per_day, automatic_promotion, automatic_demotion, promotion_allowed_while_warned, previous_user_class, required_account_age_in_days, required_ratio, required_torrent_uploads, required_torrent_uploads_in_unique_title_groups, required_uploaded, required_torrent_snatched, required_downloaded, required_forum_posts, required_forum_posts_in_unique_threads, required_title_group_comments, required_seeding_size, promotion_cost_bonus_points) VALUES ('System', '{}', NULL, false, false, false, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
      
    4. Update the first user:

      On the current id=1 user insert line (INSERT INTO public.users [...]), remove the ; at the end and add the following after it:

       ON CONFLICT (id) DO UPDATE SET username = EXCLUDED.username,avatar = EXCLUDED.avatar,email = EXCLUDED.email,password_hash = EXCLUDED.password_hash,registered_from_ip = EXCLUDED.registered_from_ip,created_at = EXCLUDED.created_at,description = EXCLUDED.uploaded = EXCLUDED.uploaded,real_uploaded = EXCLUDED.real_uploaded,downloaded = EXCLUDED.downloaded,real_downloaded = EXCLUDED.real_downloaded,last_seen = EXCLUDED.last_seen,class_name = EXCLUDED.class_name,class_locked = EXCLUDED.class_locked,permissions = EXCLUDED.permissions,title_groups = EXCLUDED.title_groups,edition_groups = EXCLUDED.edition_groups,torrents = EXCLUDED.torrents,forum_posts = EXCLUDED.forum_posts,forum_threads = EXCLUDED.forum_threads,title_group_comments = EXCLUDED.title_group_comments,request_comments = EXCLUDED.request_comments,artist_comments = EXCLUDED.artist_comments,seeding = EXCLUDED.seeding,leeching = EXCLUDED.leeching,snatched = EXCLUDED.snatched,seeding_size = EXCLUDED.seeding_size,requests_filled = EXCLUDED.requests_filled,collages_started = EXCLUDED.collages_started,requests_voted = EXCLUDED.requests_voted,average_seeding_time = EXCLUDED.average_seeding_time,invited = EXCLUDED.invited,invitations = EXCLUDED.invitations,bonus_points = EXCLUDED.bonus_points,freeleech_tokens = EXCLUDED.freeleech_tokens,passkey = EXCLUDED.passkey,warned = EXCLUDED.warned,banned = EXCLUDED.banned,staff_note = EXCLUDED.staff_note,css_sheet_name = EXCLUDED.css_sheet_name,current_streak = EXCLUDED.current_streak,highest_streak = EXCLUDED.highest_streak,custom_title = EXCLUDED.custom_title,max_snatches_per_day = EXCLUDED.max_snatches_per_day,irc_password = EXCLUDED.irc_password,irc_site_embed_enabled = EXCLUDED.irc_site_embed_enabled;
      
    5. Update the first forum category:

      On the current id=1 category insert line (INSERT INTO public.forum_categories [...]), remove the ; at the end and add the following after it:

       ON CONFLICT (id) DO UPDATE SET name = EXCLUDED.name,sort_order = EXCLUDED.sort_order,created_at = EXCLUDED.created_at,created_by_id = EXCLUDED.created_by_id;
      
    6. Update the first forum sub-category:

      On the current id=1 sub-category insert line (INSERT INTO public.forum_sub_categories [...]), remove the ; at the end and add the following after it:

       ON CONFLICT (id) DO UPDATE SET forum_category_id = EXCLUDED.forum_category_id,name = EXCLUDED.name,sort_order = EXCLUDED.sort_order,created_at = EXCLUDED.created_at,created_by_id = EXCLUDED.created_by_id,threads_amount = EXCLUDED.threads_amount,posts_amount = EXCLUDED.posts_amount,forbidden_classes = EXCLUDED.forbidden_classes,new_threads_restricted = EXCLUDED.new_threads_restricted;
      
    7. Be sure that name in public.css_sheets, default_css_sheet_name in public.arcadia_settings, and all css_sheet_name in public.users (for ALL users) is set to arcadia. If its not, the restore will not work.
      Its because in my instance, I actually change the name of the default css sheet name, and in the default migration (sqlx migrate run), the default name is arcadia.

  6. Restore:

    psql -U postgres -d arcadia -f arcadia-data.sql
    
  7. Now, for this step, I recommend you to use a GUI DB manager tool like DBeaver for example, but if you know how to do the same thing described below in CLI, its all good:

    1. Connect to the DB.

    2. Go to arcadia > public > arcadia_settings:
      Here, you should see two lines like this:

      Simply delete the first line where global_download_factor is set to newbie.


And you’re done, you successfully upgraded your Arcadia instance to the latest commit!