New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Joint row deserialization into structs #1314
Comments
We do face the same issues. Currently, our work around for this is to use #[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize, Default)]
pub struct User {
#[serde(alias='user_table_id')]
pub id: i32,
#[serde(alias='user_table_date')]
pub date: DateTime<Utc>,
#[serde(alias='user_table_group_id')]
pub group_id: i32,
}
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize, Default)]
pub struct Group {
#[serde(alias='group_table_id')]
pub id: i32,
#[serde(alias='group_table_name')]
pub name: String,
} And then modify your query to include those names, like so: let rows = db_conn
.query(
"SELECT users.id as user_table_id,
users.date as user_table_date,
users.group_id as user_table_group_id,
groups.id as group_table_id,
groups.name as group_table_name
FROM users
JOIN groups ON users.group_id = groups.id
WHERE users.user_id = ?1 LIMIT ?2
",
params![user_id.clone(), 10],
)
.await?;
while let Some(row) = rows.next().await? {
let user = from_row<User>(&row)?;
let group = from_row<Group>(&row)?;
} Although this seems like a lot of work, but since the query is mostly generated programmatically, this is a fair bit easier to work with. But I totally agree with you that if there was some solution to this directly from libsql, it would be a huge help. |
I have this common use case where I join two tables and I want to deserialize a row into separate structs. However, each row cannot be easily deserialized into separate structs via
from_row
.The query is like
I have to do things like the following to be able to convert a
Row
into separate structs:To be able to do something like
Is there a way to support
from_row
for theJOIN
use cases maybe via tuples so that this manual work is not needed anymore?The text was updated successfully, but these errors were encountered: