vxx2 / vlib / v3 / transform / orm.v
22 lines · 20 sloc · 773 bytes · 7a89e581dace12716ed47d2e665fd337d9820870
Raw
1module transform
2
3import v3.flat
4
5// transform_sql_expr transforms SQL/ORM expressions before C generation.
6// Full ORM lowering will build driver calls here; until then, keep the existing
7// v3 fallback behavior by replacing SQL expressions with a successful typed
8// default value.
9fn (mut t Transformer) transform_sql_expr(_id flat.NodeId, node flat.Node) flat.NodeId {
10 typ := if node.typ.len > 0 { node.typ } else { '!void' }
11 if t.is_optional_type_name(typ) {
12 opt_type := t.qualify_optional_type(typ)
13 value_type := t.optional_base_type(opt_type)
14 value := if value_type.len > 0 && value_type != 'void' {
15 t.zero_value_for_type(value_type)
16 } else {
17 flat.empty_node
18 }
19 return t.make_optional_some(value, opt_type)
20 }
21 return t.zero_value_for_type(typ)
22}
23