ADD: team site and player/usermanagement is working
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"volleyball/internal/auth"
|
||||
"volleyball/internal/database"
|
||||
@@ -63,12 +64,16 @@ func main() {
|
||||
player.CreatePlayer(c, db.GetDB())
|
||||
})
|
||||
api.PUT("/players/:id", func(c *gin.Context) {
|
||||
log.Println("PUT /players/:id called", c.Params)
|
||||
player.UpdatePlayer(c, db.GetDB())
|
||||
})
|
||||
api.DELETE("/players/:id", func(c *gin.Context) {
|
||||
player.DeletePlayer(c, db.GetDB())
|
||||
// c.JSON(http.StatusOK, gin.H{"message": "Player deleted successfully"})
|
||||
})
|
||||
api.GET("/teams", func(c *gin.Context) {
|
||||
|
||||
})
|
||||
|
||||
port := os.Getenv("PORT")
|
||||
if port == "" {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
31
backend/internal/team/handler.go
Normal file
31
backend/internal/team/handler.go
Normal 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")
|
||||
}
|
||||
25
backend/internal/team/model.go
Normal file
25
backend/internal/team/model.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user