package integration
import (
"github.com/google/uuid"
"golang.org/x/xerrors"
)
func CreateUser(username string, admin bool, api *ComponentAPI) (userId string, err error) {
userUUID, err := uuid.NewRandom()
if err != nil {
return
}
userId = userUUID.String()
rolesOrPermissions := "[]"
if admin {
rolesOrPermissions = `["admin"]`
}
db, err := api.DB()
if err != nil {
return
}
_, err = db.Exec("INSERT INTO d_b_user (id, creationDate, name, rolesOrPermissions) VALUES (?, NOW(), ?, ?)",
userId,
username,
rolesOrPermissions,
)
return
}
func DeleteUser(userId string, api *ComponentAPI) (err error) {
db, err := api.DB()
if err != nil {
return
}
_, err = db.Exec("DELETE FROM d_b_user WHERE id = ?", userId)
return
}
func IsUserBlocked(userId string, api *ComponentAPI) (blocked bool, err error) {
db, err := api.DB()
if err != nil {
return
}
rows, err := db.Query("SELECT blocked FROM d_b_user WHERE id = ?", userId)
if err != nil {
return
}
defer rows.Close()
if !rows.Next() {
return false, xerrors.Errorf("no rows selected - should not happen")
}
err = rows.Scan(&blocked)
return
}