fix(cli): Correct project filtering and GROUP_CONCAT delimiter
Two SQL correctness issues fixed: 1. Project filter used LIKE '%term%' which caused partial matches (e.g. filtering for "foo" matched "group/foobar"). Now uses exact match OR suffix match after '/' so "foo" matches "group/foo" but not "group/foobar". 2. GROUP_CONCAT used comma as delimiter for labels and assignees, which broke parsing when label names themselves contained commas. Switched to ASCII unit separator (0x1F) which cannot appear in GitLab entity names. Also adds a guard for negative time deltas in format_relative_time to handle clock skew gracefully instead of panicking. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -150,8 +150,12 @@ fn find_issue(conn: &Connection, iid: i64, project_filter: Option<&str>) -> Resu
|
||||
i.created_at, i.updated_at, i.web_url, p.path_with_namespace
|
||||
FROM issues i
|
||||
JOIN projects p ON i.project_id = p.id
|
||||
WHERE i.iid = ? AND p.path_with_namespace LIKE ?",
|
||||
vec![Box::new(iid), Box::new(format!("%{}%", project))],
|
||||
WHERE i.iid = ? AND (p.path_with_namespace = ? OR p.path_with_namespace LIKE ?)",
|
||||
vec![
|
||||
Box::new(iid),
|
||||
Box::new(project.to_string()),
|
||||
Box::new(format!("%/{}", project)),
|
||||
],
|
||||
),
|
||||
None => (
|
||||
"SELECT i.id, i.iid, i.title, i.description, i.state, i.author_username,
|
||||
@@ -336,8 +340,12 @@ fn find_mr(conn: &Connection, iid: i64, project_filter: Option<&str>) -> Result<
|
||||
m.web_url, p.path_with_namespace
|
||||
FROM merge_requests m
|
||||
JOIN projects p ON m.project_id = p.id
|
||||
WHERE m.iid = ? AND p.path_with_namespace LIKE ?",
|
||||
vec![Box::new(iid), Box::new(format!("%{}%", project))],
|
||||
WHERE m.iid = ? AND (p.path_with_namespace = ? OR p.path_with_namespace LIKE ?)",
|
||||
vec![
|
||||
Box::new(iid),
|
||||
Box::new(project.to_string()),
|
||||
Box::new(format!("%/{}", project)),
|
||||
],
|
||||
),
|
||||
None => (
|
||||
"SELECT m.id, m.iid, m.title, m.description, m.state, m.draft,
|
||||
|
||||
Reference in New Issue
Block a user