A Program
имеет отношение один ко многим с Project
. Я ищу идеальный способ включить все проекты в программу при печати ответа JSON.
extern crate rocket_contrib;
#[macro_use]
extern crate serde;
#[macro_use]
extern crate serde_derive;
#[macro_use]
extern crate serde_json;
use rocket_contrib::Json;
use serde_json::Value;
mod schema {
table! {
projects (id) {
id -> Int4,
title -> Varchar,
program_id -> Int4,
is_archived -> Bool,
}
}
table! {
programs (id) {
id -> Int4,
title -> Varchar,
is_archived -> Bool,
}
}
}
fn main() {
let program = Program::get(id);
let json_value = Json(json!({ "result": program }));
}
Я смотрел на реализацию пользовательской сериализации:
impl Serialize for Program {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
}
}
Но у меня нет db::Conn
, необходимого для извлечения проектов в этой функции.
Я ищу ответ как:
{
"id": 1,
"is_archived": false,
"title": "Program 1",
"projects": [{
"id": 2,
"is_archived": false,
"title": "Project 1"
}]
}