mirror of
https://github.com/araxiaonline/wow-item-generator.git
synced 2026-06-13 03:02:22 -04:00
initial commit
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
.env
|
||||||
|
|
||||||
12
go.mod
Normal file
12
go.mod
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
module github.com/araxiaonline/endgame-item-generator
|
||||||
|
|
||||||
|
go 1.22.4
|
||||||
|
|
||||||
|
replace github.com/araxiaonline/endgame-item-generator/models => ./models
|
||||||
|
|
||||||
|
require github.com/go-sql-driver/mysql v1.8.1
|
||||||
|
|
||||||
|
require (
|
||||||
|
filippo.io/edwards25519 v1.1.0 // indirect
|
||||||
|
github.com/joho/godotenv v1.5.1 // indirect
|
||||||
|
)
|
||||||
6
go.sum
Normal file
6
go.sum
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||||
|
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||||
|
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
|
||||||
|
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
|
||||||
|
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
||||||
|
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
||||||
49
main.go
Normal file
49
main.go
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/araxiaonline/endgame-item-generator/models"
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
"github.com/joho/godotenv"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
godotenv.Load()
|
||||||
|
|
||||||
|
models.Connect()
|
||||||
|
|
||||||
|
bosses, err := models.DB.GetBosses(189)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, boss := range bosses {
|
||||||
|
log.Println(boss)
|
||||||
|
}
|
||||||
|
|
||||||
|
defer models.DB.Close()
|
||||||
|
|
||||||
|
// var rows *sql.Rows
|
||||||
|
// rows, err = DB.Query("SELECT name, entry FROM item_template where name like 'Hypnotic B%';")
|
||||||
|
// if err != nil {
|
||||||
|
// log.Fatal(err)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// for rows.Next() {
|
||||||
|
// var name string
|
||||||
|
// var entry int
|
||||||
|
|
||||||
|
// err := rows.Scan(&name, &entry)
|
||||||
|
// if err != nil {
|
||||||
|
// log.Fatal(err)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fmt.Println(name, entry)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// rows.Close()
|
||||||
|
|
||||||
|
// defer db.Close()
|
||||||
|
}
|
||||||
27
models/connect.go
Normal file
27
models/connect.go
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Database struct {
|
||||||
|
client *sql.DB
|
||||||
|
}
|
||||||
|
|
||||||
|
var DB Database
|
||||||
|
|
||||||
|
func Connect() {
|
||||||
|
var connString string = os.Getenv("DB_USER") + ":" + os.Getenv("DB_PASSWORD") + "@tcp(" + os.Getenv("DB_HOST") + ")/" + os.Getenv("DB_NAME")
|
||||||
|
var err error
|
||||||
|
DB.client, err = sql.Open("mysql", connString)
|
||||||
|
if err != nil {
|
||||||
|
panic(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (db Database) Close() {
|
||||||
|
db.client.Close()
|
||||||
|
}
|
||||||
56
models/map.go
Normal file
56
models/map.go
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
// "database/sql"
|
||||||
|
_ "github.com/go-sql-driver/mysql"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Boss struct {
|
||||||
|
entry int
|
||||||
|
name string
|
||||||
|
scriptName string
|
||||||
|
xpMultiplier int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (db Database) GetBosses(mapId int) ([]Boss, error) {
|
||||||
|
|
||||||
|
if mapId == 0 {
|
||||||
|
return nil, errors.New("mapId cannot be 0")
|
||||||
|
}
|
||||||
|
|
||||||
|
var bosses []Boss
|
||||||
|
var sql string
|
||||||
|
|
||||||
|
// 540 is pre-classic dungeons so XP Multiplier is best way to determine bosses / rare mobs
|
||||||
|
if mapId < 540 {
|
||||||
|
sql = `
|
||||||
|
SELECT ct.entry, ct.name, ct.ScriptName, ct.ExperienceModifier from acore_world.creature c
|
||||||
|
join acore_world.creature_template ct ON(c.id1 = ct.entry) where map = ? and ExperienceModifier >= 2;
|
||||||
|
`
|
||||||
|
} else {
|
||||||
|
sql = `
|
||||||
|
SELECT ct.entry, ct.name, ct.ScriptName, ct.ExperienceModifier from acore_world.creature c
|
||||||
|
join acore_world.creature_template ct ON(c.id1 = ct.entry) where map = ? and ct.ScriptName Like 'boss_%'
|
||||||
|
`
|
||||||
|
}
|
||||||
|
|
||||||
|
rows, err := db.client.Query(sql, mapId)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for rows.Next() {
|
||||||
|
var boss Boss
|
||||||
|
err := rows.Scan(&boss.entry, &boss.name, &boss.scriptName, &boss.xpMultiplier)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
bosses = append(bosses, boss)
|
||||||
|
}
|
||||||
|
|
||||||
|
print(len(bosses))
|
||||||
|
|
||||||
|
return bosses, nil
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user