package handlers import ( "net/http" "prompt-generator/internal/db" ) func GetClaudeSessions(w http.ResponseWriter, r *http.Request) { projectName := r.URL.Query().Get("project_name") if projectName == "" { fail(w, 400, "project_name 参数必填") return } rows, err := db.DB.Query(` SELECT session_id, COUNT(*) as prompt_count, MAX(created_at) as last_time FROM prompts WHERE project_name=? GROUP BY session_id ORDER BY last_time DESC LIMIT 50 `, projectName) if err != nil { fail(w, 500, "查询失败") return } defer rows.Close() var sessions []map[string]interface{} for rows.Next() { var sessionID string var count int var lastTime string if err := rows.Scan(&sessionID, &count, &lastTime); err != nil { continue } sessions = append(sessions, map[string]interface{}{ "session_id": sessionID, "prompt_count": count, "last_time": lastTime, }) } if sessions == nil { sessions = []map[string]interface{}{} } success(w, sessions) } func GetClaudePrompts(w http.ResponseWriter, r *http.Request) { sessionID := r.PathValue("session_id") if sessionID == "" { fail(w, 400, "session_id 必填") return } rows, err := db.DB.Query(` SELECT id, session_id, project_name, prompt, created_at FROM prompts WHERE session_id=? ORDER BY created_at DESC LIMIT 10 `, sessionID) if err != nil { fail(w, 500, "查询失败") return } defer rows.Close() var prompts []map[string]interface{} for rows.Next() { var id int64 var sid, pname, prompt, createdAt string if err := rows.Scan(&id, &sid, &pname, &prompt, &createdAt); err != nil { continue } prompts = append(prompts, map[string]interface{}{ "id": id, "session_id": sid, "project": pname, "prompt": prompt, "created_at": createdAt, }) } if prompts == nil { prompts = []map[string]interface{}{} } success(w, prompts) }