Makes sure all relation instances have assigned names. Tries to infer from table references.
(query: SqlQuery, ctx: &mut Context)
| 438 | |
| 439 | /// Makes sure all relation instances have assigned names. Tries to infer from table references. |
| 440 | fn assign_names(query: SqlQuery, ctx: &mut Context) -> SqlQuery { |
| 441 | // generate CTE names, make sure they don't clash |
| 442 | let decls = ctx.anchor.table_decls.values_mut(); |
| 443 | let mut names = HashSet::new(); |
| 444 | for decl in decls.sorted_by_key(|d| d.id.get()) { |
| 445 | while decl.name.is_none() || names.contains(decl.name.as_ref().unwrap()) { |
| 446 | decl.name = Some(Ident::from_name(ctx.anchor.table_name.gen())); |
| 447 | } |
| 448 | names.insert(decl.name.clone().unwrap()); |
| 449 | } |
| 450 | |
| 451 | // generate relation variable names |
| 452 | RelVarNameAssigner { |
| 453 | ctx, |
| 454 | relation_instance_names: Default::default(), |
| 455 | } |
| 456 | .fold_sql_query(query) |
| 457 | .unwrap() |
| 458 | } |
| 459 | |
| 460 | struct RelVarNameAssigner<'a> { |
| 461 | relation_instance_names: HashSet<String>, |
no test coverage detected