wtx 0.28.0

A collection of different transport implementations and related tools focused primarily on web technologies.
use crate::database::{
  Records,
  client::postgres::{Postgres, PostgresCommonRecords, PostgresRecord, PostgresStatement},
};
use core::ops::Range;

/// Records
#[derive(Debug)]
pub struct PostgresRecords<'exec, E> {
  pub(crate) common: PostgresCommonRecords<'exec, E>,
}

impl<'exec, E> PostgresRecords<'exec, E> {
  #[inline]
  pub(crate) fn new(
    records: &'exec [u8],
    records_params: &'exec [(Range<usize>, Range<usize>)],
    stmt: PostgresStatement<'exec>,
    values_params: &'exec [(bool, Range<usize>)],
  ) -> Self {
    Self { common: PostgresCommonRecords::new(records, records_params, stmt, values_params) }
  }
}

impl<'exec, E> Records<'exec> for PostgresRecords<'exec, E>
where
  E: From<crate::Error>,
{
  type Database = Postgres<E>;

  #[inline]
  fn get(&self, idx: usize) -> Option<PostgresRecord<'exec, E>> {
    self.common.get(idx)
  }

  #[inline]
  fn iter(&self) -> impl Iterator<Item = PostgresRecord<'exec, E>> {
    self.common.iter()
  }

  #[inline]
  fn len(&self) -> usize {
    self.common.len()
  }
}

impl<E> Default for PostgresRecords<'_, E> {
  #[inline]
  fn default() -> Self {
    Self::new(&[], &[], PostgresStatement::default(), &[])
  }
}