ADD: added new user data model and updated the administration site
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user