// vtest flaky: true
// vtest retry: 3
import db.sqlite

struct Member {
	id       int      @[primary]
	children ?[]Child @[fkey: parent_id]
}

struct Child {
	id        int @[primary]
	parent_id int
}

fn test_main() {
	mut db := sqlite.connect(':memory:') or { panic(err) }
	defer {
		db.close() or { panic(err) }
	}
	sql db {
		create table Member
	} or { println(err) }
	sql db {
		create table Child
	} or { println(err) }
	new_member := Member{
		id: 1
		children: [Child{
			id: 1
			parent_id: 1
		}, Child{
			id: 2
			parent_id: 1
		}]
	}
	sql db {
		insert new_member into Member
	}!

	rows := sql db {
		select from Member
	}!

	assert rows[0].children?.len == 2
	assert rows[0].children?[0].id == 1
	assert rows[0].children?[1].id == 2
}
