orm: fix sub_structs (fix #25104) (#25105)
Some checks failed
Graphics CI / gg-regressions (push) Waiting to run
vlib modules CI / build-module-docs (push) Waiting to run
native backend CI / native-backend-ubuntu (push) Waiting to run
native backend CI / native-backend-windows (push) Waiting to run
Shy and PV CI / v-compiles-puzzle-vibes (push) Waiting to run
Sanitized CI / sanitize-undefined-clang (push) Waiting to run
Sanitized CI / sanitize-undefined-gcc (push) Waiting to run
Sanitized CI / tests-sanitize-address-clang (push) Waiting to run
Sanitized CI / sanitize-address-msvc (push) Waiting to run
Sanitized CI / sanitize-address-gcc (push) Waiting to run
Sanitized CI / sanitize-memory-clang (push) Waiting to run
sdl CI / v-compiles-sdl-examples (push) Waiting to run
Time CI / time-linux (push) Waiting to run
Time CI / time-macos (push) Waiting to run
Time CI / time-windows (push) Waiting to run
toml CI / toml-module-pass-external-test-suites (push) Waiting to run
Tools CI / tools-linux (clang) (push) Waiting to run
Tools CI / tools-linux (gcc) (push) Waiting to run
Tools CI / tools-linux (tcc) (push) Waiting to run
Tools CI / tools-macos (clang) (push) Waiting to run
Tools CI / tools-windows (gcc) (push) Waiting to run
Tools CI / tools-windows (msvc) (push) Waiting to run
Tools CI / tools-windows (tcc) (push) Waiting to run
Tools CI / tools-docker-ubuntu-musl (push) Waiting to run
vab CI / vab-compiles-v-examples (push) Waiting to run
vab CI / v-compiles-os-android (push) Waiting to run
wasm backend CI / wasm-backend (ubuntu-22.04) (push) Waiting to run
wasm backend CI / wasm-backend (windows-2022) (push) Waiting to run
Workflow Lint / lint-yml-workflows (push) Has been cancelled

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) final_field_typ := g.table.final_type(field.typ)
sym := g.table.sym(final_field_typ) sym := g.table.sym(final_field_typ)
if sym.kind == .struct && sym.name != 'time.Time' { if sym.kind == .struct && sym.name != 'time.Time' {
subs << unsafe { node.sub_structs[int(final_field_typ)] } if final_field_typ in node.sub_structs {
unwrapped_c_typ := g.styp(final_field_typ.clear_flag(.option)) subs << unsafe { node.sub_structs[int(final_field_typ)] }
subs_unwrapped_c_typ << if final_field_typ.has_flag(.option) {
unwrapped_c_typ unwrapped_c_typ := g.styp(final_field_typ.clear_flag(.option))
} else { subs_unwrapped_c_typ << if final_field_typ.has_flag(.option) {
'' unwrapped_c_typ
} else {
''
}
} }
} else if sym.kind == .array { } else if sym.kind == .array {
// Handle foreign keys // 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) { if final_field_typ.has_flag(.option) {
opt_fields << arrs.len 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)] } arrs << unsafe { node.sub_structs[int(final_field_typ)] }
} }
field_names << field.name field_names << field.name