ADD: added team management

This commit is contained in:
hwinkel
2025-11-28 14:31:12 +01:00
parent 3a6c3a86e3
commit aac5a3c21d
14 changed files with 587 additions and 166 deletions

View File

@@ -16,16 +16,46 @@ func GetTeams(c *gin.Context, db *sql.DB) {
teams, err := GetAllTeams(db)
if err != nil {
log.Printf("Error retrieving teams: %v", err)
common.RespondError(c, http.StatusInternalServerError, "Failed to retrieve players")
common.RespondError(c, http.StatusInternalServerError, "Failed to retrieve teams")
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"))
c.JSON(http.StatusOK, teams)
// if len(teams) > 0 {
// return
// }
// common.RespondMessage(c, "No Players found")
}
func CreateTeam(c *gin.Context, db *sql.DB) {
var team Team
if err := c.ShouldBindJSON(&team); err != nil {
common.RespondError(c, http.StatusBadRequest, "Invalid request payload")
return
}
err := saveTeam(db, team)
if err != nil {
log.Printf("Error saving team: %v", err)
common.RespondError(c, http.StatusBadRequest, "Error saving Team")
}
common.RespondSuccess(c, http.StatusOK)
}
func UpdateTeam(c *gin.Context, db *sql.DB) {
log.Println("team id: ", c.Param("uuid"))
var team Team
if err := c.ShouldBindJSON(&team); err != nil {
common.RespondError(c, http.StatusBadRequest, "Error updating Team; Could not bind Params")
return
}
team.UUID = c.Param("uuid")
err := updateTeam(db, team)
if err != nil {
log.Printf("Error updating team: %v", err)
common.RespondError(c, http.StatusBadRequest, "Error updating Team")
}
common.RespondSuccess(c, http.StatusOK)
common.RespondError(c, http.StatusNotFound, "No Players found")
}

View File

@@ -2,24 +2,63 @@ package team
import (
"database/sql"
"log"
)
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:"name" sql:"VARCHAR(100)"`
OwnerUUID string `db:"owner_uuid" sql:"VARCHAR(255)" index:"true"`
Description string `db:"describtion" sql:"VARCHAR(255)"`
}
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)"`
type TeamPlayerAssociation struct {
TeamUUID string `db:"team_uuid" sql:"VARCHAR(255)" index:"true"`
PlayerUUID string `db:"player_uuid" sql:"VARCHAR(255)" index:"true"`
}
func GetAllTeams(db *sql.DB) ([]Team, error) {
// Implementation to retrieve all teams from the database
return []Team{}, nil
var teams []Team
rows, err := db.Query("SELECT * FROM teams")
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
var team Team
if err := rows.Scan(&team.UUID, &team.Name, &team.OwnerUUID, &team.Description); err != nil {
return nil, err
}
teams = append(teams, team)
}
if err := rows.Err(); err != nil {
return nil, err
}
return teams, nil
}
func saveTeam(db *sql.DB, team Team) error {
stmt := "INSERT INTO public.teams (name, owner_uuid,description) VALUES ($1, $2, $3)"
log.Printf("Generated SQL statement: %s", stmt)
_, err := db.Exec(stmt, team.Name, team.OwnerUUID, team.Description)
if err != nil {
log.Printf("Error saving team to database: %v", err)
}
log.Printf("Team %s saved to database", team.Name)
return nil
}
func updateTeam(db *sql.DB, team Team) error {
stmt := "UPDATE public.teams SET name = $1, description = $2 WHERE uuid = $3"
_, err := db.Exec(stmt, team.Name, team.Description, team.UUID)
if err != nil {
log.Printf("Error updating team in database: %v", err)
return err
}
log.Printf("Team %s updated successfully", team.Name)
return nil
}