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