일반 태그 배지 목록 정리
This commit is contained in:
@@ -61,7 +61,10 @@ const mapTagRow = (row) => ({
|
||||
description: row.description,
|
||||
sortOrder: row.sort_order,
|
||||
color: row.color,
|
||||
tagType: row.tag_type || 'managed'
|
||||
tagType: row.tag_type || 'managed',
|
||||
postCount: Number(row.post_count || 0),
|
||||
lastUsedAt: row.last_used_at ? row.last_used_at.toISOString() : null,
|
||||
updatedAt: row.updated_at ? row.updated_at.toISOString() : null
|
||||
})
|
||||
|
||||
/**
|
||||
@@ -572,7 +575,10 @@ export const listTags = async ({ tagType, searchQuery = '', limit } = {}) => {
|
||||
if (!sql) {
|
||||
const sampleTags = getSampleTags().map((tag) => ({
|
||||
...tag,
|
||||
tagType: 'managed'
|
||||
tagType: 'managed',
|
||||
postCount: 0,
|
||||
lastUsedAt: null,
|
||||
updatedAt: null
|
||||
}))
|
||||
let filteredTags = sampleTags
|
||||
if (tagType) {
|
||||
@@ -588,17 +594,25 @@ export const listTags = async ({ tagType, searchQuery = '', limit } = {}) => {
|
||||
}
|
||||
|
||||
const rows = await sql`
|
||||
SELECT *
|
||||
SELECT
|
||||
tags.*,
|
||||
COUNT(post_tags.post_id)::int AS post_count,
|
||||
MAX(posts.updated_at) AS last_used_at
|
||||
FROM tags
|
||||
LEFT JOIN post_tags ON post_tags.tag_id = tags.id
|
||||
LEFT JOIN posts ON posts.id = post_tags.post_id
|
||||
WHERE (${tagType || null}::text IS NULL OR tag_type = ${tagType || null})
|
||||
AND (
|
||||
${trimmedSearchQuery || null}::text IS NULL
|
||||
OR strpos(lower(name), ${trimmedSearchQuery || ''}) > 0
|
||||
OR strpos(lower(slug), ${trimmedSearchQuery || ''}) > 0
|
||||
OR strpos(lower(tags.name), ${trimmedSearchQuery || ''}) > 0
|
||||
OR strpos(lower(tags.slug), ${trimmedSearchQuery || ''}) > 0
|
||||
)
|
||||
GROUP BY tags.id
|
||||
ORDER BY
|
||||
CASE tag_type WHEN 'managed' THEN 0 ELSE 1 END ASC,
|
||||
sort_order ASC,
|
||||
MAX(posts.updated_at) DESC NULLS LAST,
|
||||
tags.updated_at DESC,
|
||||
name ASC
|
||||
LIMIT ${resolvedLimit || 1000}
|
||||
`
|
||||
|
||||
Reference in New Issue
Block a user