diff --git a/migrations/migrations.go b/migrations/migrations.go index 3597bbd..fc638ee 100644 --- a/migrations/migrations.go +++ b/migrations/migrations.go @@ -70,6 +70,7 @@ var migrations = []Migration{ New("support verifying fedi profile", fediverseVerifyProfile), // V11 -> V12 (v0.14.0) New("support newsletters", supportLetters), // V12 -> V13 New("support password resetting", supportPassReset), // V13 -> V14 + New("speed up blog post retrieval", addPostRetrievalIndex), // V14 -> V15 } // CurrentVer returns the current migration version the application is on diff --git a/migrations/v15.go b/migrations/v15.go new file mode 100644 index 0000000..0875c5a --- /dev/null +++ b/migrations/v15.go @@ -0,0 +1,33 @@ +/* + * Copyright © 2023 Musing Studio LLC. + * + * This file is part of WriteFreely. + * + * WriteFreely is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, included + * in the LICENSE file in this source code package. + */ + +package migrations + +func addPostRetrievalIndex(db *datastore) error { + t, err := db.Begin() + if err != nil { + t.Rollback() + return err + } + + _, err = t.Exec("CREATE INDEX posts_get_collection_index ON posts (`collection_id`, `pinned_position`, `created`)") + if err != nil { + t.Rollback() + return err + } + + err = t.Commit() + if err != nil { + t.Rollback() + return err + } + + return nil +}