const{id: rawId}=awaitparams;constpost=db.prepare("SELECT p.content,p.hidden,p.visibility,u.username,s.name FROM posts p JOIN users u ON u.id=p.author_id LEFT JOIN sources s ON s.id=p.source_id WHERE p.id=?").get(Number(rawId))as{content: string;hidden: number;visibility: string;username: string;name: string|null}|undefined;
constpost=db.prepare("SELECT p.*,u.username,s.name,s.base_url AS source_base_url,s.remote_display_name FROM posts p JOIN users u ON u.id=p.author_id LEFT JOIN sources s ON s.id=p.source_id WHERE p.id=?").get(id)asany;constquery=awaitsearchParams;
if(user&&post.visibility==="PUBLIC")db.prepare("INSERT INTO reading_history(user_id,post_id) VALUES(?,?) ON CONFLICT(user_id,post_id) DO UPDATE SET last_read_at=CURRENT_TIMESTAMP").run(user.id,id);
constbookmark=user?db.prepare("SELECT kind FROM bookmarks WHERE user_id=? AND post_id=?").get(user.id,id)as{kind: string}|undefined:undefined;
constcomments=db.prepare("SELECT c.*,u.username FROM comments c JOIN users u ON u.id=c.author_id WHERE c.post_id=? AND c.hidden=0 ORDER BY c.created_at").all(id)asany[];
constreactions=db.prepare("SELECT emoji,count(*) count FROM reactions WHERE post_id=? GROUP BY emoji").all(id)asany[];