| 132 | } |
| 133 | |
| 134 | fn show_examples() -> Result<()> { |
| 135 | println!( |
| 136 | r#" |
| 137 | VCSQL EXAMPLE QUERIES |
| 138 | ==================== |
| 139 | |
| 140 | BASIC QUERIES |
| 141 | ------------- |
| 142 | |
| 143 | # Recent commits |
| 144 | vcsql "SELECT short_id, summary, authored_at |
| 145 | FROM commits |
| 146 | ORDER BY authored_at DESC |
| 147 | LIMIT 10" |
| 148 | |
| 149 | # Current branch |
| 150 | vcsql "SELECT name FROM branches WHERE is_head = 1" |
| 151 | |
| 152 | # All branches with their targets |
| 153 | vcsql "SELECT name, target_id, is_remote FROM branches" |
| 154 | |
| 155 | ANALYTICS |
| 156 | --------- |
| 157 | |
| 158 | # Commits by author |
| 159 | vcsql "SELECT author_name, COUNT(*) as commits |
| 160 | FROM commits |
| 161 | GROUP BY author_name |
| 162 | ORDER BY commits DESC" |
| 163 | |
| 164 | # Commits by day of week |
| 165 | vcsql "SELECT |
| 166 | CASE CAST(strftime('%w', authored_at) AS INTEGER) |
| 167 | WHEN 0 THEN 'Sun' WHEN 1 THEN 'Mon' |
| 168 | WHEN 2 THEN 'Tue' WHEN 3 THEN 'Wed' |
| 169 | WHEN 4 THEN 'Thu' WHEN 5 THEN 'Fri' WHEN 6 THEN 'Sat' |
| 170 | END as day, |
| 171 | COUNT(*) as commits |
| 172 | FROM commits |
| 173 | GROUP BY day" |
| 174 | |
| 175 | # Merge commits |
| 176 | vcsql "SELECT short_id, summary FROM commits WHERE is_merge = 1" |
| 177 | |
| 178 | JOINS |
| 179 | ----- |
| 180 | |
| 181 | # Commits with branch info |
| 182 | vcsql "SELECT c.short_id, c.summary, b.name as branch |
| 183 | FROM commits c |
| 184 | JOIN branches b ON b.target_id = c.id" |
| 185 | |
| 186 | # Find merge commits with their parents |
| 187 | vcsql "SELECT c.summary, p.parent_id, p.parent_index |
| 188 | FROM commits c |
| 189 | JOIN commit_parents p ON p.commit_id = c.id |
| 190 | WHERE c.is_merge = 1 |
| 191 | LIMIT 10" |