mirror of
https://github.com/Damillora/Shioriko.git
synced 2024-11-25 05:27:32 +00:00
feat: add tags post count
This commit is contained in:
parent
e79b033c59
commit
a420b50877
@ -3,7 +3,6 @@ package app
|
|||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/Damillora/Shioriko/pkg/models"
|
|
||||||
"github.com/Damillora/Shioriko/pkg/services"
|
"github.com/Damillora/Shioriko/pkg/services"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
@ -17,13 +16,5 @@ func InitializeTagRoutes(g *gin.Engine) {
|
|||||||
|
|
||||||
func tagGet(c *gin.Context) {
|
func tagGet(c *gin.Context) {
|
||||||
tags := services.GetTagAll()
|
tags := services.GetTagAll()
|
||||||
var tagResult []models.TagListItem
|
c.JSON(http.StatusOK, tags)
|
||||||
for _, tag := range tags {
|
|
||||||
tagResult = append(tagResult, models.TagListItem{
|
|
||||||
ID: tag.ID,
|
|
||||||
Name: tag.Name,
|
|
||||||
TagType: tag.TagType.Name,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
c.JSON(http.StatusOK, tagResult)
|
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,10 @@ type TagTypeListItem struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TagListItem struct {
|
type TagListItem struct {
|
||||||
ID string `json:"id"`
|
TagID string `json:"tagId"`
|
||||||
Name string `json:"name"`
|
TagName string `json:"tagName"`
|
||||||
TagType string `json:"tagType"`
|
TagType string `json:"tagType"`
|
||||||
|
PostCount int `json:"postCount"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type PostListItem struct {
|
type PostListItem struct {
|
||||||
|
@ -5,12 +5,19 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/Damillora/Shioriko/pkg/database"
|
"github.com/Damillora/Shioriko/pkg/database"
|
||||||
|
"github.com/Damillora/Shioriko/pkg/models"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetTagAll() []database.Tag {
|
func GetTagAll() []models.TagListItem {
|
||||||
var tags []database.Tag
|
var tags []models.TagListItem
|
||||||
database.DB.Joins("TagType").Find(&tags)
|
database.DB.Model(&database.Tag{}).
|
||||||
|
Joins("join tag_types on tag_types.id = tags.tag_type_id").
|
||||||
|
Joins("left join post_tags on post_tags.tag_id = tags.id").
|
||||||
|
Select("tags.id as tag_id, tags.name as tag_name, tag_types.name as tag_type, count(post_tags.post_id) as post_count").
|
||||||
|
Group("tags.id, tags.name, tag_types.name").
|
||||||
|
Order("post_count DESC").
|
||||||
|
Find(&tags)
|
||||||
return tags
|
return tags
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
<div class="navbar-menu" class:is-active={menu_shown}>
|
<div class="navbar-menu" class:is-active={menu_shown}>
|
||||||
<div class="navbar-start">
|
<div class="navbar-start">
|
||||||
<Link class="navbar-item" to="/posts">Posts</Link>
|
<Link class="navbar-item" to="/posts">Posts</Link>
|
||||||
|
<Link class="navbar-item" to="/tags">Tags</Link>
|
||||||
{#if loggedIn}
|
{#if loggedIn}
|
||||||
<Link class="navbar-item" to="/upload">Upload</Link>
|
<Link class="navbar-item" to="/upload">Upload</Link>
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import { getTags } from "../api";
|
import { getTags } from "../api";
|
||||||
|
import { Link } from "svelte-routing";
|
||||||
|
|
||||||
let tags = [];
|
let tags = [];
|
||||||
|
|
||||||
@ -25,15 +25,19 @@ import { getTags } from "../api";
|
|||||||
<table class="table is-fullwidth">
|
<table class="table is-fullwidth">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Tag</th>
|
<th >Tag</th>
|
||||||
<th>Tag Type</th>
|
<th style="width: 30%;">Tag Type</th>
|
||||||
|
<th style="width: 10%;">Post Count</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{#each tags as tag}
|
{#each tags as tag}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{tag.name}</td>
|
<td>
|
||||||
|
<Link to="/posts?tags={tag.tagType}:{tag.tagName}">{tag.tagName}</Link>
|
||||||
|
</td>
|
||||||
<td>{tag.tagType}</td>
|
<td>{tag.tagType}</td>
|
||||||
|
<td>{tag.postCount}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{/each}
|
{/each}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
Loading…
Reference in New Issue
Block a user