Database connections, refactoring, pokememe parsing in progress
This commit is contained in:
18
lib/migrations/1_hello.go
Normal file
18
lib/migrations/1_hello.go
Normal file
@@ -0,0 +1,18 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
// stdlib
|
||||
"database/sql"
|
||||
"log"
|
||||
)
|
||||
|
||||
// First migration, added for testing purposes
|
||||
|
||||
func HelloUp(tx *sql.Tx) error {
|
||||
log.Printf("Migration framework loaded. All systems are OK.")
|
||||
|
||||
return nil
|
||||
}
|
38
lib/migrations/2_create_players.go
Normal file
38
lib/migrations/2_create_players.go
Normal file
@@ -0,0 +1,38 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
// stdlib
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
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)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreatePlayersDown(tx *sql.Tx) error {
|
||||
_, err := tx.Exec("DROP TABLE `players`;")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
42
lib/migrations/3_create_profiles.go
Normal file
42
lib/migrations/3_create_profiles.go
Normal file
@@ -0,0 +1,42 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
// stdlib
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
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)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreateProfilesDown(tx *sql.Tx) error {
|
||||
_, err := tx.Exec("DROP TABLE `profiles`;")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
44
lib/migrations/4_create_pokememes.go
Normal file
44
lib/migrations/4_create_pokememes.go
Normal file
@@ -0,0 +1,44 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
// stdlib
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
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)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreatePokememesDown(tx *sql.Tx) error {
|
||||
_, err := tx.Exec("DROP TABLE `pokememes`;")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
61
lib/migrations/5_create_locations.go
Normal file
61
lib/migrations/5_create_locations.go
Normal file
@@ -0,0 +1,61 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
// stdlib
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
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)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Insert locations
|
||||
_, err2 := tx.Exec("INSERT INTO `locations` VALUES(NULL, ':evergreen_tree:', 'Лес', NOW());")
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
_, err3 := tx.Exec("INSERT INTO `locations` VALUES(NULL, '⛰', 'Горы', NOW());")
|
||||
if err3 != nil {
|
||||
return err2
|
||||
}
|
||||
_, err4 := tx.Exec("INSERT INTO `locations` VALUES(NULL, ':rowboat:', 'Озеро', NOW());")
|
||||
if err4 != nil {
|
||||
return err2
|
||||
}
|
||||
_, err5 := tx.Exec("INSERT INTO `locations` VALUES(NULL, '🏙:', 'Город', NOW());")
|
||||
if err5 != nil {
|
||||
return err2
|
||||
}
|
||||
_, err6 := tx.Exec("INSERT INTO `locations` VALUES(NULL, '🏛', 'Катакомбы', NOW());")
|
||||
if err6 != nil {
|
||||
return err2
|
||||
}
|
||||
_, err7 := tx.Exec("INSERT INTO `locations` VALUES(NULL, ':church:', 'Кладбище', NOW());")
|
||||
if err7 != nil {
|
||||
return err2
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreateLocationsDown(tx *sql.Tx) error {
|
||||
_, err := tx.Exec("DROP TABLE `locations`;")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
86
lib/migrations/6_create_elements.go
Normal file
86
lib/migrations/6_create_elements.go
Normal file
@@ -0,0 +1,86 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
// stdlib
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
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)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Insert elements
|
||||
_, err2 := tx.Exec("INSERT INTO `elements` VALUES(NULL, '👊', 'Боевой', 1, NOW());")
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
_, err3 := tx.Exec("INSERT INTO `elements` VALUES(NULL, '🌀', 'Летающий', 1, NOW());")
|
||||
if err3 != nil {
|
||||
return err3
|
||||
}
|
||||
_, err4 := tx.Exec("INSERT INTO `elements` VALUES(NULL, '💀', 'Ядовитый', 1, NOW());")
|
||||
if err4 != nil {
|
||||
return err4
|
||||
}
|
||||
_, err5 := tx.Exec("INSERT INTO `elements` VALUES(NULL, '🗿', 'Каменный', 1, NOW());")
|
||||
if err5 != nil {
|
||||
return err5
|
||||
}
|
||||
_, err6 := tx.Exec("INSERT INTO `elements` VALUES(NULL, '🔥', 'Огненный', 2, NOW());")
|
||||
if err6 != nil {
|
||||
return err6
|
||||
}
|
||||
_, err7 := tx.Exec("INSERT INTO `elements` VALUES(NULL, '⚡', 'Электрический', 2, NOW());")
|
||||
if err7 != nil {
|
||||
return err7
|
||||
}
|
||||
_, err8 := tx.Exec("INSERT INTO `elements` VALUES(NULL, '💧', 'Водяной', 2, NOW());")
|
||||
if err8 != nil {
|
||||
return err8
|
||||
}
|
||||
_, err9 := tx.Exec("INSERT INTO `elements` VALUES(NULL, '🍀', 'Травяной', 2, NOW());")
|
||||
if err9 != nil {
|
||||
return err9
|
||||
}
|
||||
_, err10 := tx.Exec("INSERT INTO `elements` VALUES(NULL, '💩', 'Шоколадный', 3, NOW());")
|
||||
if err10 != nil {
|
||||
return err10
|
||||
}
|
||||
_, err11 := tx.Exec("INSERT INTO `elements` VALUES(NULL, '👁', 'Психический', 3, NOW());")
|
||||
if err11 != nil {
|
||||
return err11
|
||||
}
|
||||
_, err12 := tx.Exec("INSERT INTO `elements` VALUES(NULL, '👿', 'Темный', 3, NOW());")
|
||||
if err12 != nil {
|
||||
return err12
|
||||
}
|
||||
_, err13 := tx.Exec("INSERT INTO `elements` VALUES(NULL, '⌛', 'Времени', 1, NOW());")
|
||||
if err13 != nil {
|
||||
return err13
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreateElementsDown(tx *sql.Tx) error {
|
||||
_, err := tx.Exec("DROP TABLE `elements`;")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
49
lib/migrations/7_create_leagues.go
Normal file
49
lib/migrations/7_create_leagues.go
Normal file
@@ -0,0 +1,49 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
// stdlib
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
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)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Insert locations
|
||||
_, err2 := tx.Exec("INSERT INTO `leagues` VALUES(NULL, ':u7533:', 'ИНСТИНКТ', NOW());")
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
_, err3 := tx.Exec("INSERT INTO `leagues` VALUES(NULL, ':u6e80', 'ОТВАГА', NOW());")
|
||||
if err3 != nil {
|
||||
return err2
|
||||
}
|
||||
_, err4 := tx.Exec("INSERT INTO `leagues` VALUES(NULL, ':u7a7a:', 'МИСТИКА', NOW());")
|
||||
if err4 != nil {
|
||||
return err2
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreateLeaguesDown(tx *sql.Tx) error {
|
||||
_, err := tx.Exec("DROP TABLE `leagues`;")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
52
lib/migrations/8_create_relations.go
Normal file
52
lib/migrations/8_create_relations.go
Normal file
@@ -0,0 +1,52 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
// stdlib
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
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)
|
||||
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)
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreateRelationsDown(tx *sql.Tx) error {
|
||||
_, err := tx.Exec("DROP TABLE `pokememes_locations`;")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err2 := tx.Exec("DROP TABLE `pokememes_elements`;")
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
return nil
|
||||
}
|
20
lib/migrations/exported.go
Normal file
20
lib/migrations/exported.go
Normal file
@@ -0,0 +1,20 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
// local
|
||||
"../appcontext"
|
||||
"../migrations/migrationsinterface"
|
||||
)
|
||||
|
||||
var (
|
||||
c *appcontext.Context
|
||||
)
|
||||
|
||||
func New(ac *appcontext.Context) {
|
||||
c = ac
|
||||
m := &Migrations{}
|
||||
c.RegisterMigrationsInterface(migrationsinterface.MigrationsInterface(m))
|
||||
}
|
42
lib/migrations/migrations.go
Normal file
42
lib/migrations/migrations.go
Normal file
@@ -0,0 +1,42 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
// stdlib
|
||||
"log"
|
||||
// 3rd-party
|
||||
"github.com/pressly/goose"
|
||||
)
|
||||
|
||||
type Migrations struct {}
|
||||
|
||||
func (m *Migrations) Init() {
|
||||
log.Printf("Initializing migrations...")
|
||||
// All migrations are here
|
||||
goose.AddNamedMigration("1_hello.go", HelloUp, nil)
|
||||
goose.AddNamedMigration("2_create_players.go", CreatePlayersUp, CreatePlayersDown)
|
||||
goose.AddNamedMigration("3_create_profiles.go", CreateProfilesUp, CreateProfilesDown)
|
||||
goose.AddNamedMigration("4_create_pokememes.go", CreatePokememesUp, CreatePokememesDown)
|
||||
goose.AddNamedMigration("5_create_locations.go", CreateLocationsUp, CreateLocationsDown)
|
||||
goose.AddNamedMigration("6_create_elements.go", CreateElementsUp, CreateElementsDown)
|
||||
goose.AddNamedMigration("7_create_leagues.go", CreateLeaguesUp, CreateLeaguesDown)
|
||||
goose.AddNamedMigration("8_create_relations.go", CreateRelationsUp, CreateRelationsDown)
|
||||
}
|
||||
|
||||
func (m *Migrations) Migrate() error {
|
||||
log.Printf("Starting database migrations...")
|
||||
err := goose.Up(c.Db.DB, ".")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Migrations) SetDialect(dialect string) error {
|
||||
return goose.SetDialect(dialect)
|
||||
}
|
10
lib/migrations/migrationsinterface/migrationsinterface.go
Normal file
10
lib/migrations/migrationsinterface/migrationsinterface.go
Normal file
@@ -0,0 +1,10 @@
|
||||
// i2_bot – Instinct PokememBro Bot
|
||||
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package migrationsinterface
|
||||
|
||||
type MigrationsInterface interface {
|
||||
Init()
|
||||
Migrate() error
|
||||
SetDialect(dialect string) error
|
||||
}
|
Reference in New Issue
Block a user