diff options
| author | 2023-11-30 12:22:35 +0100 | |
|---|---|---|
| committer | 2023-11-30 11:22:35 +0000 | |
| commit | f9ba0df72681f8d2ed6826e8fa928caecaf27bf1 (patch) | |
| tree | bc297d2eb4cbb5e59dd7601d721f03f0776adba2 /internal/db/bundb | |
| parent | [bugfix] Update exif-terminator (fix png issue) (#2391) (diff) | |
| download | gotosocial-f9ba0df72681f8d2ed6826e8fa928caecaf27bf1.tar.xz | |
[chore] Re-add indexes, rename account actions indexes (#2401)
Diffstat (limited to 'internal/db/bundb')
| -rw-r--r-- | internal/db/bundb/migrations/20231128140847_remove_duplicate_indices.go | 6 | ||||
| -rw-r--r-- | internal/db/bundb/migrations/20231130103643_fix_index_whoopsie.go | 131 | 
2 files changed, 131 insertions, 6 deletions
| diff --git a/internal/db/bundb/migrations/20231128140847_remove_duplicate_indices.go b/internal/db/bundb/migrations/20231128140847_remove_duplicate_indices.go index a28946016..673c45209 100644 --- a/internal/db/bundb/migrations/20231128140847_remove_duplicate_indices.go +++ b/internal/db/bundb/migrations/20231128140847_remove_duplicate_indices.go @@ -157,7 +157,6 @@ func init() {  				"accounts_id_idx",  				"accounts_inbox_uri_idx",  				"accounts_outbox_uri_idx", -				"accounts_domain_idx",  				"accounts_uri_idx",  				"accounts_url_idx",  				"accounts_followers_uri_idx", @@ -169,21 +168,16 @@ func init() {  				"emojis_uri_idx",  				"instances_domain_idx",  				"list_entries_id_idx", -				"list_entries_list_id_idx",  				"lists_id_idx",  				"markers_account_id_name_idx",  				"media_attachments_id_idx",  				"status_faves_id_idx", -				"status_faves_account_id_idx", -				"status_to_tags_tag_id_idx",  				"statuses_uri_idx", -				"statuses_account_id_idx", // <- seems counterintuitive, but other indexes include "account_id" as first column  				"tags_name_idx",  				"thread_mutes_id_idx",  				"thread_mutes_thread_id_account_id_idx",  				"threads_id_idx",  				"tombstone_uri_idx", -				"tombstone_uri_idx",  			} {  				if _, err := tx.  					NewDropIndex(). diff --git a/internal/db/bundb/migrations/20231130103643_fix_index_whoopsie.go b/internal/db/bundb/migrations/20231130103643_fix_index_whoopsie.go new file mode 100644 index 000000000..3b0d6c6db --- /dev/null +++ b/internal/db/bundb/migrations/20231130103643_fix_index_whoopsie.go @@ -0,0 +1,131 @@ +// GoToSocial +// Copyright (C) GoToSocial Authors admin@gotosocial.org +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program.  If not, see <http://www.gnu.org/licenses/>. + +package migrations + +import ( +	"context" + +	"github.com/superseriousbusiness/gotosocial/internal/log" +	"github.com/uptrace/bun" +) + +func init() { +	up := func(ctx context.Context, db *bun.DB) error { +		return db.RunInTx(ctx, nil, func(ctx context.Context, tx bun.Tx) error { +			log.Info(ctx, "renaming / re-adding some indexes; this may take some time, please be patient and don't interrupt this!") + +			// Remove misnamed indexes from when +			// account_actions renamed to admin_actions +			for _, index := range []string{ +				"account_actions_target_category_idx", +				"account_actions_target_id_idx", +				"account_actions_type_idx", +				"account_actions_account_id_idx", +			} { +				if _, err := tx. +					NewDropIndex(). +					Index(index). +					IfExists(). +					Exec(ctx); err != nil { +					return err +				} +			} + +			type spec struct { +				index   string +				table   string +				columns []string +			} + +			for _, spec := range []spec{ +				// Rename the admin actions indexes. +				{ +					index:   "admin_actions_target_category_idx", +					table:   "admin_actions", +					columns: []string{"target_category"}, +				}, +				{ +					index:   "admin_actions_target_id_idx", +					table:   "admin_actions", +					columns: []string{"target_id"}, +				}, +				{ +					index:   "admin_actions_type_idx", +					table:   "admin_actions", +					columns: []string{"type"}, +				}, +				{ +					index:   "admin_actions_account_id_idx", +					table:   "admin_actions", +					columns: []string{"account_id"}, +				}, + +				// Recreate indexes that may have been removed +				// by a bodged version of the previous migration +				// (this PR is my penance -- tobi). +				{ +					index:   "list_entries_list_id_idx", +					table:   "list_entries", +					columns: []string{"list_id"}, +				}, +				{ +					index:   "accounts_domain_idx", +					table:   "accounts", +					columns: []string{"domain"}, +				}, +				{ +					index:   "status_faves_account_id_idx", +					table:   "status_faves", +					columns: []string{"account_id"}, +				}, +				{ +					index:   "statuses_account_id_idx", +					table:   "statuses", +					columns: []string{"account_id"}, +				}, +				{ +					index:   "status_to_tags_tag_id_idx", +					table:   "status_to_tags", +					columns: []string{"tag_id"}, +				}, +			} { +				if _, err := tx. +					NewCreateIndex(). +					Table(spec.table). +					Index(spec.index). +					Column(spec.columns...). +					IfNotExists(). +					Exec(ctx); err != nil { +					return err +				} +			} + +			return nil +		}) +	} + +	down := func(ctx context.Context, db *bun.DB) error { +		return db.RunInTx(ctx, nil, func(ctx context.Context, tx bun.Tx) error { +			return nil +		}) +	} + +	if err := Migrations.Register(up, down); err != nil { +		panic(err) +	} +} | 
