Pins to supergroups, managed by admins
This commit is contained in:
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -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 {
|
||||
|
28
lib/migrations/21_change_telegram_id_column.go
Normal file
28
lib/migrations/21_change_telegram_id_column.go
Normal 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
|
||||
}
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -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{}
|
||||
|
@@ -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)
|
||||
}
|
||||
|
Reference in New Issue
Block a user