mirror of
https://github.com/Damillora/Shioriko.git
synced 2024-11-21 11:57:32 +00:00
Add uploader
This commit is contained in:
parent
2c20730aa5
commit
ee9d2c80bf
@ -88,12 +88,13 @@ func postGetOne(c *gin.Context) {
|
||||
Tags: tagStrings,
|
||||
Width: post.Blob.Width,
|
||||
Height: post.Blob.Height,
|
||||
Uploader: post.User.Username,
|
||||
})
|
||||
}
|
||||
|
||||
func postCreate(c *gin.Context) {
|
||||
var model models.PostCreateModel
|
||||
err := c.ShouldBindJSON(&model)
|
||||
err := c.BindJSON(&model)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, models.ErrorResponse{
|
||||
Code: http.StatusBadRequest,
|
||||
@ -113,8 +114,17 @@ func postCreate(c *gin.Context) {
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
user, ok := c.Get("user")
|
||||
if !ok {
|
||||
c.JSON(http.StatusForbidden, models.ErrorResponse{
|
||||
Code: http.StatusBadRequest,
|
||||
Message: "User don't exist",
|
||||
})
|
||||
c.Abort()
|
||||
}
|
||||
userObj := user.(*database.User)
|
||||
|
||||
post, err := services.CreatePost(model)
|
||||
post, err := services.CreatePost(userObj.ID, model)
|
||||
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, models.ErrorResponse{
|
||||
|
@ -6,6 +6,8 @@ import (
|
||||
|
||||
type Post struct {
|
||||
ID string `gorm:"size:36"`
|
||||
UserID string
|
||||
User User
|
||||
BlobID string
|
||||
Blob Blob `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
|
||||
SourceURL string
|
||||
|
@ -43,6 +43,7 @@ func AuthMiddleware() gin.HandlerFunc {
|
||||
return
|
||||
}
|
||||
user := services.GetUser(claims["sub"].(string))
|
||||
|
||||
c.Set("user", user)
|
||||
|
||||
c.Next()
|
||||
|
@ -7,4 +7,5 @@ type PostReadModel struct {
|
||||
Tags []string `json:"tags"`
|
||||
Width int `json:"width"`
|
||||
Height int `json:"height"`
|
||||
Uploader string `json:"uploader"`
|
||||
}
|
||||
|
@ -29,14 +29,14 @@ func GetPostTags(page int, tagSyntax []string) []database.Post {
|
||||
|
||||
func GetPost(id string) (*database.Post, error) {
|
||||
var post database.Post
|
||||
result := database.DB.Joins("Blob").Preload("Tags").Preload("Tags.TagType").Where("posts.id = ?", id).First(&post)
|
||||
result := database.DB.Joins("User").Joins("Blob").Preload("Tags").Preload("Tags.TagType").Where("posts.id = ?", id).First(&post)
|
||||
if result.Error != nil {
|
||||
return nil, result.Error
|
||||
}
|
||||
|
||||
return &post, nil
|
||||
}
|
||||
func CreatePost(model models.PostCreateModel) (*database.Post, error) {
|
||||
func CreatePost(userID string, model models.PostCreateModel) (*database.Post, error) {
|
||||
tags, err := ParseTags(model.Tags)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -44,6 +44,7 @@ func CreatePost(model models.PostCreateModel) (*database.Post, error) {
|
||||
|
||||
post := database.Post{
|
||||
ID: uuid.NewString(),
|
||||
UserID: userID,
|
||||
BlobID: model.BlobID,
|
||||
SourceURL: model.SourceURL,
|
||||
Tags: tags,
|
||||
|
@ -43,11 +43,17 @@
|
||||
to="/post/edit/{post.id}">Edit</Link
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
Uploader: {post.uploader}
|
||||
</p>
|
||||
<p>
|
||||
Source URL: <a href={post.source_url}
|
||||
>{trimUrl(post.source_url)}</a
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
Dimensions: {post.width}x{post.height}
|
||||
</p>
|
||||
<p>
|
||||
Tags:<br />
|
||||
</p>
|
||||
|
@ -18,8 +18,12 @@
|
||||
|
||||
const splitToChunks = (array, parts) => {
|
||||
let result = [];
|
||||
for (let i = parts; i > 0; i--) {
|
||||
result.push(array.slice(i * parts, i * parts + parts + 1));
|
||||
for (let i = 0; i < parts; i++) {
|
||||
let currentColumn = [];
|
||||
for (let j = i; j < array.length; j += parts) {
|
||||
currentColumn.push(array[j]);
|
||||
}
|
||||
result.push(currentColumn);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
@ -27,11 +31,10 @@
|
||||
let postChunks = [];
|
||||
// split posts into 4 columns
|
||||
$: {
|
||||
postChunks = splitToChunks(posts, 4);
|
||||
postChunks = splitToChunks(posts, 5);
|
||||
}
|
||||
|
||||
const getData = async () => {
|
||||
console.log("page " + page);
|
||||
const data = await getPostSearchTag({ page, q: searchTerms.join("+") });
|
||||
if (data.posts) {
|
||||
newBatch = data.posts;
|
||||
@ -98,7 +101,7 @@
|
||||
<div class="block">
|
||||
<div class="columns">
|
||||
{#each postChunks as postChunk}
|
||||
<div class="column is-3">
|
||||
<div class="column is-one-fifth">
|
||||
{#each postChunk as post, i (post.id)}
|
||||
<div class="block">
|
||||
<div class="card">
|
||||
@ -130,7 +133,6 @@
|
||||
<InfiniteScroll
|
||||
hasMore={newBatch.length}
|
||||
elementScroll={document}
|
||||
threshold={0}
|
||||
on:loadMore={() => {
|
||||
page++;
|
||||
getData();
|
||||
@ -138,9 +140,9 @@
|
||||
/>
|
||||
</div>
|
||||
{#if newBatch.length == 0}
|
||||
<div class="notification is-primary">
|
||||
<p class="has-text-centered">End of posts</p>
|
||||
</div>
|
||||
<div class="notification is-primary">
|
||||
<p class="has-text-centered">End of posts</p>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</section>
|
||||
|
Loading…
Reference in New Issue
Block a user