1
All checks were successful
Deploy API / deploy (push) Successful in 45s

This commit is contained in:
2026-05-26 12:13:19 +08:00
parent b9834d9300
commit e18da8c6d3
2 changed files with 41 additions and 1 deletions

View File

@@ -40,7 +40,7 @@ type PostDTO struct {
PublishedAt string `json:"publishedAt"`
UpdatedAt string `json:"updatedAt"`
CreatedAt string `json:"createdAt,omitempty"`
Tags []string `json:"tags,omitempty"`
Tags []string `json:"tags"`
}
type PostListResponse struct {
@@ -310,6 +310,32 @@ func loadPostTagNames(ctx context.Context, pool *pgxpool.Pool, postID uuid.UUID,
return names, rows.Err()
}
func loadPostTagNamesByPostIDs(ctx context.Context, pool *pgxpool.Pool, ids []uuid.UUID, lang string) (map[uuid.UUID][]string, error) {
out := make(map[uuid.UUID][]string)
if len(ids) == 0 {
return out, nil
}
rows, err := pool.Query(ctx, `
SELECT pt.post_id, t.name, COALESCE(t.name_en,''), COALESCE(t.name_ja,''), COALESCE(t.name_ko,''),
COALESCE(t.name_vi,''), COALESCE(t.name_id,''), COALESCE(t.name_ms,'')
FROM post_tags pt JOIN tags t ON t.id = pt.tag_id
WHERE pt.post_id = ANY($1)
ORDER BY pt.post_id, t.slug`, ids)
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
var pid uuid.UUID
var name, en, ja, ko, vi, idLoc, ms string
if err := rows.Scan(&pid, &name, &en, &ja, &ko, &vi, &idLoc, &ms); err != nil {
return nil, err
}
out[pid] = append(out[pid], tagDisplayName(name, en, ja, ko, vi, idLoc, ms, lang))
}
return out, rows.Err()
}
func replacePostTags(ctx context.Context, pool *pgxpool.Pool, postID uuid.UUID, tagSlugs []string) error {
_, err := pool.Exec(ctx, `DELETE FROM post_tags WHERE post_id = $1`, postID)
if err != nil {