Как загрузить записи SQLX в Ve c структур в Rust - PullRequest
0 голосов
/ 02 мая 2020

У меня есть таблица с именами инструментов со следующими полями:

  • id,
  • instrument_token (целое число)
  • tradingsymbol (обнуляемый) строковое поле)

Я определил структуру Rust следующим образом:

pub struct Instrument {
    pub id: i64,
    pub instrument_token: i32,
    pub tradingsymbol: Option<String>,
}

Я запрашиваю и создаю Vec<Instrument> внутри функции следующим образом, используя SQLX

     let records = sqlx::query!(r"select * from instruments").fetch_all(&app_context.db_connection).await?;


        let mut all_instruments: Vec<Instrument> = Vec::new();
        for rec in records {
            all_instruments.push(Instrument {
                id: rec.id,
                instrument_token: rec.instrument_token,
                tradingsymbol: rec.tradingsymbol,
            });
        }

Здесь &app_context.db_connection - это &pool экземпляр.

Это лучший способ загрузки записей в структуру с использованием SQLX. Если да, то как?

1 Ответ

1 голос
/ 02 мая 2020

Если ваша запись и тип данных имеют одинаковые имена и типы полей, вы можете использовать query_as! вместо:

let records: Vec<Instrument> =
    sqlx::query_as!(Instrument, r"select * from instruments")
        .fetch_all(&app_context.db_connection)
        .await?;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...