ADD: added new user data model and updated the administration site
This commit is contained in:
@@ -67,6 +67,7 @@ func main() {
|
||||
})
|
||||
api.DELETE("/players/:id", func(c *gin.Context) {
|
||||
player.DeletePlayer(c, db.GetDB())
|
||||
// c.JSON(http.StatusOK, gin.H{"message": "Player deleted successfully"})
|
||||
})
|
||||
|
||||
port := os.Getenv("PORT")
|
||||
|
||||
@@ -32,6 +32,7 @@ func GetPlayers(c *gin.Context, db *sql.DB) {
|
||||
}
|
||||
|
||||
func CreatePlayer(c *gin.Context, db *sql.DB) {
|
||||
log.Println("CreatePlayer called")
|
||||
var newPlayer User
|
||||
var err error
|
||||
if err := c.ShouldBindJSON(&newPlayer); err != nil {
|
||||
@@ -149,5 +150,6 @@ func DeletePlayer(c *gin.Context, db *sql.DB) {
|
||||
|
||||
log.Printf("User %s (%s) deleted player with ID: %s", c.GetString("userId"), c.GetString("email"), playerID)
|
||||
|
||||
common.RespondMessage(c, "Player deleted successfully")
|
||||
c.JSON(http.StatusOK, gin.H{"message": "Player deleted successfully"})
|
||||
// common.RespondSuccess(c, "Player deleted successfully")
|
||||
}
|
||||
|
||||
@@ -7,23 +7,24 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/lib/pq"
|
||||
)
|
||||
|
||||
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 string `db:"lastname" sql:"VARCHAR(100)"`
|
||||
fistname string `db:"fistname" sql:"VARCHAR(100)"`
|
||||
password string `db:"password_hash" sql:"VARCHAR(255)"`
|
||||
phone string `db:"phone" sql:"VARCHAR(20)"`
|
||||
avatarURL string `db:"avatar_url" sql:"VARCHAR(255)"`
|
||||
IsActive bool `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"`
|
||||
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
|
||||
|
||||
}
|
||||
|
||||
@@ -173,7 +174,7 @@ func savePlayer(db *sql.DB, player User) error {
|
||||
|
||||
log.Printf("Saving player: ID=%v, Name=%v, Email=%v", player.UUID, player.Username, player.Email)
|
||||
|
||||
stmt := "INSERT INTO public.users (id, name, email,password_hash) VALUES ($1, $2, $3,$4)"
|
||||
stmt := "INSERT INTO public.users (UUID, username, email,password_hash) VALUES ($1, $2, $3,$4)"
|
||||
log.Printf("Generated SQL statement: %s", stmt)
|
||||
_, err := db.Exec(stmt, player.UUID, player.Username, player.Email, player.password)
|
||||
|
||||
@@ -203,7 +204,7 @@ func AddRoleToPlayer(db *sql.DB, playerID string, role []string) error {
|
||||
log.Printf("Adding role '%s' to player with ID: %s", role, playerID)
|
||||
|
||||
stmt := "INSERT INTO public.roles (player_id, role) VALUES ($1, $2)"
|
||||
_, err := db.Exec(stmt, playerID, role)
|
||||
_, err := db.Exec(stmt, playerID, pq.Array(role))
|
||||
if err != nil {
|
||||
log.Printf("Error adding role to player with ID %s: %v", playerID, err)
|
||||
return err
|
||||
@@ -214,7 +215,11 @@ func AddRoleToPlayer(db *sql.DB, playerID string, role []string) error {
|
||||
}
|
||||
|
||||
func GetAllPlayers(db *sql.DB) ([]User, error) {
|
||||
rows, err := db.Query("SELECT id, name, email FROM public.users")
|
||||
// rows, err := db.Query("SELECT id, name, email FROM public.users")
|
||||
// rows, err := db.Query("SELECT u.uuid, u.email, u.username, u.firstname,u.lastname,u.birthday, u.is_active, u.created_at, ur.roleFROM public.users u
|
||||
// LEFT JOIN roles ur ON u.uuid::uuid = ur.player_id ORDER BY u.uuid ASC")
|
||||
rows, err := db.Query(getPLayerWithRolesQuery)
|
||||
|
||||
if err != nil {
|
||||
log.Printf("Error retrieving users: %v", err)
|
||||
return nil, err
|
||||
@@ -224,7 +229,16 @@ func GetAllPlayers(db *sql.DB) ([]User, error) {
|
||||
var users []User
|
||||
for rows.Next() {
|
||||
var player User
|
||||
if err := rows.Scan(&player.UUID, &player.Username, &player.Email); err != nil {
|
||||
if err := rows.Scan(&player.UUID,
|
||||
&player.Email,
|
||||
&player.Username,
|
||||
&player.firstname,
|
||||
&player.lastname,
|
||||
&player.birthday,
|
||||
&player.IsActive,
|
||||
&player.createdAt,
|
||||
(*pq.StringArray)(&player.Role),
|
||||
); err != nil {
|
||||
log.Printf("Error scanning player row: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
@@ -268,15 +282,15 @@ func GetPlayerByName(db *sql.DB, name string) (User, error) {
|
||||
}
|
||||
|
||||
// DeletePlayer deletes a player from the database by ID.
|
||||
func deletePlayer(db *sql.DB, id string) error {
|
||||
func deletePlayer(db *sql.DB, uuid string) error {
|
||||
// Delete the player from the database
|
||||
log.Printf("Deleting player with ID: %s", id)
|
||||
_, err := db.Exec("DELETE FROM public.users WHERE id = $1", id)
|
||||
log.Printf("Deleting player with ID: %s", uuid)
|
||||
_, err := db.Exec("DELETE FROM public.users WHERE uuid = $1", uuid)
|
||||
if err != nil {
|
||||
log.Printf("Error deleting player with ID %s: %v", id, err)
|
||||
log.Printf("Error deleting player with ID %s: %v", uuid, err)
|
||||
return err
|
||||
}
|
||||
log.Printf("User with ID %s deleted successfully", id)
|
||||
log.Printf("User with ID %s deleted successfully", uuid)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
19
backend/internal/player/querys.go
Normal file
19
backend/internal/player/querys.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package player
|
||||
|
||||
const getPLayerWithRolesQuery = `
|
||||
SELECT
|
||||
u.uuid,
|
||||
u.email,
|
||||
u.username,
|
||||
u.firstname,
|
||||
u.lastname,
|
||||
u.birthday,
|
||||
u.is_active,
|
||||
u.created_at,
|
||||
ur.role
|
||||
FROM public.users u
|
||||
LEFT JOIN roles ur ON u.uuid = ur.player_id::uuid
|
||||
`
|
||||
|
||||
// GROUP BY u.uuid
|
||||
// ORDER BY u.uuid ASC;
|
||||
Reference in New Issue
Block a user