orm: fix sub_structs (fix #25104) (#25105)

This commit is contained in:
Felipe Pena 2025-08-17 17:46:10 -03:00 committed by GitHub
parent 54f7c36aca
commit 9f910643ed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -360,12 +360,15 @@ fn (mut g Gen) write_orm_insert_with_last_ids(node ast.SqlStmtLine, connection_v
final_field_typ := g.table.final_type(field.typ)
sym := g.table.sym(final_field_typ)
if sym.kind == .struct && sym.name != 'time.Time' {
subs << unsafe { node.sub_structs[int(final_field_typ)] }
unwrapped_c_typ := g.styp(final_field_typ.clear_flag(.option))
subs_unwrapped_c_typ << if final_field_typ.has_flag(.option) {
unwrapped_c_typ
} else {
''
if final_field_typ in node.sub_structs {
subs << unsafe { node.sub_structs[int(final_field_typ)] }
unwrapped_c_typ := g.styp(final_field_typ.clear_flag(.option))
subs_unwrapped_c_typ << if final_field_typ.has_flag(.option) {
unwrapped_c_typ
} else {
''
}
}
} else if sym.kind == .array {
// Handle foreign keys
@ -377,7 +380,7 @@ fn (mut g Gen) write_orm_insert_with_last_ids(node ast.SqlStmtLine, connection_v
if final_field_typ.has_flag(.option) {
opt_fields << arrs.len
}
if node.sub_structs.len > 0 {
if final_field_typ in node.sub_structs {
arrs << unsafe { node.sub_structs[int(final_field_typ)] }
}
field_names << field.name