sqlx_postgres/message/
query.rs1use crate::io::BufMutExt;
2use crate::message::{FrontendMessage, FrontendMessageFormat};
3use sqlx_core::Error;
4use std::num::Saturating;
5
6#[derive(Debug)]
7pub struct Query<'a>(pub &'a str);
8
9impl FrontendMessage for Query<'_> {
10 const FORMAT: FrontendMessageFormat = FrontendMessageFormat::Query;
11
12 fn body_size_hint(&self) -> Saturating<usize> {
13 let mut size = Saturating(0);
14
15 size += self.0.len();
16 size += 1; size
19 }
20
21 fn encode_body(&self, buf: &mut Vec<u8>) -> Result<(), Error> {
22 buf.put_str_nul(self.0);
23 Ok(())
24 }
25}
26
27#[test]
28fn test_encode_query() {
29 const EXPECTED: &[u8] = b"Q\0\0\0\x0DSELECT 1\0";
30
31 let mut buf = Vec::new();
32 let m = Query("SELECT 1");
33
34 m.encode_msg(&mut buf).unwrap();
35
36 assert_eq!(buf, EXPECTED);
37}