Reorganization of backend + new routes

This commit is contained in:
cdricms
2025-01-29 18:09:41 +01:00
parent 7c66353e63
commit 8110172a38
67 changed files with 1124 additions and 400 deletions

View File

@@ -0,0 +1,61 @@
package users
import (
"context"
"net/http"
core "fr.latosa-escrima/core"
"fr.latosa-escrima/core/models"
"github.com/google/uuid"
)
func HandleAddRole(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
user_id := r.PathValue("user_uuid")
role_id := r.PathValue("role_id")
var user models.User
count, err := core.DB.NewSelect().Model(&user).
Where("user_id = ?", user_id).
Limit(1).ScanAndCount(ctx)
if count == 0 {
core.JSONError{
Status: core.Error,
Message: "User doesn't exist.",
}.Respond(w, http.StatusNotFound)
return
}
var role models.Role
count, err = core.DB.NewSelect().Model(&role).
Where("id = ?", role_id).
Limit(1).ScanAndCount(ctx)
if count == 0 {
core.JSONError{
Status: core.Error,
Message: "Role doesn't exist.",
}.Respond(w, http.StatusNotFound)
return
}
uid, err := uuid.Parse(user_id)
rid, err := uuid.Parse(role_id)
userRole := models.UserToRole{
UserID: uid,
RoleID: rid,
}
_, err = core.DB.NewInsert().Model(&userRole).Ignore().
Exec(ctx)
if err != nil {
core.JSONError{
Status: core.Error,
Message: err.Error(),
}.Respond(w, http.StatusInternalServerError)
return
}
core.JSONSuccess{
Status: core.Success,
Message: "Role added.",
}.Respond(w, http.StatusCreated)
}

View File

@@ -8,7 +8,8 @@ import (
"net/http"
"time"
core "fr.latosa-escrima/api/core"
core "fr.latosa-escrima/core"
"fr.latosa-escrima/core/models"
"github.com/golang-jwt/jwt/v5"
)
@@ -52,7 +53,7 @@ func HandleLogin(w http.ResponseWriter, r *http.Request) {
return
}
user, err := core.Verify(context.Background(), login.Email, login.Password)
user, err := models.Verify(core.DB, context.Background(), login.Email, login.Password)
if user == nil {
core.JSONError{
Status: core.Error,

View File

@@ -4,13 +4,14 @@ import (
"context"
"net/http"
"fr.latosa-escrima/api/core"
"fr.latosa-escrima/core"
"fr.latosa-escrima/core/models"
)
func HandleDelete(w http.ResponseWriter, r *http.Request) {
uuid := r.PathValue("user_uuid")
_, err := core.DB.NewDelete().
Model((*core.User)(nil)).
Model((*models.User)(nil)).
Where("user_id = ?", uuid).
Exec(context.Background())

View File

@@ -3,7 +3,7 @@ package users
import (
"net/http"
"fr.latosa-escrima/api/core"
"fr.latosa-escrima/core"
"github.com/golang-jwt/jwt/v5"
)

View File

@@ -6,11 +6,12 @@ import (
"log"
"net/http"
core "fr.latosa-escrima/api/core"
core "fr.latosa-escrima/core"
"fr.latosa-escrima/core/models"
)
func HandleNew(w http.ResponseWriter, r *http.Request) {
var user core.User
var user models.User
err := json.NewDecoder(r.Body).Decode(&user)
if err != nil {
core.JSONError{
@@ -21,7 +22,7 @@ func HandleNew(w http.ResponseWriter, r *http.Request) {
}
log.Println("User : ", user)
res, err := user.Insert(context.Background())
res, err := user.Insert(core.DB, context.Background())
log.Println(res)
// if res == nil {
// core.JSONError{

View File

@@ -0,0 +1,32 @@
package users
import (
"context"
"net/http"
"fr.latosa-escrima/core"
"fr.latosa-escrima/core/models"
)
func HandleRemoveRole(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
user_id := r.PathValue("user_uuid")
role_id := r.PathValue("role_id")
_, err := core.DB.NewDelete().Model((*models.UserToRole)(nil)).
Where("user_id = ? AND role_id = ?", user_id, role_id).
Exec(ctx)
if err != nil {
core.JSONError{
Status: core.Error,
Message: err.Error(),
}.Respond(w, http.StatusInternalServerError)
return
}
core.JSONSuccess{
Status: core.Success,
Message: "Role removed.",
}.Respond(w, http.StatusOK)
}

View File

@@ -0,0 +1,31 @@
package users
import (
"context"
"net/http"
"fr.latosa-escrima/core"
"fr.latosa-escrima/core/models"
)
func HandleRoles(w http.ResponseWriter, r *http.Request) {
user_id := r.PathValue("user_uuid")
var user models.User
err := core.DB.NewSelect().Model(&user).Where("user_id = ?", user_id).
Relation("Roles").
Limit(1).
Scan(context.Background())
if err != nil {
core.JSONError{
Status: core.Error,
Message: err.Error(),
}.Respond(w, http.StatusInternalServerError)
return
}
core.JSONSuccess{
Status: core.Success,
Message: "Roles found.",
Data: user.Roles,
}.Respond(w, http.StatusOK)
}

View File

@@ -9,16 +9,17 @@ import (
"strings"
"time"
"fr.latosa-escrima/api/core"
"fr.latosa-escrima/core"
"fr.latosa-escrima/core/models"
)
type UpdateUserArgs struct {
FirstName *string `json:"firstname,omitempty"`
LastName *string `json:"lastname,omitempty"`
Email *string `json:"email,omitempty"`
Password *string `json:"password,omitempty"`
Phone *string `json:"phone,omitempty"`
Attributes *core.UserAttributes `json:"attributes"`
FirstName *string `json:"firstname,omitempty"`
LastName *string `json:"lastname,omitempty"`
Email *string `json:"email,omitempty"`
Password *string `json:"password,omitempty"`
Phone *string `json:"phone,omitempty"`
Attributes *models.UserAttributes `json:"attributes"`
}
func HandleUpdate(w http.ResponseWriter, r *http.Request) {
@@ -32,7 +33,7 @@ func HandleUpdate(w http.ResponseWriter, r *http.Request) {
return
}
var user core.User
var user models.User
updateQuery := core.DB.NewUpdate().Model(&user)
val := reflect.ValueOf(updateArgs)

View File

@@ -4,15 +4,17 @@ import (
"context"
"net/http"
"fr.latosa-escrima/api/core"
"fr.latosa-escrima/core"
"fr.latosa-escrima/core/models"
)
func HandleUser(w http.ResponseWriter, r *http.Request) {
uuid := r.PathValue("user_uuid")
var user core.User
var user models.User
count, err := core.DB.NewSelect().
Model(&user).
Where("user_id = ?", uuid).
Relation("Roles").
Limit(1).
ScanAndCount(context.Background())

View File

@@ -4,17 +4,19 @@ import (
"context"
"net/http"
"fr.latosa-escrima/api/core"
"fr.latosa-escrima/core"
"fr.latosa-escrima/core/models"
"fr.latosa-escrima/utils"
)
func HandleUsers(w http.ResponseWriter, r *http.Request) {
var users []core.User
var users []models.User
count, err := core.DB.NewSelect().
Model(&users).
Relation("Roles").
ScanAndCount(context.Background())
users = utils.Map(users, func(user core.User) core.User {
users = utils.Map(users, func(user models.User) models.User {
user.Password = ""
return user
})