미디어 업로드와 태그 표시 수정

This commit is contained in:
2026-06-09 16:14:47 +09:00
parent e6669439f3
commit ed30926250
12 changed files with 162 additions and 32 deletions

View File

@@ -221,7 +221,7 @@ const syncPostTags = async (sql, postId, tags) => {
WHERE post_id = ${postId}
`
for (const slug of tagSlugs) {
for (const [index, slug] of tagSlugs.entries()) {
const tagRows = await sql`
INSERT INTO tags (name, slug, tag_type, sort_order)
VALUES (${getTagNameFromSlug(slug)}, ${slug}, 'general', 0)
@@ -231,9 +231,10 @@ const syncPostTags = async (sql, postId, tags) => {
`
await sql`
INSERT INTO post_tags (post_id, tag_id)
VALUES (${postId}, ${tagRows[0].id})
ON CONFLICT DO NOTHING
INSERT INTO post_tags (post_id, tag_id, sort_order)
VALUES (${postId}, ${tagRows[0].id}, ${index * 10})
ON CONFLICT (post_id, tag_id) DO UPDATE
SET sort_order = EXCLUDED.sort_order
`
}
}
@@ -259,7 +260,7 @@ export const listPosts = async ({ includeMembership = false } = {}) => {
WHERE comments.post_id = posts.id
AND comments.status = 'published'
) AS comment_count,
COALESCE(array_agg(tags.slug) FILTER (WHERE tags.slug IS NOT NULL), '{}') AS tags
COALESCE(array_agg(tags.slug ORDER BY post_tags.sort_order ASC, post_tags.created_at ASC, tags.name ASC) FILTER (WHERE tags.slug IS NOT NULL), '{}') AS tags
FROM posts
LEFT JOIN post_tags ON post_tags.post_id = posts.id
LEFT JOIN tags ON tags.id = post_tags.tag_id
@@ -299,7 +300,7 @@ export const listAdminPosts = async () => {
WHERE comments.post_id = posts.id
AND comments.status = 'published'
) AS comment_count,
COALESCE(array_agg(tags.slug) FILTER (WHERE tags.slug IS NOT NULL), '{}') AS tags
COALESCE(array_agg(tags.slug ORDER BY post_tags.sort_order ASC, post_tags.created_at ASC, tags.name ASC) FILTER (WHERE tags.slug IS NOT NULL), '{}') AS tags
FROM posts
LEFT JOIN post_tags ON post_tags.post_id = posts.id
LEFT JOIN tags ON tags.id = post_tags.tag_id
@@ -331,7 +332,7 @@ export const getAdminPostById = async (id) => {
WHERE comments.post_id = posts.id
AND comments.status = 'published'
) AS comment_count,
COALESCE(array_agg(tags.slug) FILTER (WHERE tags.slug IS NOT NULL), '{}') AS tags
COALESCE(array_agg(tags.slug ORDER BY post_tags.sort_order ASC, post_tags.created_at ASC, tags.name ASC) FILTER (WHERE tags.slug IS NOT NULL), '{}') AS tags
FROM posts
LEFT JOIN post_tags ON post_tags.post_id = posts.id
LEFT JOIN tags ON tags.id = post_tags.tag_id
@@ -502,7 +503,7 @@ export const getPostBySlug = async (slug, { includeMembership = false } = {}) =>
WHERE comments.post_id = posts.id
AND comments.status = 'published'
) AS comment_count,
COALESCE(array_agg(tags.slug) FILTER (WHERE tags.slug IS NOT NULL), '{}') AS tags
COALESCE(array_agg(tags.slug ORDER BY post_tags.sort_order ASC, post_tags.created_at ASC, tags.name ASC) FILTER (WHERE tags.slug IS NOT NULL), '{}') AS tags
FROM posts
LEFT JOIN post_tags ON post_tags.post_id = posts.id
LEFT JOIN tags ON tags.id = post_tags.tag_id