Archived
1

Pins to supergroups, managed by admins

This commit is contained in:
2017-11-14 03:44:21 +04:00
parent 5c08899d25
commit 95a9a2146a
84 changed files with 786 additions and 622 deletions

View File

@@ -4,10 +4,10 @@
package migrations
import (
// stdlib
"database/sql"
)
// UpdateLeaguesUp fixes some fuckup with leagues' emoji
func UpdateLeaguesUp(tx *sql.Tx) error {
_, err := tx.Exec("UPDATE `leagues` SET symbol='🈸' WHERE symbol=':u7533:';")
if err != nil {
@@ -25,6 +25,7 @@ func UpdateLeaguesUp(tx *sql.Tx) error {
return nil
}
// UpdateLeaguesDown returns leagues emoji fuckup for sanity purposes
func UpdateLeaguesDown(tx *sql.Tx) error {
_, err := tx.Exec("UPDATE `leagues` SET symbol=':u7533:' WHERE symbol='🈸';")
if err != nil {

View File

@@ -4,26 +4,26 @@
package migrations
import (
// stdlib
"database/sql"
)
// ProfileDataAdditionsUp creates some helping databases for profiles
func ProfileDataAdditionsUp(tx *sql.Tx) error {
_, err := tx.Exec("ALTER TABLE `profiles` ADD `pokeballs` INT(11) DEFAULT 5 NOT NULL COMMENT 'Покеболы' AFTER `level_id`;")
if err != nil {
return err
}
create_request := "CREATE TABLE `levels` ("
create_request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID уровня и его номер',"
create_request += "`max_exp` int(11) NOT NULL COMMENT 'Опыт для прохождения уровня',"
create_request += "`max_egg` int(11) NOT NULL COMMENT 'Опыт для открытия яйца',"
create_request += "`created_at` datetime NOT NULL COMMENT 'Добавлен в базу',"
create_request += "PRIMARY KEY (`id`),"
create_request += "UNIQUE KEY `id` (`id`),"
create_request += "KEY `levels_created_at` (`created_at`)"
create_request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Уровни';"
_, err = tx.Exec(create_request)
request := "CREATE TABLE `levels` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID уровня и его номер',"
request += "`max_exp` int(11) NOT NULL COMMENT 'Опыт для прохождения уровня',"
request += "`max_egg` int(11) NOT NULL COMMENT 'Опыт для открытия яйца',"
request += "`created_at` datetime NOT NULL COMMENT 'Добавлен в базу',"
request += "PRIMARY KEY (`id`),"
request += "UNIQUE KEY `id` (`id`),"
request += "KEY `levels_created_at` (`created_at`)"
request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Уровни';"
_, err = tx.Exec(request)
if err != nil {
return err
}
@@ -69,6 +69,7 @@ func ProfileDataAdditionsUp(tx *sql.Tx) error {
return nil
}
// ProfileDataAdditionsDown drops `levels` table and `pokeballs` column of `profiles` table
func ProfileDataAdditionsDown(tx *sql.Tx) error {
_, err := tx.Exec("ALTER TABLE `profiles` DROP COLUMN `pokeballs`;")
if err != nil {

View File

@@ -4,29 +4,30 @@
package migrations
import (
// stdlib
"database/sql"
)
// CreateProfileRelationsUp creates profile-pokememes relation table
func CreateProfileRelationsUp(tx *sql.Tx) error {
create_request := "CREATE TABLE `profiles_pokememes` ("
create_request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID связи',"
create_request += "`profile_id` int(11) NOT NULL COMMENT 'ID профиля',"
create_request += "`pokememe_id` int(11) NOT NULL COMMENT 'ID покемема',"
create_request += "`pokememe_lvl` int(11) NOT NULL COMMENT 'Уровень покемема',"
create_request += "`pokememe_rarity` varchar(191) NOT NULL DEFAULT 'common' COMMENT 'Редкость покемема',"
create_request += "`created_at` datetime NOT NULL COMMENT 'Добавлено в базу',"
create_request += "PRIMARY KEY (`id`),"
create_request += "UNIQUE KEY `id` (`id`),"
create_request += "KEY `profiles_pokememes_created_at` (`created_at`)"
create_request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Связь Профили-Покемемы';"
_, err := tx.Exec(create_request)
request := "CREATE TABLE `profiles_pokememes` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID связи',"
request += "`profile_id` int(11) NOT NULL COMMENT 'ID профиля',"
request += "`pokememe_id` int(11) NOT NULL COMMENT 'ID покемема',"
request += "`pokememe_lvl` int(11) NOT NULL COMMENT 'Уровень покемема',"
request += "`pokememe_rarity` varchar(191) NOT NULL DEFAULT 'common' COMMENT 'Редкость покемема',"
request += "`created_at` datetime NOT NULL COMMENT 'Добавлено в базу',"
request += "PRIMARY KEY (`id`),"
request += "UNIQUE KEY `id` (`id`),"
request += "KEY `profiles_pokememes_created_at` (`created_at`)"
request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Связь Профили-Покемемы';"
_, err := tx.Exec(request)
if err != nil {
return err
}
return nil
}
// CreateProfileRelationsDown drops profile-pokememes relation table
func CreateProfileRelationsDown(tx *sql.Tx) error {
_, err := tx.Exec("DROP TABLE `profiles_pokememes`;")
if err != nil {

View File

@@ -4,22 +4,22 @@
package migrations
import (
// stdlib
"database/sql"
)
// CreateWeaponsAndAddWealthUp creates `weapons` table and adds `wealth` column to `profiles`
func CreateWeaponsAndAddWealthUp(tx *sql.Tx) error {
create_request := "CREATE TABLE `weapons` ("
create_request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID оружия',"
create_request += "`name` varchar(191) NOT NULL COMMENT 'Название оружия',"
create_request += "`power` int(11) NOT NULL COMMENT 'Атака оружия',"
create_request += "`price` int(11) NOT NULL COMMENT 'Цена в магазине',"
create_request += "`created_at` datetime NOT NULL COMMENT 'Добавлено в базу',"
create_request += "PRIMARY KEY (`id`),"
create_request += "UNIQUE KEY `id` (`id`),"
create_request += "KEY `weapons_created_at` (`created_at`)"
create_request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Оружие';"
_, err := tx.Exec(create_request)
request := "CREATE TABLE `weapons` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID оружия',"
request += "`name` varchar(191) NOT NULL COMMENT 'Название оружия',"
request += "`power` int(11) NOT NULL COMMENT 'Атака оружия',"
request += "`price` int(11) NOT NULL COMMENT 'Цена в магазине',"
request += "`created_at` datetime NOT NULL COMMENT 'Добавлено в базу',"
request += "PRIMARY KEY (`id`),"
request += "UNIQUE KEY `id` (`id`),"
request += "KEY `weapons_created_at` (`created_at`)"
request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Оружие';"
_, err := tx.Exec(request)
if err != nil {
return err
}
@@ -57,6 +57,7 @@ func CreateWeaponsAndAddWealthUp(tx *sql.Tx) error {
return nil
}
// CreateWeaponsAndAddWealthDown drops `weapons` table and `wealth` column of `profiles` table
func CreateWeaponsAndAddWealthDown(tx *sql.Tx) error {
_, err := tx.Exec("ALTER TABLE `profiles` DROP COLUMN `wealth`;")
if err != nil {

View File

@@ -4,10 +4,10 @@
package migrations
import (
// stdlib
"database/sql"
)
// FixTimeElementUp fixes time element emoji
func FixTimeElementUp(tx *sql.Tx) error {
_, err := tx.Exec("UPDATE `elements` SET league_id=3 WHERE symbol='⌛';")
if err != nil {
@@ -17,6 +17,7 @@ func FixTimeElementUp(tx *sql.Tx) error {
return nil
}
// FixTimeElementDown returns fucked up emoji of time element for sanity
func FixTimeElementDown(tx *sql.Tx) error {
_, err := tx.Exec("UPDATE `elements` SET league_id=1 WHERE symbol='⌛';")
if err != nil {

View File

@@ -4,22 +4,22 @@
package migrations
import (
// stdlib
"database/sql"
)
// CreateChatsUp creates `chats` table
func CreateChatsUp(tx *sql.Tx) error {
create_request := "CREATE TABLE `chats` ("
create_request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID чата',"
create_request += "`name` varchar(191) NOT NULL COMMENT 'Имя чата',"
create_request += "`chat_type` bool NOT NULL COMMENT 'Тип чата',"
create_request += "`telegram_id` int(11) NOT NULL COMMENT 'ID чата в Телеграме',"
create_request += "`created_at` datetime NOT NULL COMMENT 'Добавлен в базу',"
create_request += "PRIMARY KEY (`id`),"
create_request += "UNIQUE KEY `id` (`id`),"
create_request += "KEY `chats_created_at` (`created_at`)"
create_request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Чаты';"
_, err := tx.Exec(create_request)
request := "CREATE TABLE `chats` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID чата',"
request += "`name` varchar(191) NOT NULL COMMENT 'Имя чата',"
request += "`chat_type` bool NOT NULL COMMENT 'Тип чата',"
request += "`telegram_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 `chats_created_at` (`created_at`)"
request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Чаты';"
_, err := tx.Exec(request)
if err != nil {
return err
}
@@ -27,6 +27,7 @@ func CreateChatsUp(tx *sql.Tx) error {
return nil
}
// CreateChatsDown drops `chats` table
func CreateChatsDown(tx *sql.Tx) error {
_, err := tx.Exec("DROP TABLE `chats`;")
if err != nil {

View File

@@ -4,10 +4,10 @@
package migrations
import (
// stdlib
"database/sql"
)
// ChangeChatTypeColumnUp changes `chat_type` column of `chats` table
func ChangeChatTypeColumnUp(tx *sql.Tx) error {
_, err := tx.Exec("ALTER TABLE `chats` MODIFY `chat_type` varchar(191);")
if err != nil {
@@ -17,6 +17,7 @@ func ChangeChatTypeColumnUp(tx *sql.Tx) error {
return nil
}
// ChangeChatTypeColumnDown changes `chat_type` column of `chats` table
func ChangeChatTypeColumnDown(tx *sql.Tx) error {
_, err := tx.Exec("ALTER TABLE `chats` MODIFY `chat_type` bool;")
if err != nil {

View File

@@ -4,10 +4,10 @@
package migrations
import (
// stdlib
"database/sql"
)
// ChangeProfilePokememesColumnsUp prepares database for latest game update in mid-October
func ChangeProfilePokememesColumnsUp(tx *sql.Tx) error {
_, err := tx.Exec("ALTER TABLE `profiles_pokememes` ADD COLUMN `pokememe_attack` INT(11) NOT NULL DEFAULT 0 COMMENT 'Атака покемема' AFTER `pokememe_id`;;")
if err != nil {
@@ -22,6 +22,7 @@ func ChangeProfilePokememesColumnsUp(tx *sql.Tx) error {
return nil
}
// ChangeProfilePokememesColumnsDown restores mid-October behaviour
func ChangeProfilePokememesColumnsDown(tx *sql.Tx) error {
_, err := tx.Exec("ALTER TABLE `profiles_pokememes` ADD COLUMN `pokememe_lvl` INT(11) NOT NULL DEFAULT 0 COMMENT 'Уровень покемема' AFTER `pokememe_id`;;")
if err != nil {

View File

@@ -8,6 +8,7 @@ import (
"database/sql"
)
// AddPokememesWealth prepares database for latest game update in mid-October
func AddPokememesWealthUp(tx *sql.Tx) error {
_, err := tx.Exec("ALTER TABLE `profiles` ADD COLUMN `pokememes_wealth` INT(11) NOT NULL DEFAULT 0 COMMENT 'Стоимость покемонов на руках' AFTER `wealth`;")
if err != nil {
@@ -17,6 +18,7 @@ func AddPokememesWealthUp(tx *sql.Tx) error {
return nil
}
// AddPokememesWealthDown restores mid-October behaviour
func AddPokememesWealthDown(tx *sql.Tx) error {
_, err := tx.Exec("ALTER TABLE `profiles` DROP COLUMN `pokememes_wealth`;")
if err != nil {

View File

@@ -4,10 +4,10 @@
package migrations
import (
// stdlib
"database/sql"
)
// CreateBroadcastsUp creates `broadcasts` table
func CreateBroadcastsUp(tx *sql.Tx) error {
request := "CREATE TABLE `broadcasts` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID сообщения',"
@@ -28,6 +28,7 @@ func CreateBroadcastsUp(tx *sql.Tx) error {
return nil
}
// CreateBroadcastsDown drops `broadcasts` table
func CreateBroadcastsDown(tx *sql.Tx) error {
_, err := tx.Exec("DROP TABLE `broadcasts`;")
if err != nil {

View File

@@ -4,15 +4,12 @@
package migrations
import (
// stdlib
"database/sql"
"log"
)
// First migration, added for testing purposes
// HelloUp is the first migration, added for testing purposes
func HelloUp(tx *sql.Tx) error {
log.Printf("Migration framework loaded. All systems are OK.")
c.Log.Printf("Migration framework loaded. All systems are OK.")
return nil
}

View File

@@ -4,10 +4,10 @@
package migrations
import (
// stdlib
"database/sql"
)
// CreateSquadsUp creates `squads` table
func CreateSquadsUp(tx *sql.Tx) error {
request := "CREATE TABLE `squads` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID отряда',"
@@ -47,6 +47,7 @@ func CreateSquadsUp(tx *sql.Tx) error {
return nil
}
// CreateSquadsDown drops `squads` table
func CreateSquadsDown(tx *sql.Tx) error {
_, err := tx.Exec("DROP TABLE `squads`;")
if err != nil {

View File

@@ -0,0 +1,28 @@
// i2_bot Instinct PokememBro Bot
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
package migrations
import (
"database/sql"
)
// ChangeTelegramIDColumnUp changes `telegram_id` column of `chats` table
func ChangeTelegramIDColumnUp(tx *sql.Tx) error {
_, err := tx.Exec("ALTER TABLE `chats` MODIFY `telegram_id` bigint;")
if err != nil {
return err
}
return nil
}
// ChangeTelegramIDColumnDown changes `telegram_id` column of `chats` table
func ChangeTelegramIDColumnDown(tx *sql.Tx) error {
_, err := tx.Exec("ALTER TABLE `chats` MODIFY `telegram_id` bigint;")
if err != nil {
return err
}
return nil
}

View File

@@ -4,31 +4,32 @@
package migrations
import (
// stdlib
"database/sql"
)
// CreatePlayersUp creates `players` table
func CreatePlayersUp(tx *sql.Tx) error {
create_request := "CREATE TABLE `players` ("
create_request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID игрока',"
create_request += "`telegram_id` int(11) NOT NULL COMMENT 'ID в телеграме',"
create_request += "`league_id` int(11) COMMENT 'ID лиги' DEFAULT 0,"
create_request += "`squad_id` int(11) COMMENT 'ID отряда' DEFAULT 0,"
create_request += "`status` varchar(191) COMMENT 'Статус в лиге' DEFAULT 'common',"
create_request += "`created_at` datetime NOT NULL COMMENT 'Добавлен в базу',"
create_request += "`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Время последнего обновления',"
create_request += "PRIMARY KEY (`id`),"
create_request += "UNIQUE KEY `id` (`id`),"
create_request += "KEY `players_created_at` (`created_at`),"
create_request += "KEY `players_updated_at` (`updated_at`)"
create_request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Зарегистрированные игроки';"
_, err := tx.Exec(create_request)
request := "CREATE TABLE `players` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID игрока',"
request += "`telegram_id` int(11) NOT NULL COMMENT 'ID в телеграме',"
request += "`league_id` int(11) COMMENT 'ID лиги' DEFAULT 0,"
request += "`squad_id` int(11) COMMENT 'ID отряда' DEFAULT 0,"
request += "`status` varchar(191) COMMENT 'Статус в лиге' DEFAULT 'common',"
request += "`created_at` datetime NOT NULL COMMENT 'Добавлен в базу',"
request += "`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Время последнего обновления',"
request += "PRIMARY KEY (`id`),"
request += "UNIQUE KEY `id` (`id`),"
request += "KEY `players_created_at` (`created_at`),"
request += "KEY `players_updated_at` (`updated_at`)"
request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Зарегистрированные игроки';"
_, err := tx.Exec(request)
if err != nil {
return err
}
return nil
}
// CreatePlayersDown drops `players` table
func CreatePlayersDown(tx *sql.Tx) error {
_, err := tx.Exec("DROP TABLE `players`;")
if err != nil {

View File

@@ -4,35 +4,36 @@
package migrations
import (
// stdlib
"database/sql"
)
// CreateProfilesUp creates `profiles` table
func CreateProfilesUp(tx *sql.Tx) error {
create_request := "CREATE TABLE `profiles` ("
create_request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID сохраненного профиля',"
create_request += "`player_id` int(11) NOT NULL COMMENT 'ID игрока в системе',"
create_request += "`nickname` varchar(191) NOT NULL COMMENT 'Ник игрока',"
create_request += "`telegram_nickname` varchar(191) NOT NULL COMMENT 'Ник в Телеграме (@)',"
create_request += "`level_id` int(11) NOT NULL COMMENT 'Уровень',"
create_request += "`exp` int(11) NOT NULL COMMENT 'Опыт',"
create_request += "`egg_exp` int(11) NOT NULL COMMENT 'Опыт яйца',"
create_request += "`power` int(11) NOT NULL COMMENT 'Сила без оружия',"
create_request += "`weapon_id` int(11) NOT NULL COMMENT 'Тип оружия',"
create_request += "`crystalls` int(11) NOT NULL COMMENT 'Кристаллы',"
create_request += "`created_at` datetime NOT NULL COMMENT 'Добавлен в базу',"
create_request += "PRIMARY KEY (`id`),"
create_request += "UNIQUE KEY `id` (`id`),"
create_request += "KEY `profiles_created_at` (`created_at`),"
create_request += "KEY `profiles_nickname` (`nickname`)"
create_request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Профили зарегистрированных игроков';"
_, err := tx.Exec(create_request)
request := "CREATE TABLE `profiles` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID сохраненного профиля',"
request += "`player_id` int(11) NOT NULL COMMENT 'ID игрока в системе',"
request += "`nickname` varchar(191) NOT NULL COMMENT 'Ник игрока',"
request += "`telegram_nickname` varchar(191) NOT NULL COMMENT 'Ник в Телеграме (@)',"
request += "`level_id` int(11) NOT NULL COMMENT 'Уровень',"
request += "`exp` int(11) NOT NULL COMMENT 'Опыт',"
request += "`egg_exp` int(11) NOT NULL COMMENT 'Опыт яйца',"
request += "`power` int(11) NOT NULL COMMENT 'Сила без оружия',"
request += "`weapon_id` int(11) NOT NULL COMMENT 'Тип оружия',"
request += "`crystalls` int(11) NOT NULL COMMENT 'Кристаллы',"
request += "`created_at` datetime NOT NULL COMMENT 'Добавлен в базу',"
request += "PRIMARY KEY (`id`),"
request += "UNIQUE KEY `id` (`id`),"
request += "KEY `profiles_created_at` (`created_at`),"
request += "KEY `profiles_nickname` (`nickname`)"
request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Профили зарегистрированных игроков';"
_, err := tx.Exec(request)
if err != nil {
return err
}
return nil
}
// CreateProfilesDown drops `profiles` table
func CreateProfilesDown(tx *sql.Tx) error {
_, err := tx.Exec("DROP TABLE `profiles`;")
if err != nil {

View File

@@ -4,37 +4,38 @@
package migrations
import (
// stdlib
"database/sql"
)
// CreatePokememesUp creates `pokememes` table
func CreatePokememesUp(tx *sql.Tx) error {
create_request := "CREATE TABLE `pokememes` ("
create_request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID покемема',"
create_request += "`grade` int(11) NOT NULL COMMENT 'Поколение покемема',"
create_request += "`name` varchar(191) NOT NULL COMMENT 'Имя покемема',"
create_request += "`description` TEXT NOT NULL COMMENT 'Описание покемема',"
create_request += "`attack` int(11) NOT NULL COMMENT 'Атака',"
create_request += "`hp` int(11) NOT NULL COMMENT 'Здоровье',"
create_request += "`mp` int(11) NOT NULL COMMENT 'МР',"
create_request += "`defence` int(11) NOT NULL COMMENT 'Защита',"
create_request += "`price` int(11) NOT NULL COMMENT 'Стоимость',"
create_request += "`purchaseable` bool NOT NULL DEFAULT true COMMENT 'Можно купить?',"
create_request += "`image_url` varchar(191) NOT NULL COMMENT 'Изображение покемема',"
create_request += "`player_id` int(11) NOT NULL COMMENT 'Кто добавил в базу',"
create_request += "`created_at` datetime NOT NULL COMMENT 'Добавлен в базу',"
create_request += "PRIMARY KEY (`id`),"
create_request += "UNIQUE KEY `id` (`id`),"
create_request += "KEY `pokememes_created_at` (`created_at`),"
create_request += "KEY `pokememes_player_id` (`player_id`)"
create_request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Покемемы';"
_, err := tx.Exec(create_request)
request := "CREATE TABLE `pokememes` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID покемема',"
request += "`grade` int(11) NOT NULL COMMENT 'Поколение покемема',"
request += "`name` varchar(191) NOT NULL COMMENT 'Имя покемема',"
request += "`description` TEXT NOT NULL COMMENT 'Описание покемема',"
request += "`attack` int(11) NOT NULL COMMENT 'Атака',"
request += "`hp` int(11) NOT NULL COMMENT 'Здоровье',"
request += "`mp` int(11) NOT NULL COMMENT 'МР',"
request += "`defence` int(11) NOT NULL COMMENT 'Защита',"
request += "`price` int(11) NOT NULL COMMENT 'Стоимость',"
request += "`purchaseable` bool NOT NULL DEFAULT true COMMENT 'Можно купить?',"
request += "`image_url` varchar(191) NOT NULL COMMENT 'Изображение покемема',"
request += "`player_id` int(11) NOT NULL COMMENT 'Кто добавил в базу',"
request += "`created_at` datetime NOT NULL COMMENT 'Добавлен в базу',"
request += "PRIMARY KEY (`id`),"
request += "UNIQUE KEY `id` (`id`),"
request += "KEY `pokememes_created_at` (`created_at`),"
request += "KEY `pokememes_player_id` (`player_id`)"
request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Покемемы';"
_, err := tx.Exec(request)
if err != nil {
return err
}
return nil
}
// CreatePokememesDown drops `pokememes` table
func CreatePokememesDown(tx *sql.Tx) error {
_, err := tx.Exec("DROP TABLE `pokememes`;")
if err != nil {

View File

@@ -4,21 +4,21 @@
package migrations
import (
// stdlib
"database/sql"
)
// CreateLocationsUp creates `locations` table and fills it with data
func CreateLocationsUp(tx *sql.Tx) error {
create_request := "CREATE TABLE `locations` ("
create_request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID локации',"
create_request += "`symbol` varchar(191) COLLATE 'utf8mb4_unicode_520_ci' NOT NULL COMMENT 'Символ локации',"
create_request += "`name` varchar(191) NOT NULL COMMENT 'Имя локации',"
create_request += "`created_at` datetime NOT NULL COMMENT 'Добавлена в базу',"
create_request += "PRIMARY KEY (`id`),"
create_request += "UNIQUE KEY `id` (`id`),"
create_request += "KEY `locations_created_at` (`created_at`)"
create_request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Локации';"
_, err := tx.Exec(create_request)
request := "CREATE TABLE `locations` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID локации',"
request += "`symbol` varchar(191) COLLATE 'utf8mb4_unicode_520_ci' NOT NULL COMMENT 'Символ локации',"
request += "`name` varchar(191) NOT NULL COMMENT 'Имя локации',"
request += "`created_at` datetime NOT NULL COMMENT 'Добавлена в базу',"
request += "PRIMARY KEY (`id`),"
request += "UNIQUE KEY `id` (`id`),"
request += "KEY `locations_created_at` (`created_at`)"
request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Локации';"
_, err := tx.Exec(request)
if err != nil {
return err
}
@@ -52,6 +52,7 @@ func CreateLocationsUp(tx *sql.Tx) error {
return nil
}
// CreateLocationsDown drops `locations` table
func CreateLocationsDown(tx *sql.Tx) error {
_, err := tx.Exec("DROP TABLE `locations`;")
if err != nil {

View File

@@ -4,22 +4,22 @@
package migrations
import (
// stdlib
"database/sql"
)
// CreateElementsUp creates `elements` table and fills it with data
func CreateElementsUp(tx *sql.Tx) error {
create_request := "CREATE TABLE `elements` ("
create_request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID элемента',"
create_request += "`symbol` varchar(191) COLLATE 'utf8mb4_unicode_520_ci' NOT NULL COMMENT 'Символ элемента',"
create_request += "`name` varchar(191) NOT NULL COMMENT 'Имя элемента',"
create_request += "`league_id` int(11) NOT NULL COMMENT 'ID родной лиги',"
create_request += "`created_at` datetime NOT NULL COMMENT 'Добавлен в базу',"
create_request += "PRIMARY KEY (`id`),"
create_request += "UNIQUE KEY `id` (`id`),"
create_request += "KEY `elements_created_at` (`created_at`)"
create_request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Элементы';"
_, err := tx.Exec(create_request)
request := "CREATE TABLE `elements` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID элемента',"
request += "`symbol` varchar(191) COLLATE 'utf8mb4_unicode_520_ci' NOT NULL COMMENT 'Символ элемента',"
request += "`name` varchar(191) NOT NULL COMMENT 'Имя элемента',"
request += "`league_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 `elements_created_at` (`created_at`)"
request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Элементы';"
_, err := tx.Exec(request)
if err != nil {
return err
}
@@ -77,6 +77,7 @@ func CreateElementsUp(tx *sql.Tx) error {
return nil
}
// CreateElementsDown drops `elements` table
func CreateElementsDown(tx *sql.Tx) error {
_, err := tx.Exec("DROP TABLE `elements`;")
if err != nil {

View File

@@ -4,21 +4,21 @@
package migrations
import (
// stdlib
"database/sql"
)
// CreateLeaguesUp creates `leagues` table and fills it with data
func CreateLeaguesUp(tx *sql.Tx) error {
create_request := "CREATE TABLE `leagues` ("
create_request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID лиги',"
create_request += "`symbol` varchar(191) COLLATE 'utf8mb4_unicode_520_ci' NOT NULL COMMENT 'Символ лиги',"
create_request += "`name` varchar(191) NOT NULL COMMENT 'Имя лиги',"
create_request += "`created_at` datetime NOT NULL COMMENT 'Добавлена в базу',"
create_request += "PRIMARY KEY (`id`),"
create_request += "UNIQUE KEY `id` (`id`),"
create_request += "KEY `leagues_created_at` (`created_at`)"
create_request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Лиги';"
_, err := tx.Exec(create_request)
request := "CREATE TABLE `leagues` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID лиги',"
request += "`symbol` varchar(191) COLLATE 'utf8mb4_unicode_520_ci' NOT NULL COMMENT 'Символ лиги',"
request += "`name` varchar(191) NOT NULL COMMENT 'Имя лиги',"
request += "`created_at` datetime NOT NULL COMMENT 'Добавлена в базу',"
request += "PRIMARY KEY (`id`),"
request += "UNIQUE KEY `id` (`id`),"
request += "KEY `leagues_created_at` (`created_at`)"
request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Лиги';"
_, err := tx.Exec(request)
if err != nil {
return err
}
@@ -40,6 +40,7 @@ func CreateLeaguesUp(tx *sql.Tx) error {
return nil
}
// CreateLeaguesDown drops `leagues` table
func CreateLeaguesDown(tx *sql.Tx) error {
_, err := tx.Exec("DROP TABLE `leagues`;")
if err != nil {

View File

@@ -4,41 +4,42 @@
package migrations
import (
// stdlib
"database/sql"
)
// CreateRelationsUp creates tables for pokememes-locations and pokememes-elements links
func CreateRelationsUp(tx *sql.Tx) error {
create_request := "CREATE TABLE `pokememes_locations` ("
create_request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID связи',"
create_request += "`pokememe_id` int(11) NOT NULL COMMENT 'ID покемема',"
create_request += "`location_id` int(11) NOT NULL COMMENT 'ID локации',"
create_request += "`created_at` datetime NOT NULL COMMENT 'Добавлено в базу',"
create_request += "PRIMARY KEY (`id`),"
create_request += "UNIQUE KEY `id` (`id`),"
create_request += "KEY `pokememes_locations_created_at` (`created_at`)"
create_request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Связь Покемемы-Локации';"
_, err := tx.Exec(create_request)
request := "CREATE TABLE `pokememes_locations` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID связи',"
request += "`pokememe_id` int(11) NOT NULL COMMENT 'ID покемема',"
request += "`location_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 `pokememes_locations_created_at` (`created_at`)"
request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Связь Покемемы-Локации';"
_, err := tx.Exec(request)
if err != nil {
return err
}
create_request = "CREATE TABLE `pokememes_elements` ("
create_request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID связи',"
create_request += "`pokememe_id` int(11) NOT NULL COMMENT 'ID покемема',"
create_request += "`element_id` int(11) NOT NULL COMMENT 'ID элемента',"
create_request += "`created_at` datetime NOT NULL COMMENT 'Добавлено в базу',"
create_request += "PRIMARY KEY (`id`),"
create_request += "UNIQUE KEY `id` (`id`),"
create_request += "KEY `pokememes_elements_created_at` (`created_at`)"
create_request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Связь Покемемы-Элементы';"
_, err2 := tx.Exec(create_request)
request = "CREATE TABLE `pokememes_elements` ("
request += "`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID связи',"
request += "`pokememe_id` int(11) NOT NULL COMMENT 'ID покемема',"
request += "`element_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 `pokememes_elements_created_at` (`created_at`)"
request += ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Связь Покемемы-Элементы';"
_, err2 := tx.Exec(request)
if err2 != nil {
return err2
}
return nil
}
// CreateRelationsDown drops pokememe-* relations tables
func CreateRelationsDown(tx *sql.Tx) error {
_, err := tx.Exec("DROP TABLE `pokememes_locations`;")
if err != nil {

View File

@@ -4,10 +4,10 @@
package migrations
import (
// stdlib
"database/sql"
)
// UpdateLocationsUp fixes some fuckup with locations' emoji
func UpdateLocationsUp(tx *sql.Tx) error {
_, err := tx.Exec("UPDATE `locations` SET symbol='⛪' WHERE symbol=':church:';")
if err != nil {
@@ -25,6 +25,7 @@ func UpdateLocationsUp(tx *sql.Tx) error {
return nil
}
// UpdateLocationsDown returns location emoji fuckup for sanity purposes
func UpdateLocationsDown(tx *sql.Tx) error {
_, err := tx.Exec("UPDATE `locations` SET symbol=':church:' WHERE symbol='⛪'';")
if err != nil {

View File

@@ -4,15 +4,18 @@
package migrations
import (
// local
"lab.pztrn.name/fat0troll/i2_bot/lib/appcontext"
"lab.pztrn.name/fat0troll/i2_bot/lib/migrations/migrationsinterface"
)
// Migrations handles all functions of migrations package
type Migrations struct{}
var (
c *appcontext.Context
)
// New is an initialization function for migrations package
func New(ac *appcontext.Context) {
c = ac
m := &Migrations{}

View File

@@ -4,16 +4,12 @@
package migrations
import (
// stdlib
"log"
// 3rd-party
"github.com/pressly/goose"
)
type Migrations struct{}
// Init adds all migrations to applications
func (m *Migrations) Init() {
log.Printf("Initializing migrations...")
c.Log.Info("Initializing migrations...")
// All migrations are here
goose.AddNamedMigration("1_hello.go", HelloUp, nil)
goose.AddNamedMigration("2_create_players.go", CreatePlayersUp, CreatePlayersDown)
@@ -35,13 +31,15 @@ func (m *Migrations) Init() {
goose.AddNamedMigration("18_add_pokememes_wealth.go", AddPokememesWealthUp, AddPokememesWealthDown)
goose.AddNamedMigration("19_create_broadcasts.go", CreateBroadcastsUp, CreateBroadcastsDown)
goose.AddNamedMigration("20_create_squads.go", CreateSquadsUp, CreateSquadsDown)
goose.AddNamedMigration("21_change_telegram_id_column.go", ChangeTelegramIDColumnUp, ChangeTelegramIDColumnDown)
}
// Migrate migrates database to current version
func (m *Migrations) Migrate() error {
log.Printf("Starting database migrations...")
c.Log.Printf("Starting database migrations...")
err := goose.Up(c.Db.DB, ".")
if err != nil {
log.Fatal(err)
c.Log.Fatal(err)
return err
}
@@ -49,6 +47,7 @@ func (m *Migrations) Migrate() error {
return nil
}
// SetDialect sets dialect for migrations
func (m *Migrations) SetDialect(dialect string) error {
return goose.SetDialect(dialect)
}