user_id: i32,
name: String,
post_id: i32,
title: String
}
struct User {
id: i32,
name: String
}
struct Post {
id: i32,
title: String
}
let userWithPosts: Vec<(User, Vec<Post>)> =
joiner!(raws,
"user => many(post)",
("user", |raw| User { id: raw.user_id, name: raw.name }),
("post", |raw| Post { id: raw.post_id, title: raw.title }))
Процедурный макрос - какой угодно
Но я бы советовал посмотреть diesel/ormx/sea-orm
спасибо, гляну на другие, но в дизеле мне не понравилось что он грузит вложенности за несколько запросов
Обычно ORM генерят не то что бы самые оптимальные запросы. Если DSL не позволяет выразить то, что тебе нужно в каком-то месте, не проще использовать raw SQL? Ну, и ещё хорошо бы предварительно побенчить и проверить план, что запрос на самом деле тормозит. А ещё можно написать issue и спросить, можно ли на конкретном DSL выразить это оптимальнее.
Обсуждают сегодня