From 9508d0faee8c18383e325f001fc4443776cd34a2 Mon Sep 17 00:00:00 2001 From: kolaente Date: Sat, 19 Dec 2020 15:04:30 +0100 Subject: [PATCH] Fix missing auto increments from b0d4902406 on mysql Fixes #744 --- pkg/migration/20201219145028.go | 77 +++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 pkg/migration/20201219145028.go diff --git a/pkg/migration/20201219145028.go b/pkg/migration/20201219145028.go new file mode 100644 index 00000000000..e596691b40e --- /dev/null +++ b/pkg/migration/20201219145028.go @@ -0,0 +1,77 @@ +// Vikunja is a to-do list application to facilitate your life. +// Copyright 2018-2020 Vikunja and contributors. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package migration + +import ( + "code.vikunja.io/api/pkg/config" + "code.vikunja.io/api/pkg/log" + "src.techknowlogick.com/xormigrate" + "xorm.io/xorm" +) + +func addAutoIncrementToIDColumns(x *xorm.Session, table string) (err error) { + _, err = x.Exec("ALTER TABLE " + table + " MODIFY `id` BIGINT AUTO_INCREMENT NOT NULL") + return +} + +func init() { + migrations = append(migrations, &xormigrate.Migration{ + ID: "20201219145028", + Description: "Re-add auto increment columns", + Migrate: func(tx *xorm.Engine) error { + if config.DatabaseType.GetString() != "mysql" { + log.Debugf("Not migrating since mysql is the only thing that broke in 20201218152741") + return nil + } + + columns := []string{ + "totp", + "users", + "files", + "namespaces", + "team_list", + "label_task", + "task_relations", + "team_namespaces", + "users_namespace", + "teams", + "team_members", + "task_assignees", + "users_list", + "tasks", + "task_reminders", + "task_attachments", + "list", + "labels", + "buckets", + "link_sharing", + "migration_status", + } + + s := tx.NewSession() + for _, table := range columns { + if err := addAutoIncrementToIDColumns(s, table); err != nil { + return err + } + } + return nil + }, + Rollback: func(tx *xorm.Engine) error { + return nil + }, + }) +}