Archived
1

Some work on ordering. Special user behaviour

See #10
This commit is contained in:
2017-11-26 15:28:55 +04:00
parent 8368a3c60b
commit 53a99b0ff3
20 changed files with 466 additions and 16 deletions

View 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
}

View 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
}

View File

@@ -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