scylla_cql/frame/request/
prepare.rs

1use std::num::TryFromIntError;
2
3use thiserror::Error;
4
5use crate::frame::frame_errors::CqlRequestSerializationError;
6
7use crate::{
8    frame::request::{RequestOpcode, SerializableRequest},
9    frame::types,
10};
11
12pub struct Prepare<'a> {
13    pub query: &'a str,
14}
15
16impl SerializableRequest for Prepare<'_> {
17    const OPCODE: RequestOpcode = RequestOpcode::Prepare;
18
19    fn serialize(&self, buf: &mut Vec<u8>) -> Result<(), CqlRequestSerializationError> {
20        types::write_long_string(self.query, buf)
21            .map_err(PrepareSerializationError::StatementStringSerialization)?;
22        Ok(())
23    }
24}
25
26/// An error type returned when serialization of PREPARE request fails.
27#[non_exhaustive]
28#[derive(Error, Debug, Clone)]
29pub enum PrepareSerializationError {
30    /// Failed to serialize the CQL statement string.
31    #[error("Failed to serialize statement contents: {0}")]
32    StatementStringSerialization(TryFromIntError),
33}