summaryrefslogtreecommitdiff
path: root/internal/db/bundb/migrations/20231215115920_add_status_poll_index.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2023-12-15 14:24:39 +0000
committerLibravatar GitHub <noreply@github.com>2023-12-15 15:24:39 +0100
commitf4fcffc8b56ef73c184ae17892b69181961c15c7 (patch)
treeb678c44c9106e2ec8069dcf596a0554dee7410ab /internal/db/bundb/migrations/20231215115920_add_status_poll_index.go
parent[bugfix] Let templates deref pointers, as a treat (#2448) (diff)
downloadgotosocial-f4fcffc8b56ef73c184ae17892b69181961c15c7.tar.xz
[bugfix] use a much shorter refresh limit for statuses with polls (#2453)v0.13.0
* specifically use a much shorter refresh limit for statuses with polls * allow specifying whether status must be upToDate in calls to Get(Visible)?TargetStatusBy_(), limit force refresh to 5 minute cooldown * remove the PollID check from statusUpToDate() * remove unnecessary force flag checks * remove unused field * check refresh status error * use argument name 'refresh' instead of 'upToDate' to better fit with the codebase * add statuses_poll_id_idx * remove the definitely-not copy-pasted comment i accidentally typed out in full * only synchronously refresh if the refresh flag is provided, otherwise do async * fix wrong force value being provided for async --------- Co-authored-by: tobi <tobi.smethurst@protonmail.com>
Diffstat (limited to 'internal/db/bundb/migrations/20231215115920_add_status_poll_index.go')
-rw-r--r--internal/db/bundb/migrations/20231215115920_add_status_poll_index.go66
1 files changed, 66 insertions, 0 deletions
diff --git a/internal/db/bundb/migrations/20231215115920_add_status_poll_index.go b/internal/db/bundb/migrations/20231215115920_add_status_poll_index.go
new file mode 100644
index 000000000..54b585d60
--- /dev/null
+++ b/internal/db/bundb/migrations/20231215115920_add_status_poll_index.go
@@ -0,0 +1,66 @@
+// 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/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 {
+ type spec struct {
+ index string
+ table string
+ columns []string
+ }
+
+ for _, spec := range []spec{
+ {
+ index: "statuses_poll_id_idx",
+ table: "statuses",
+ columns: []string{"poll_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)
+ }
+}