Initial commit

Change-Id: I2b916ff0acd2a88aeef709cf4f900503e823d44d
diff --git a/derive/examples/attribute.rs b/derive/examples/attribute.rs
new file mode 100644
index 0000000..9fb29df
--- /dev/null
+++ b/derive/examples/attribute.rs
@@ -0,0 +1,47 @@
+use ovsdb_derive::ovsdb_object;
+use std::collections::HashMap;
+use uuid::Uuid;
+
+#[ovsdb_object]
+#[derive(Debug, Clone, PartialEq)]
+pub struct NbGlobal {
+    pub name: String,
+    pub nb_cfg: i64,
+    pub nb_cfg_timestamp: i64,
+    pub sb_cfg: i64,
+    pub sb_cfg_timestamp: i64,
+    pub hv_cfg: i64,
+    pub hv_cfg_timestamp: i64,
+    pub external_ids: HashMap<String, String>,
+    pub connections: Vec<Uuid>,
+    pub ssl: Vec<Uuid>,
+    pub options: HashMap<String, String>,
+    pub ipsec: bool,
+}
+
+fn main() {
+    // Create a new NbGlobal instance
+    let mut nb_global = NbGlobal::new();
+
+    // Set some values
+    nb_global.name = "global".to_string();
+    nb_global.nb_cfg = 0;
+    nb_global
+        .external_ids
+        .insert("test".to_string(), "value".to_string());
+
+    // Convert to a HashMap for OVSDB serialization
+    let map = nb_global.to_map();
+    println!("{:?}", map);
+
+    // Convert to JSON for sending to OVSDB
+    let json = serde_json::to_string(&map).unwrap();
+    println!("{}", json);
+
+    // Simulate receiving JSON from OVSDB
+    let received_map: HashMap<String, serde_json::Value> = serde_json::from_str(&json).unwrap();
+
+    // Convert back to NbGlobal
+    let parsed_nb_global = NbGlobal::from_map(&received_map).unwrap();
+    println!("{:?}", parsed_nb_global);
+}
diff --git a/derive/examples/derive.rs b/derive/examples/derive.rs
new file mode 100644
index 0000000..08233d0
--- /dev/null
+++ b/derive/examples/derive.rs
@@ -0,0 +1,50 @@
+use ovsdb_derive::OVSDB;
+use std::collections::HashMap;
+use uuid::Uuid;
+
+#[derive(Debug, Clone, PartialEq, OVSDB)]
+pub struct NbGlobal {
+    pub name: String,
+    pub nb_cfg: i64,
+    pub nb_cfg_timestamp: i64,
+    pub sb_cfg: i64,
+    pub sb_cfg_timestamp: i64,
+    pub hv_cfg: i64,
+    pub hv_cfg_timestamp: i64,
+    pub external_ids: HashMap<String, String>,
+    pub connections: Vec<Uuid>,
+    pub ssl: Vec<Uuid>,
+    pub options: HashMap<String, String>,
+    pub ipsec: bool,
+
+    // Required fields
+    pub _uuid: Option<Uuid>,
+    pub _version: Option<Uuid>,
+}
+
+fn main() {
+    // Create a new NbGlobal instance
+    let mut nb_global = NbGlobal::new();
+
+    // Set some values
+    nb_global.name = "global".to_string();
+    nb_global.nb_cfg = 0;
+    nb_global
+        .external_ids
+        .insert("test".to_string(), "value".to_string());
+
+    // Convert to a HashMap for OVSDB serialization
+    let map = nb_global.to_map();
+    println!("{:?}", map);
+
+    // Convert to JSON for sending to OVSDB
+    let json = serde_json::to_string(&map).unwrap();
+    println!("{}", json);
+
+    // Simulate receiving JSON from OVSDB
+    let received_map: HashMap<String, serde_json::Value> = serde_json::from_str(&json).unwrap();
+
+    // Convert back to NbGlobal
+    let parsed_nb_global = NbGlobal::from_map(&received_map).unwrap();
+    println!("{:?}", parsed_nb_global);
+}