Structure PUT by using omit.Value
This commit is contained in:
parent
353a3ea442
commit
3745231f51
2 changed files with 30 additions and 27 deletions
|
|
@ -9,23 +9,24 @@ import (
|
||||||
"github.com/Gleipnir-Technology/nidus-sync/db/models"
|
"github.com/Gleipnir-Technology/nidus-sync/db/models"
|
||||||
nhttp "github.com/Gleipnir-Technology/nidus-sync/http"
|
nhttp "github.com/Gleipnir-Technology/nidus-sync/http"
|
||||||
"github.com/Gleipnir-Technology/nidus-sync/platform"
|
"github.com/Gleipnir-Technology/nidus-sync/platform"
|
||||||
|
"github.com/aarondl/opt/omit"
|
||||||
"github.com/aarondl/opt/omitnull"
|
"github.com/aarondl/opt/omitnull"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
type user struct {
|
type user struct {
|
||||||
Avatar *string `json:"avatar"`
|
Avatar omitnull.Val[string] `json:"avatar"`
|
||||||
DisplayName string `json:"display_name"`
|
DisplayName omit.Val[string] `json:"display_name"`
|
||||||
ID int `json:"id"`
|
ID omit.Val[int] `json:"id"`
|
||||||
Initials string `json:"initials"`
|
Initials omit.Val[string] `json:"initials"`
|
||||||
IsActive bool `json:"is_active"`
|
IsActive omit.Val[bool] `json:"is_active"`
|
||||||
PasswordHash string `json:"-"`
|
PasswordHash omit.Val[string] `json:"-"`
|
||||||
PasswordHashType string `json:"-"`
|
PasswordHashType omit.Val[string] `json:"-"`
|
||||||
Role string `json:"role"`
|
Role omit.Val[string] `json:"role"`
|
||||||
Tags []string `json:"tags"`
|
Tags omit.Val[[]string] `json:"tags"`
|
||||||
URI string `json:"uri"`
|
URI omit.Val[string] `json:"uri"`
|
||||||
Username string `json:"username"`
|
Username omit.Val[string] `json:"username"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func User(r *router) *userR {
|
func User(r *router) *userR {
|
||||||
|
|
@ -46,15 +47,15 @@ func (res *userR) response(u *platform.User) (*user, error) {
|
||||||
return nil, fmt.Errorf("id to uri: %w", err)
|
return nil, fmt.Errorf("id to uri: %w", err)
|
||||||
}
|
}
|
||||||
return &user{
|
return &user{
|
||||||
Avatar: avatar,
|
Avatar: omitnull.FromPtr(avatar),
|
||||||
DisplayName: u.DisplayName,
|
DisplayName: omit.From(u.DisplayName),
|
||||||
ID: int(u.ID),
|
ID: omit.From(int(u.ID)),
|
||||||
Initials: u.Initials,
|
Initials: omit.From(u.Initials),
|
||||||
IsActive: u.Active,
|
IsActive: omit.From(u.Active),
|
||||||
Role: u.Role,
|
Role: omit.From(u.Role),
|
||||||
Tags: u.Tags,
|
Tags: omit.From(u.Tags),
|
||||||
URI: uri,
|
URI: omit.From(uri),
|
||||||
Username: u.Username,
|
Username: omit.From(u.Username),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -81,16 +82,19 @@ func (res *userR) ByIDPut(ctx context.Context, r *http.Request, user platform.Us
|
||||||
user_id_str := vars["id"]
|
user_id_str := vars["id"]
|
||||||
user_id, err := strconv.Atoi(user_id_str)
|
user_id, err := strconv.Atoi(user_id_str)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", nhttp.NewErrorStatus(http.StatusBadRequest, "user update: %w", err)
|
return "", nhttp.NewErrorStatus(http.StatusBadRequest, "user id conversion: %w", err)
|
||||||
}
|
}
|
||||||
user_changes := &models.UserSetter{}
|
user_changes := &models.UserSetter{}
|
||||||
if updates.Avatar != nil {
|
if updates.Avatar.IsValue() {
|
||||||
avatar_uuid, err := res.router.UUIDFromURI("avatar.ByUUIDGet", *updates.Avatar)
|
avatar_uuid, err := res.router.UUIDFromURI("avatar.ByUUIDGet", updates.Avatar.MustGet())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", nhttp.NewBadRequest("parse avatar uri: %w", err)
|
return "", nhttp.NewBadRequest("parse avatar uri: %w", err)
|
||||||
}
|
}
|
||||||
user_changes.Avatar = omitnull.FromPtr(avatar_uuid)
|
user_changes.Avatar = omitnull.FromPtr(avatar_uuid)
|
||||||
}
|
}
|
||||||
|
if updates.DisplayName.IsValue() {
|
||||||
|
user_changes.DisplayName = updates.DisplayName
|
||||||
|
}
|
||||||
err = platform.UserUpdate(ctx, user, user_id, user_changes)
|
err = platform.UserUpdate(ctx, user, user_id, user_changes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", nhttp.NewError("user update: %w", err)
|
return "", nhttp.NewError("user update: %w", err)
|
||||||
|
|
|
||||||
|
|
@ -331,13 +331,12 @@ const removeTag = (tag: string) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
interface UserRequestPut {
|
interface UserRequestPut {
|
||||||
avatar: string | null;
|
avatar?: string | null;
|
||||||
|
display_name?: string;
|
||||||
}
|
}
|
||||||
const saveChanges = async () => {
|
const saveChanges = async () => {
|
||||||
console.log("Saving user changes");
|
console.log("Saving user changes");
|
||||||
let payload: UserRequestPut = {
|
let payload: UserRequestPut = {};
|
||||||
avatar: "",
|
|
||||||
};
|
|
||||||
if (selectedFile.value) {
|
if (selectedFile.value) {
|
||||||
try {
|
try {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue