:sparklesS: Updatable attachment info
This commit is contained in:
parent
a5a6503af9
commit
ff450ddd9d
7
.idea/workspace.xml
generated
7
.idea/workspace.xml
generated
@ -4,9 +4,9 @@
|
|||||||
<option name="autoReloadType" value="ALL" />
|
<option name="autoReloadType" value="ALL" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="18dd0d68-b4b8-40db-9734-9119b5c848bd" name="更改" comment=":truck: Update url mapping">
|
<list default="true" id="18dd0d68-b4b8-40db-9734-9119b5c848bd" name="更改" comment=":bug: Fix uuid duplicate when link exists">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/pkg/services/attachments.go" beforeDir="false" afterPath="$PROJECT_DIR$/pkg/services/attachments.go" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/pkg/server/attachments_api.go" beforeDir="false" afterPath="$PROJECT_DIR$/pkg/server/attachments_api.go" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@ -71,7 +71,8 @@
|
|||||||
<MESSAGE value=":sparkles: Upload attachment requires permission check" />
|
<MESSAGE value=":sparkles: Upload attachment requires permission check" />
|
||||||
<MESSAGE value=":sparkles: Provide a faster check attachment exists grpc method" />
|
<MESSAGE value=":sparkles: Provide a faster check attachment exists grpc method" />
|
||||||
<MESSAGE value=":truck: Update url mapping" />
|
<MESSAGE value=":truck: Update url mapping" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value=":truck: Update url mapping" />
|
<MESSAGE value=":bug: Fix uuid duplicate when link exists" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value=":bug: Fix uuid duplicate when link exists" />
|
||||||
</component>
|
</component>
|
||||||
<component name="VgoProject">
|
<component name="VgoProject">
|
||||||
<settings-migrated>true</settings-migrated>
|
<settings-migrated>true</settings-migrated>
|
||||||
|
@ -3,11 +3,12 @@ package server
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.solsynth.dev/hydrogen/paperclip/pkg/grpc"
|
|
||||||
"git.solsynth.dev/hydrogen/passport/pkg/grpc/proto"
|
|
||||||
"net/url"
|
"net/url"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
|
"git.solsynth.dev/hydrogen/paperclip/pkg/grpc"
|
||||||
|
"git.solsynth.dev/hydrogen/passport/pkg/grpc/proto"
|
||||||
|
|
||||||
"git.solsynth.dev/hydrogen/paperclip/pkg/database"
|
"git.solsynth.dev/hydrogen/paperclip/pkg/database"
|
||||||
"git.solsynth.dev/hydrogen/paperclip/pkg/models"
|
"git.solsynth.dev/hydrogen/paperclip/pkg/models"
|
||||||
"git.solsynth.dev/hydrogen/paperclip/pkg/services"
|
"git.solsynth.dev/hydrogen/paperclip/pkg/services"
|
||||||
@ -15,7 +16,6 @@ import (
|
|||||||
jsoniter "github.com/json-iterator/go"
|
jsoniter "github.com/json-iterator/go"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
"gorm.io/datatypes"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func openAttachment(c *fiber.Ctx) error {
|
func openAttachment(c *fiber.Ctx) error {
|
||||||
@ -101,7 +101,7 @@ func createAttachment(c *fiber.Ctx) error {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
var usermeta = make(map[string]any)
|
usermeta := make(map[string]any)
|
||||||
_ = jsoniter.UnmarshalFromString(c.FormValue("metadata"), &usermeta)
|
_ = jsoniter.UnmarshalFromString(c.FormValue("metadata"), &usermeta)
|
||||||
|
|
||||||
tx := database.C.Begin()
|
tx := database.C.Begin()
|
||||||
@ -110,7 +110,7 @@ func createAttachment(c *fiber.Ctx) error {
|
|||||||
HashCode: hash,
|
HashCode: hash,
|
||||||
Alternative: c.FormValue("alt"),
|
Alternative: c.FormValue("alt"),
|
||||||
MimeType: c.FormValue("mimetype"),
|
MimeType: c.FormValue("mimetype"),
|
||||||
Metadata: datatypes.JSONMap(usermeta),
|
Metadata: usermeta,
|
||||||
IsMature: len(c.FormValue("mature")) > 0,
|
IsMature: len(c.FormValue("mature")) > 0,
|
||||||
Destination: destName,
|
Destination: destName,
|
||||||
})
|
})
|
||||||
@ -131,6 +131,40 @@ func createAttachment(c *fiber.Ctx) error {
|
|||||||
return c.JSON(metadata)
|
return c.JSON(metadata)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func updateAttachmentMeta(c *fiber.Ctx) error {
|
||||||
|
user := c.Locals("principal").(models.Account)
|
||||||
|
|
||||||
|
var data struct {
|
||||||
|
Alternative string `json:"alt"`
|
||||||
|
Usage string `json:"usage"`
|
||||||
|
Metadata map[string]any `json:"metadata"`
|
||||||
|
IsMature bool `json:"is_mature"`
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := BindAndValidate(c, &data); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var attachment models.Attachment
|
||||||
|
if err := database.C.Where(models.Attachment{
|
||||||
|
Uuid: c.Params("id"),
|
||||||
|
AccountID: user.ID,
|
||||||
|
}).Error; err != nil {
|
||||||
|
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
attachment.Alternative = data.Alternative
|
||||||
|
attachment.Usage = data.Usage
|
||||||
|
attachment.Metadata = data.Metadata
|
||||||
|
attachment.IsMature = data.IsMature
|
||||||
|
|
||||||
|
if err := database.C.Save(&attachment).Error; err != nil {
|
||||||
|
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.JSON(attachment)
|
||||||
|
}
|
||||||
|
|
||||||
func deleteAttachment(c *fiber.Ctx) error {
|
func deleteAttachment(c *fiber.Ctx) error {
|
||||||
id, _ := c.ParamsInt("id", 0)
|
id, _ := c.ParamsInt("id", 0)
|
||||||
user := c.Locals("principal").(models.Account)
|
user := c.Locals("principal").(models.Account)
|
||||||
|
@ -57,6 +57,7 @@ func NewServer() {
|
|||||||
api.Get("/attachments/:id/meta", getAttachmentMeta)
|
api.Get("/attachments/:id/meta", getAttachmentMeta)
|
||||||
api.Get("/attachments/:id", openAttachment)
|
api.Get("/attachments/:id", openAttachment)
|
||||||
api.Post("/attachments", authMiddleware, createAttachment)
|
api.Post("/attachments", authMiddleware, createAttachment)
|
||||||
|
api.Put("/attachments/:id", authMiddleware, updateAttachmentMeta)
|
||||||
api.Delete("/attachments/:id", authMiddleware, deleteAttachment)
|
api.Delete("/attachments/:id", authMiddleware, deleteAttachment)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user