A one size fits all plugin for vanilla servers running Minecraft Beta 1.7.3
at master 69 lines 1.8 kB view raw
1package plugindao 2 3import ( 4 "database/sql" 5 "errors" 6 "time" 7 8 userdao "github.com/dinkelspiel/goldenage/web/dao/user" 9 "github.com/dinkelspiel/goldenage/web/models" 10) 11 12func scanServerRow(rows *sql.Rows, db *sql.DB) (*models.Server, error) { 13 var server models.Server 14 var createdAt string 15 var updatedAt sql.NullString 16 17 if err := rows.Scan(&server.Id, &server.Name, &server.Secret, &server.ServerAddress, &server.UserId, &createdAt, &updatedAt); err != nil { 18 return nil, err 19 } 20 21 createdAtTime, err := time.Parse("2006-01-02 15:04:05", createdAt) 22 if err != nil { 23 return nil, err 24 } 25 server.CreatedAt = &createdAtTime 26 27 if updatedAt.Valid { 28 updatedAtTime, err := time.Parse("2006-01-02 15:04:05", updatedAt.String) 29 if err != nil { 30 return nil, err 31 } 32 server.UpdatedAt = &updatedAtTime 33 } else { 34 server.UpdatedAt = nil 35 } 36 37 server.User, err = userdao.GetUserById(db, server.UserId) 38 if err != nil { 39 return nil, err 40 } 41 42 return &server, nil 43} 44 45func GetServerByIdAndSecret(db *sql.DB, id int64, secret string) (*models.Server, error) { 46 rows, err := db.Query("SELECT id, name, secret, server_address, user_id, created_at, updated_at FROM servers WHERE id = ? AND secret = ?", id, secret) 47 if err != nil { 48 return nil, err 49 } 50 defer rows.Close() 51 52 if rows.Next() { 53 return scanServerRow(rows, db) 54 } 55 return nil, errors.New("no servers found with matching id and secret") 56} 57 58func GetServerById(db *sql.DB, id int64) (*models.Server, error) { 59 rows, err := db.Query("SELECT id, name, secret, server_address, user_id, created_at, updated_at FROM servers WHERE id = ?", id) 60 if err != nil { 61 return nil, err 62 } 63 defer rows.Close() 64 65 if rows.Next() { 66 return scanServerRow(rows, db) 67 } 68 return nil, errors.New("no servers found with matching id") 69}