Use client provided entity id for smart album config
This commit is contained in:
@@ -69,6 +69,26 @@ type EntityDataRequest struct {
|
||||
Type EntityType `json:"type" binding:"required"`
|
||||
EncryptedData string `json:"encryptedData" binding:"required"`
|
||||
Header string `json:"header" binding:"required"`
|
||||
ID *string `json:"id"` // Optional ID, if not provided a new ID will be generated
|
||||
}
|
||||
|
||||
func (edr *EntityDataRequest) IsValid(userID int64) error {
|
||||
if err := edr.Type.IsValid(); err != nil {
|
||||
return err
|
||||
}
|
||||
switch edr.Type {
|
||||
case SmartAlbum:
|
||||
if edr.ID == nil {
|
||||
return ente.NewBadRequestWithMessage("ID is required for SmartAlbum entity type")
|
||||
}
|
||||
// check if ID starts with sa_userid_ or not
|
||||
if !strings.HasPrefix(*edr.ID, fmt.Sprintf("sa_%d_", userID)) {
|
||||
return ente.NewBadRequestWithMessage(fmt.Sprintf("ID %s is not valid for SmartAlbum entity type", *edr.ID))
|
||||
}
|
||||
return nil
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// UpdateEntityDataRequest updates the current entity
|
||||
|
||||
@@ -61,10 +61,6 @@ func (h *UserEntityHandler) CreateEntity(c *gin.Context) {
|
||||
stacktrace.Propagate(ente.ErrBadRequest, fmt.Sprintf("Request binding failed %s", err)))
|
||||
return
|
||||
}
|
||||
if err := request.Type.IsValid(); err != nil {
|
||||
handler.Error(c, stacktrace.Propagate(err, "Invalid EntityType"))
|
||||
return
|
||||
}
|
||||
resp, err := h.Controller.CreateEntity(c, request)
|
||||
if err != nil {
|
||||
handler.Error(c, stacktrace.Propagate(err, "Failed to create CreateEntityKey"))
|
||||
|
||||
@@ -32,6 +32,9 @@ func (c *Controller) GetKey(ctx *gin.Context, req model.GetEntityKeyRequest) (*m
|
||||
// CreateEntity stores entity data for the given type
|
||||
func (c *Controller) CreateEntity(ctx *gin.Context, req model.EntityDataRequest) (*model.EntityData, error) {
|
||||
userID := auth.GetUserID(ctx.Request.Header)
|
||||
if err := req.IsValid(userID); err != nil {
|
||||
return nil, stacktrace.Propagate(err, "invalid EntityDataRequest")
|
||||
}
|
||||
id, err := c.Repo.Create(ctx, userID, req)
|
||||
if err != nil {
|
||||
return nil, stacktrace.Propagate(err, "failed to createEntity")
|
||||
|
||||
@@ -14,12 +14,17 @@ import (
|
||||
|
||||
// Create inserts a new entry
|
||||
func (r *Repository) Create(ctx context.Context, userID int64, entry model.EntityDataRequest) (string, error) {
|
||||
idPrt, err := entry.Type.GetNewID()
|
||||
if err != nil {
|
||||
return "", stacktrace.Propagate(err, "failed to generate new id")
|
||||
var id string
|
||||
if entry.ID != nil {
|
||||
id = *entry.ID
|
||||
} else {
|
||||
idPrt, err := entry.Type.GetNewID()
|
||||
if err != nil {
|
||||
return "", stacktrace.Propagate(err, "failed to generate new id")
|
||||
}
|
||||
id = *idPrt
|
||||
}
|
||||
id := *idPrt
|
||||
err = r.DB.QueryRow(`INSERT into entity_data(
|
||||
err := r.DB.QueryRow(`INSERT into entity_data(
|
||||
id,
|
||||
user_id,
|
||||
type,
|
||||
|
||||
Reference in New Issue
Block a user