ADD: team site and player/usermanagement is working

This commit is contained in:
hwinkel
2025-11-22 14:51:53 +01:00
parent 846a922a41
commit 139a99d96e
13 changed files with 229 additions and 111 deletions

View File

@@ -100,13 +100,15 @@ func GetPlayer(c *gin.Context, db *sql.DB, id string) {
}
func UpdatePlayer(c *gin.Context, db *sql.DB) {
log.Println(c)
playerID := c.Param("id")
if playerID == "" {
common.RespondError(c, http.StatusBadRequest, "Player ID is required")
return
}
if playerID != c.GetString("userId") || c.GetString("role") != "admin" {
log.Println("role: ", c.GetString("role"))
// playerID != c.GetString("userId") ||
if c.GetString("role") != "admin" {
common.RespondError(c, http.StatusForbidden, "You do not have permission to update this player")
return
}

View File

@@ -11,20 +11,20 @@ import (
)
type User struct {
UUID string `db:"uuid" sql:"VARCHAR(255)" index:"true"`
Username string `db:"username" sql:"VARCHAR(100)"`
Email string `db:"email" sql:"VARCHAR(255)" index:"true"`
lastname sql.NullString `db:"lastname" sql:"VARCHAR(100)"`
firstname sql.NullString `db:"firstname" sql:"VARCHAR(100)"`
password string `db:"password_hash" sql:"VARCHAR(255)"`
phone sql.NullString `db:"phone" sql:"VARCHAR(20)"`
avatarURL sql.NullString `db:"avatar_url" sql:"VARCHAR(255)"`
IsActive sql.NullBool `db:"is_active" sql:"BOOLEAN"`
birthday *time.Time `db:"birthday" sql:"DATE"`
createdAt *time.Time `db:"created_at" sql:"TIMESTAMP"`
updatedAt *time.Time `db:"updated_at" sql:"TIMESTAMP"`
LastLogin *time.Time `db:"last_login" sql:"TIMESTAMP"`
Role []string `ignore:"true"` // wird NICHT in der DB angelegt
UUID string `db:"uuid" sql:"VARCHAR(255)" index:"true"`
Username string `db:"username" sql:"VARCHAR(100)"`
Email string `db:"email" sql:"VARCHAR(255)" index:"true"`
lastname sql.NullString `db:"lastname" sql:"VARCHAR(100)"`
firstname sql.NullString `db:"firstname" sql:"VARCHAR(100)"`
password string `db:"password_hash" sql:"VARCHAR(255)"`
phone sql.NullString `db:"phone" sql:"VARCHAR(20)"`
avatarURL sql.NullString `db:"avatar_url" sql:"VARCHAR(255)"`
IsActive sql.NullBool `db:"is_active" sql:"BOOLEAN"`
birthday *time.Time `db:"birthday" sql:"DATE"`
Created_at *time.Time `db:"created_at" sql:"TIMESTAMP"`
updatedAt *time.Time `db:"updated_at" sql:"TIMESTAMP"`
LastLogin *time.Time `db:"last_login" sql:"TIMESTAMP"`
Role []string `ignore:"true"` // wird NICHT in der DB angelegt
}
@@ -236,7 +236,7 @@ func GetAllPlayers(db *sql.DB) ([]User, error) {
&player.lastname,
&player.birthday,
&player.IsActive,
&player.createdAt,
&player.Created_at,
(*pq.StringArray)(&player.Role),
); err != nil {
log.Printf("Error scanning player row: %v", err)
@@ -305,7 +305,7 @@ func updatePlayer(db *sql.DB, player User) error {
log.Printf("Updating player: ID=%v, Name=%v, Email=%v", player.UUID, player.Username, player.Email)
stmt := "UPDATE public.users SET name = $1, email = $2 WHERE id = $3"
stmt := "UPDATE public.users SET username = $1, email = $2 WHERE uuid = $3"
_, err := db.Exec(stmt, player.Username, player.Email, player.UUID)
if err != nil {
log.Printf("Error updating player in database: %v", err)

View File

@@ -0,0 +1,31 @@
package team
import (
"database/sql"
"log"
"net/http"
"volleyball/internal/common"
"github.com/gin-gonic/gin"
)
func GetTeams(c *gin.Context, db *sql.DB) {
log.Println(c.GetString("userId"), c.GetString("email"), c.GetString("role"))
// Simulate fetching players from a database
teams, err := GetAllTeams(db)
if err != nil {
log.Printf("Error retrieving teams: %v", err)
common.RespondError(c, http.StatusInternalServerError, "Failed to retrieve players")
return
}
if len(teams) > 0 {
log.Printf("User %s (%s) requested players", c.GetString("userId"), c.GetString("email"))
c.JSON(http.StatusOK, teams)
return
}
log.Printf("User %s (%s) requested players, but none found", c.GetString("userId"), c.GetString("email"))
common.RespondError(c, http.StatusNotFound, "No Players found")
}

View File

@@ -0,0 +1,25 @@
package team
import (
"database/sql"
)
type Player struct {
UUID string `db:"uuid" sql:"VARCHAR(255)" index:"true"`
Email string `db:"email" sql:"VARCHAR(255)" index:"true"`
Username string `db:"username" sql:"VARCHAR(100)"`
FirstName string `db:"firstname" sql:"VARCHAR(100)"`
LastName string `db:"lastname" sql:"VARCHAR(100)"`
}
type Team struct {
UUID string `db:"uuid" sql:"VARCHAR(255)" index:"true"`
Name string `db:"username" sql:"VARCHAR(100)"`
Email string `db:"email" sql:"VARCHAR(255)" index:"true"`
PlayersUUID []Player `db:"players" sql:"JSVARCHAR(255)"`
}
func GetAllTeams(db *sql.DB) ([]Team, error) {
// Implementation to retrieve all teams from the database
return []Team{}, nil
}