discord_cassandra_cpp/cassandra/
field.rs

1use crate::cassandra::inet::Inet;
2use crate::cassandra::iterator::MapIterator;
3use crate::cassandra::iterator::SetIterator;
4// use decimal::d128;
5use crate::cassandra::error::*;
6use crate::cassandra::util::Protected;
7use crate::cassandra::uuid::Uuid;
8use crate::cassandra::value::{write_map, write_set, Value, ValueType};
9
10use crate::cassandra_sys::cass_iterator_from_collection;
11use crate::cassandra_sys::cass_iterator_from_map;
12use crate::cassandra_sys::cass_true;
13use crate::cassandra_sys::cass_value_get_bool;
14use crate::cassandra_sys::cass_value_get_decimal;
15use crate::cassandra_sys::cass_value_get_double;
16use crate::cassandra_sys::cass_value_get_float;
17use crate::cassandra_sys::cass_value_get_inet;
18use crate::cassandra_sys::cass_value_get_int16;
19use crate::cassandra_sys::cass_value_get_int32;
20use crate::cassandra_sys::cass_value_get_int64;
21use crate::cassandra_sys::cass_value_get_int8;
22use crate::cassandra_sys::cass_value_get_string;
23use crate::cassandra_sys::cass_value_get_uint32;
24use crate::cassandra_sys::cass_value_get_uuid;
25use crate::cassandra_sys::cass_value_type;
26use crate::cassandra_sys::CASS_ERROR_LIB_INVALID_VALUE_TYPE;
27use crate::cassandra_sys::CASS_VALUE_TYPE_ASCII;
28use crate::cassandra_sys::CASS_VALUE_TYPE_BIGINT;
29use crate::cassandra_sys::CASS_VALUE_TYPE_BLOB;
30use crate::cassandra_sys::CASS_VALUE_TYPE_BOOLEAN;
31use crate::cassandra_sys::CASS_VALUE_TYPE_COUNTER;
32use crate::cassandra_sys::CASS_VALUE_TYPE_CUSTOM;
33use crate::cassandra_sys::CASS_VALUE_TYPE_DATE;
34use crate::cassandra_sys::CASS_VALUE_TYPE_DECIMAL;
35use crate::cassandra_sys::CASS_VALUE_TYPE_DOUBLE;
36use crate::cassandra_sys::CASS_VALUE_TYPE_FLOAT;
37use crate::cassandra_sys::CASS_VALUE_TYPE_INET;
38use crate::cassandra_sys::CASS_VALUE_TYPE_INT;
39use crate::cassandra_sys::CASS_VALUE_TYPE_LAST_ENTRY;
40use crate::cassandra_sys::CASS_VALUE_TYPE_LIST;
41use crate::cassandra_sys::CASS_VALUE_TYPE_MAP;
42use crate::cassandra_sys::CASS_VALUE_TYPE_SET;
43use crate::cassandra_sys::CASS_VALUE_TYPE_SMALL_INT;
44use crate::cassandra_sys::CASS_VALUE_TYPE_TEXT;
45use crate::cassandra_sys::CASS_VALUE_TYPE_TIME;
46use crate::cassandra_sys::CASS_VALUE_TYPE_TIMESTAMP;
47use crate::cassandra_sys::CASS_VALUE_TYPE_TIMEUUID;
48use crate::cassandra_sys::CASS_VALUE_TYPE_TINY_INT;
49use crate::cassandra_sys::CASS_VALUE_TYPE_TUPLE;
50use crate::cassandra_sys::CASS_VALUE_TYPE_UDT;
51use crate::cassandra_sys::CASS_VALUE_TYPE_UNKNOWN;
52use crate::cassandra_sys::CASS_VALUE_TYPE_UUID;
53use crate::cassandra_sys::CASS_VALUE_TYPE_VARCHAR;
54use crate::cassandra_sys::CASS_VALUE_TYPE_VARINT;
55
56use std::fmt;
57use std::fmt::Debug;
58use std::fmt::Display;
59use std::fmt::Formatter;
60use std::mem;
61use std::slice;
62use std::str;
63
64// #[repr(C)]
65// #[derive(Copy,Debug,Clone)]
66// #[allow(missing_docs)]
67// pub enum FieldType {
68//    PARTITION_KEY = 0,
69//    CLUSTERING_KEY = 1,
70//    REGULAR = 2,
71//    COMPACT_VALUE = 3,
72//    STATIC = 4,
73//    UNKNOWN = 5,
74// }
75
76// impl FieldType {
77//    //    pub fn build(type_num: u32) -> Result<FieldType, u32> {
78//    //        match type_num {
79//    //            //            0 => Ok(PARTITION_KEY),
80//    //            //            1 => Ok(CLUSTERING_KEY),
81//    //            //            2 => Ok(REGULAR),
82//    //            //            3 => Ok(COMPACT_VALUE),
83//    //            //            4 => Ok(STATIC),
84//    //            //            5 => Ok(UNKNOWN),
85//    //            err => Err(err),
86//    //        }
87//    //    }
88// }
89
90/// A field's metadata
91pub struct Field {
92    /// The field's name
93    pub name: String,
94    /// The field's value
95    pub value: Value,
96}
97
98impl Debug for Field {
99    fn fmt(&self, f: &mut Formatter) -> fmt::Result {
100        write!(f, "{} Cassandra type", self.get_type())
101    }
102}
103
104impl Display for Field {
105    fn fmt(&self, f: &mut Formatter) -> fmt::Result {
106        write!(f, "{} Cassandra type", self.get_type())
107    }
108}
109
110impl Field {
111    /// Gets the name of this field
112    pub fn get_name(&self) -> String {
113        self.name.clone()
114    }
115
116    /// Gets the type of this field
117    pub fn get_type(&self) -> ValueType {
118        self.value.get_type()
119    }
120
121    /// Gets the value of this field
122    pub fn get_value(&self) -> &Value {
123        &self.value
124    }
125}