mirror of
https://github.com/vlang/v.git
synced 2025-08-04 10:17:22 -04:00
parent
16574df99b
commit
2d0ed2c1d6
@ -348,6 +348,54 @@ fn test_orm_insert_with_multiple_child_elements() {
|
||||
assert parent.notes[2].text == 'Third note'
|
||||
}
|
||||
|
||||
fn test_orm_insert_with_child_element_and_no_table() {
|
||||
mut db := sqlite.connect(':memory:')!
|
||||
|
||||
sql db {
|
||||
create table Parent
|
||||
}!
|
||||
|
||||
new_parent := Parent{
|
||||
name: 'test'
|
||||
children: [
|
||||
Child{
|
||||
name: 'Lisa'
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
sql db {
|
||||
insert new_parent into Parent
|
||||
} or { assert true }
|
||||
|
||||
sql db {
|
||||
create table Child
|
||||
}!
|
||||
|
||||
sql db {
|
||||
insert new_parent into Parent
|
||||
} or { assert false }
|
||||
|
||||
new_parent_two := Parent{
|
||||
name: 'retest'
|
||||
children: [
|
||||
Child{
|
||||
name: 'Sophia'
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
sql db {
|
||||
insert new_parent_two into Parent
|
||||
} or { assert false }
|
||||
|
||||
p_table := sql db {
|
||||
select from Parent
|
||||
}!
|
||||
|
||||
assert p_table[2].children[0].name == 'Sophia'
|
||||
}
|
||||
|
||||
@[table: 'customers']
|
||||
struct Customer {
|
||||
id i64 @[primary; sql: serial]
|
||||
|
@ -420,6 +420,8 @@ fn (mut g Gen) write_orm_insert_with_last_ids(node ast.SqlStmtLine, connection_v
|
||||
g.writeln('}')
|
||||
g.indent--
|
||||
g.writeln(');')
|
||||
// Validate main insertion success otherwise, handled and propagated error.
|
||||
g.or_block(res, or_expr, ast.int_type.set_flag(.result))
|
||||
|
||||
if arrs.len > 0 {
|
||||
mut id_name := g.new_tmp_var()
|
||||
@ -473,6 +475,8 @@ fn (mut g Gen) write_orm_insert_with_last_ids(node ast.SqlStmtLine, connection_v
|
||||
unsafe { fff.free() }
|
||||
g.write_orm_insert_with_last_ids(arr, connection_var_name, g.get_table_name_by_struct_type(arr.table_expr.typ),
|
||||
last_ids, res_, id_name, fkeys[i], or_expr)
|
||||
// Validates sub insertion success otherwise, handled and propagated error.
|
||||
g.or_block(res_, or_expr, ast.int_type.set_flag(.result))
|
||||
g.indent--
|
||||
g.writeln('}')
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user