51
lib/migrations/24_create_orders.go
Normal file
51
lib/migrations/24_create_orders.go
Normal file
@@ -0,0 +1,51 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
// CreateOrdersUp creates `orders` table
|
||||
func CreateOrdersUp(tx *sql.Tx) error {
|
||||
request := "CREATE TABLE `orders` ("
|
||||
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID приказа',"
|
||||
request += "`target` varchar(191) NOT NULL COMMENT 'Цель приказа',"
|
||||
request += "`target_squads` varchar(191) NOT NULL COMMENT 'Отряды, для которых этот приказ действителен',"
|
||||
request += "`scheduled` bool NOT NULL DEFAULT false COMMENT 'Является ли запланированным',"
|
||||
request += "`scheduled_at` datetime COMMENT 'Время запланированного пина',"
|
||||
request += "`reusable` bool NOT NULL DEFAULT true COMMENT 'Можно ли повторить приказ',"
|
||||
request += "`status` varchar(191) NOT NULL DEFAULT 'new' COMMENT 'Статус приказа',"
|
||||
request += "`author_id` int(11) NOT NULL COMMENT 'ID автора приказа',"
|
||||
request += "`created_at` datetime NOT NULL COMMENT 'Добавлен в базу',"
|
||||
request += "PRIMARY KEY (`id`),"
|
||||
request += "UNIQUE KEY `id` (`id`),"
|
||||
request += "KEY `orders_created_at` (`created_at`)"
|
||||
request += ") ENGINE=InnoDB AUTO_INCREMENT=4201 DEFAULT CHARSET=utf8mb4 COMMENT='Приказы'"
|
||||
_, err := tx.Exec(request)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Fill some default templates to send
|
||||
_, err = tx.Exec("INSERT INTO `orders` VALUES(NULL, 'M', 'all', false, NULL, true, 'new', 1, NOW())")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = tx.Exec("INSERT INTO `orders` VALUES(NULL, 'O', 'all', false, NULL, true, 'new', 1, NOW())")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateOrdersDown drops `chats` table
|
||||
func CreateOrdersDown(tx *sql.Tx) error {
|
||||
_, err := tx.Exec("DROP TABLE `orders`")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
29
lib/migrations/25_remove_reusable.go
Normal file
29
lib/migrations/25_remove_reusable.go
Normal file
@@ -0,0 +1,29 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
// stdlib
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
// RemoveReusableUp removes `reusable` field in `orders` table
|
||||
func RemoveReusableUp(tx *sql.Tx) error {
|
||||
_, err := tx.Exec("ALTER TABLE `orders` DROP COLUMN `reusable`")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// RemoveReusableDown reverts `reusable` column
|
||||
func RemoveReusableDown(tx *sql.Tx) error {
|
||||
_, err := tx.Exec("ALTER TABLE `orders` ADD COLUMN `reusable` bool NOT NULL DEFAULT true COMMENT 'Можно ли повторить приказ' AFTER `scheduled_at")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
@@ -34,6 +34,8 @@ func (m *Migrations) Init() {
|
||||
goose.AddNamedMigration("21_change_telegram_id_column.go", ChangeTelegramIDColumnUp, ChangeTelegramIDColumnDown)
|
||||
goose.AddNamedMigration("22_add_flood_chat_id.go", AddFloodChatIDUp, AddFloodChatIDDown)
|
||||
goose.AddNamedMigration("23_add_user_type.go", AddUserTypeUp, AddUserTypeDown)
|
||||
goose.AddNamedMigration("24_create_orders.go", CreateOrdersUp, CreateOrdersDown)
|
||||
goose.AddNamedMigration("25_remove_reusable.go", RemoveReusableUp, RemoveReusableDown)
|
||||
}
|
||||
|
||||
// Migrate migrates database to current version
|
||||
|
Reference in New Issue
Block a user