#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub struct TablespaceStatistics {
id: u64,
logfile_group_number: u64,
free_extents: u64,
total_extents: u64,
extent_size: u64,
initial_size: u64,
maximum_size: u64,
autoextend_size: u64,
version: u64,
data_free: u64,
}
impl TablespaceStatistics {
#[must_use]
pub const fn new() -> Self {
Self {
id: 0,
logfile_group_number: 0,
free_extents: 0,
total_extents: 0,
extent_size: 0,
initial_size: 0,
maximum_size: 0,
autoextend_size: 0,
version: 0,
data_free: 0,
}
}
#[must_use]
pub const fn with_id(mut self, value: u64) -> Self {
self.id = value;
self
}
#[must_use]
pub const fn with_logfile_group_number(mut self, value: u64) -> Self {
self.logfile_group_number = value;
self
}
#[must_use]
pub const fn with_free_extents(mut self, value: u64) -> Self {
self.free_extents = value;
self
}
#[must_use]
pub const fn with_total_extents(mut self, value: u64) -> Self {
self.total_extents = value;
self
}
#[must_use]
pub const fn with_extent_size(mut self, value: u64) -> Self {
self.extent_size = value;
self
}
#[must_use]
pub const fn with_initial_size(mut self, value: u64) -> Self {
self.initial_size = value;
self
}
#[must_use]
pub const fn with_maximum_size(mut self, value: u64) -> Self {
self.maximum_size = value;
self
}
#[must_use]
pub const fn with_autoextend_size(mut self, value: u64) -> Self {
self.autoextend_size = value;
self
}
#[must_use]
pub const fn with_version(mut self, value: u64) -> Self {
self.version = value;
self
}
#[must_use]
pub const fn with_data_free(mut self, value: u64) -> Self {
self.data_free = value;
self
}
pub const fn id(&self) -> u64 {
self.id
}
pub const fn logfile_group_number(&self) -> u64 {
self.logfile_group_number
}
pub const fn free_extents(&self) -> u64 {
self.free_extents
}
pub const fn total_extents(&self) -> u64 {
self.total_extents
}
pub const fn extent_size(&self) -> u64 {
self.extent_size
}
pub const fn initial_size(&self) -> u64 {
self.initial_size
}
pub const fn maximum_size(&self) -> u64 {
self.maximum_size
}
pub const fn autoextend_size(&self) -> u64 {
self.autoextend_size
}
pub const fn version(&self) -> u64 {
self.version
}
pub const fn data_free(&self) -> u64 {
self.data_free
}
}
impl Default for TablespaceStatistics {
fn default() -> Self {
Self::new()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn new_zeros_every_field() {
let s = TablespaceStatistics::new();
assert_eq!(s.id(), 0);
assert_eq!(s.data_free(), 0);
}
#[test]
fn builder_preserves_each_setter() {
let s = TablespaceStatistics::new()
.with_id(7)
.with_data_free(4096)
.with_extent_size(64);
assert_eq!(s.id(), 7);
assert_eq!(s.data_free(), 4096);
assert_eq!(s.extent_size(), 64);
}
}