Skip to content

Instantly share code, notes, and snippets.

@marcounderscore
Last active April 27, 2019 00:59
Show Gist options
  • Save marcounderscore/cfec38abbada16e0cffa514a86a9228f to your computer and use it in GitHub Desktop.
Save marcounderscore/cfec38abbada16e0cffa514a86a9228f to your computer and use it in GitHub Desktop.
Local migration used for yorha-api in order to populate a mysql database using gorm creating method
package main
import (
"log"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
// Race is a table structure.
type Race struct {
gorm.Model
Name string `gorm:"size:100"`
}
// Automata is a table structure.
type Automata struct {
gorm.Model
Name string `gorm:"size:100"`
Occupation string `gorm:"size:100"`
Photo string `gorm:"size:500"`
RaceID uint
Race Race
}
// Class is a table structure.
type Class struct {
gorm.Model
Name string `gorm:"size:100"`
}
// Weapon is a table structure.
type Weapon struct {
gorm.Model
Name string `gorm:"size:100"`
MinAttack int
MaxAttack int
Ability string `gorm:"size:100"`
Photo string `gorm:"size:500"`
ClassID uint
Class Class
}
// PodProgram is a table structure.
type PodProgram struct {
gorm.Model
Name string `gorm:"size:100"`
Program string `gorm:"size:100"`
Cooldown int
Photo string `gorm:"size:500"`
}
// Zone is a table structure.
type Zone struct {
gorm.Model
Name string `gorm:"size:100"`
BossID uint
}
// Boss is a table structure.
type Boss struct {
gorm.Model
Name string `gorm:"size:100"`
Faction string `gorm:"size:100"`
Zones []Zone `gorm:"foreignkey:BossID"`
Photo string `gorm:"size:500"`
}
func main() {
db, err := gorm.Open(
"mysql",
"yorha_user:yorha_pass@/yorha_db?charset=utf8&parseTime=True&loc=Local",
)
if err != nil {
panic("Connection failed to open!")
} else {
log.Println("Connection established!")
}
defer db.Close()
/*db.DropTable(
&Automata{},
&Weapon{},
&Race{},
&Class{},
&PodProgram{},
&Zone{},
&Boss{},
)*/
// Migrate the schema
db.AutoMigrate(
&Race{},
&Automata{},
&Class{},
&Weapon{},
&PodProgram{},
&Zone{},
&Boss{},
)
db.Model(&Automata{}).AddForeignKey("race_id", "races(id)", "CASCADE", "CASCADE")
db.Model(&Weapon{}).AddForeignKey("class_id", "classes(id)", "CASCADE", "CASCADE")
// Races
db.Create(&Race{Name: "Android"})
db.Create(&Race{Name: "Machine"})
db.Create(&Race{Name: "Pod"})
db.Create(&Race{Name: "AI"})
// Automatas
db.Create(&Automata{Name: "YoRHa Type B No.2", Occupation: "YoRHa", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/yorha_2B_character.png", RaceID: 1})
db.Create(&Automata{Name: "YoRHa Type S No.9", Occupation: "YoRHa", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/yorha_2S_character.png", RaceID: 1})
db.Create(&Automata{Name: "YoRHa Type A No.2", Occupation: "YoRHa", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/yorha_A2_character.png", RaceID: 1})
db.Create(&Automata{Name: "YoRHa Type B No.64", Occupation: "YoRHa", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/64B_icon.jpg", RaceID: 1})
db.Create(&Automata{Name: "YoRHa Type B No.22", Occupation: "YoRHa", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/22B_icon.jpg", RaceID: 1})
db.Create(&Automata{Name: "YoRHa Type B No.8", Occupation: "YoRHa", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/8B_icon.jpg", RaceID: 1})
db.Create(&Automata{Name: "Emil", Occupation: "Shop", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Emil.jpg", RaceID: 2})
db.Create(&Automata{Name: "Pod 042", Occupation: "Support unit", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Pod_042_01.jpg", RaceID: 3})
db.Create(&Automata{Name: "Pod 153", Occupation: "Support unit", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Pod_153_01.jpg", RaceID: 3})
db.Create(&Automata{Name: "Operator 6O", Occupation: "YoRHa", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Operator_01.jpg", RaceID: 1})
db.Create(&Automata{Name: "Operator 21O", Occupation: "YoRHa", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Operator_21O.jpg", RaceID: 1})
db.Create(&Automata{Name: "Adam", Occupation: "Machine leader", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/adam-01.jpg", RaceID: 2})
db.Create(&Automata{Name: "Eve", Occupation: "Machine leader", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/eve-02.jpg", RaceID: 2})
db.Create(&Automata{Name: "Devola", Occupation: "YoRHa", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Devola_01.jpg", RaceID: 1})
db.Create(&Automata{Name: "Poppola", Occupation: "YoRHa", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Popola_01.jpg", RaceID: 1})
db.Create(&Automata{Name: "Pascal", Occupation: "Village leader", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/pascal.jpg", RaceID: 2})
db.Create(&Automata{Name: "Commander", Occupation: "YoRHa", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Commander_Header.jpg", RaceID: 1})
db.Create(&Automata{Name: "Anemone", Occupation: "Resistance leader", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Anemone.jpg", RaceID: 1})
db.Create(&Automata{Name: "N2", Occupation: "Terminal program", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/red_girl.jpg", RaceID: 4})
db.Create(&Automata{Name: "Jackass", Occupation: "Resistance", Photo: "https://proxy.duckduckgo.com/iu/?u=http%3A%2F%2Fstatici.behindthevoiceactors.com%2Fbehindthevoiceactors%2F_img%2Fchars%2Fjackass-nier-automata-4.85.jpg&f=1", RaceID: 1})
db.Create(&Automata{Name: "Jean Paul", Occupation: "Village machine", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/sartre.jpg", RaceID: 2})
db.Create(&Automata{Name: "Masemune", Occupation: "Master swordsmith", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/masamune.jpg", RaceID: 2})
db.Create(&Automata{Name: "Animal-loving machine", Occupation: "Farmer", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/animal_loving_machine.jpg", RaceID: 2})
db.Create(&Automata{Name: "Father servo", Occupation: "Warrior", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/father_stervo_white_belt.jpg", RaceID: 2})
db.Create(&Automata{Name: "High-Speed machine", Occupation: "Racer", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/High-Speed-Machine-Speedstar-Racer-Header1.jpg", RaceID: 2})
db.Create(&Automata{Name: "Little sister machine", Occupation: "Village machine", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/little_sister_machine.jpg", RaceID: 2})
db.Create(&Automata{Name: "Big sister machine", Occupation: "Village machine", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/big_sister_machine.jpg", RaceID: 2})
db.Create(&Automata{Name: "Machine in love", Occupation: "Village machine", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Machine_in_Love.jpg", RaceID: 2})
db.Create(&Automata{Name: "Child machine", Occupation: "Village machine", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/child_machine.jpg", RaceID: 2})
db.Create(&Automata{Name: "Scientist machine", Occupation: "Village machine", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/scientist_machine.jpg", RaceID: 2})
// Classes
db.Create(&Class{Name: "Small sword"})
db.Create(&Class{Name: "Large sword"})
db.Create(&Class{Name: "Spear"})
db.Create(&Class{Name: "Combat bracer"})
// Weapons
db.Create(&Weapon{Name: "Beastbane", MinAttack: 190, MaxAttack: 210, Ability: "Beast roar", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/beastbane_01.jpg", ClassID: 1})
db.Create(&Weapon{Name: "Engine blade", MinAttack: 160, MaxAttack: 200, Ability: "Shift avoid", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/engine-blade-nier-automata.jpg", ClassID: 1})
db.Create(&Weapon{Name: "Faith", MinAttack: 160, MaxAttack: 190, Ability: "Bullet absorb", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Faith.jpg", ClassID: 1})
db.Create(&Weapon{Name: "Type-40 sword", MinAttack: 170, MaxAttack: 180, Ability: "Energy charge", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Type%2040.bmp", ClassID: 1})
db.Create(&Weapon{Name: "Iron will", MinAttack: 250, MaxAttack: 400, Ability: "Steel spine", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/IronWill.jpg", ClassID: 2})
db.Create(&Weapon{Name: "Fang of the twins", MinAttack: 310, MaxAttack: 320, Ability: "Bullet rupture", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/FangTwins.jpg", ClassID: 2})
db.Create(&Weapon{Name: "Beast lord", MinAttack: 320, MaxAttack: 350, Ability: "Beast roar", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Beastlord_01.jpg", ClassID: 2})
db.Create(&Weapon{Name: "Type-40 blade", MinAttack: 320, MaxAttack: 330, Ability: "Energy charge", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Type-4O_Blade.jpg", ClassID: 2})
db.Create(&Weapon{Name: "Beastcurse", MinAttack: 240, MaxAttack: 265, Ability: "Beast roar", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Beastcurse.jpg", ClassID: 3})
db.Create(&Weapon{Name: "Dragon lance", MinAttack: 250, MaxAttack: 260, Ability: "Dragon wings", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Dragoon_Lance.jpg", ClassID: 3})
db.Create(&Weapon{Name: "Phoenix lance", MinAttack: 210, MaxAttack: 250, Ability: "Phoenix flash", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/PhoenixLance.jpg", ClassID: 3})
db.Create(&Weapon{Name: "Type-40 lance", MinAttack: 240, MaxAttack: 250, Ability: "Energy charge", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Type-4O_Lance.jpg", ClassID: 3})
db.Create(&Weapon{Name: "Bare fist", MinAttack: 100, MaxAttack: 100, Ability: "", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/bare_fists.png", ClassID: 4})
db.Create(&Weapon{Name: "Angel's folly", MinAttack: 570, MaxAttack: 627, Ability: "Angel's mercy", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Angel's%20Folly.jpg", ClassID: 4})
db.Create(&Weapon{Name: "Demon's cry", MinAttack: 100, MaxAttack: 180, Ability: "Devil's hatred", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/DemonsCry.jpg", ClassID: 4})
db.Create(&Weapon{Name: "Type-40 fists", MinAttack: 140, MaxAttack: 150, Ability: "Energy charge", Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Type4O.jpg", ClassID: 4})
//Pod programs
db.Create(&PodProgram{Name: "Laser", Program: "R010", Cooldown: 1300, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/r010_laser.jpg"})
db.Create(&PodProgram{Name: "Mirage", Program: "R020", Cooldown: 1150, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/R020_mirage_01.jpg"})
db.Create(&PodProgram{Name: "Hammer", Program: "R030", Cooldown: 1200, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/R030_hammer_01.jpg"})
db.Create(&PodProgram{Name: "Blade", Program: "R040", Cooldown: 0, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/R040_blade_01.jpg"})
db.Create(&PodProgram{Name: "Spear", Program: "R050", Cooldown: 600, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/R050_spear_01.jpg"})
db.Create(&PodProgram{Name: "P shield", Program: "A060", Cooldown: 1300, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/A060_p_shield_01.jpg"})
db.Create(&PodProgram{Name: "M shield", Program: "R070", Cooldown: 1300, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/R070_m_shield_01.jpg"})
db.Create(&PodProgram{Name: "Wave", Program: "A080", Cooldown: 0, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/wave.PNG"})
db.Create(&PodProgram{Name: "Wire", Program: "A090", Cooldown: 0, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/wire.PNG"})
db.Create(&PodProgram{Name: "Decoy", Program: "A100", Cooldown: 1300, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/r100_decoy.jpg"})
db.Create(&PodProgram{Name: "Slow", Program: "A110", Cooldown: 1300, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/r110_slow.jpg"})
db.Create(&PodProgram{Name: "Repair", Program: "A120", Cooldown: 800, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/r120_repair.jpg"})
db.Create(&PodProgram{Name: "Bomb", Program: "A130", Cooldown: 800, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/a130_bomb.jpg"})
db.Create(&PodProgram{Name: "Gravity", Program: "A140", Cooldown: 1300, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/a140_gravity.jpg"})
db.Create(&PodProgram{Name: "Volt", Program: "A150", Cooldown: 500, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/a150_volt.jpg"})
db.Create(&PodProgram{Name: "Missile", Program: "A160", Cooldown: 1200, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/a160_missle.jpg"})
db.Create(&PodProgram{Name: "Scanner", Program: "A170", Cooldown: 0, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/a170_scanner.jpg"})
// Bosses
db.Create(&Boss{Name: "Marx", Faction: "Special unit machines", Zones: []Zone{{Name: "Abandoned factory"}}, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/excavator.jpg"})
db.Create(&Boss{Name: "Engels", Faction: "Special unit machines", Zones: []Zone{{Name: "Abandoned factory"}, {Name: "City ruins"}}, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/goliath.jpg"})
db.Create(&Boss{Name: "Beauvoir", Faction: "Machine", Zones: []Zone{{Name: "Amusement park"}}, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/beauvoir.jpg"})
db.Create(&Boss{Name: "Grun", Faction: "Machines", Zones: []Zone{{Name: "Ocean"}}, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/grun.jpg"})
db.Create(&Boss{Name: "Hegel", Faction: "Machines", Zones: []Zone{{Name: "Desert"}}, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Hegel_Page_Header.jpg"})
db.Create(&Boss{Name: "Emil clones", Faction: "Humans", Zones: []Zone{{Name: "Desert"}}, Photo: "https://nierautomata.wiki.fextralife.com/file/Nier-Automata/Emil_Clones_Header.jpg"})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment