individual_operations/
individual_operations.rs1use v_storage::*;
14use v_individual_model::onto::individual::Individual;
15
16fn main() {
17 println!("=== Демонстрация работы с Individual в v-storage ===\n");
18
19 let mut storage = VStorage::new(Box::new(MemoryStorage::new()));
21
22 let mut individual = Individual::default();
24
25 println!("1. Загрузка несуществующего Individual:");
26 match storage.get_individual("test:nonexistent", &mut individual) {
27 StorageResult::Ok(_) => {
28 println!(" ✓ Individual найден!");
29 println!(" • ID: {}", individual.get_id());
30 },
31 StorageResult::UnprocessableEntity => {
32 println!(" ✗ Individual найден, но не может быть обработан");
33 println!(" • Возможно, данные повреждены или имеют неверный формат");
34 },
35 StorageResult::NotFound => {
36 println!(" ✗ Individual не найден");
37 println!(" • Ключ 'test:nonexistent' не существует в хранилище");
38 },
39 StorageResult::NotReady => {
40 println!(" ✗ Хранилище не готово");
41 },
42 StorageResult::Error(msg) => {
43 println!(" ✗ Ошибка: {}", msg);
44 }
45 }
46
47 println!("\n2. Сохранение Individual данных:");
48
49 let individual_data = r#"{"@":"individual","@id":"test:person","rdfs:label":[{"data":"Тестовый пользователь","lang":"ru","type":"_string"}]}"#;
51
52 match storage.put_value(StorageId::Individuals, "test:person", individual_data) {
53 StorageResult::Ok(_) => {
54 println!(" ✓ Individual успешно сохранен");
55 },
56 StorageResult::Error(msg) => {
57 println!(" ✗ Ошибка при сохранении: {}", msg);
58 },
59 _ => {
60 println!(" ✗ Неожиданная ошибка при сохранении");
61 }
62 }
63
64 println!("\n3. Загрузка существующего Individual:");
65 match storage.get_individual("test:person", &mut individual) {
66 StorageResult::Ok(_) => {
67 println!(" ✓ Individual успешно загружен!");
68 println!(" • ID: {}", individual.get_id());
69 println!(" • Сырые данные: {} байт", individual.get_raw_len());
70 },
71 StorageResult::UnprocessableEntity => {
72 println!(" ✗ Individual найден, но не может быть обработан");
73 println!(" • Проверьте формат данных");
74 },
75 StorageResult::NotFound => {
76 println!(" ✗ Individual не найден");
77 },
78 StorageResult::NotReady => {
79 println!(" ✗ Хранилище не готово");
80 },
81 StorageResult::Error(msg) => {
82 println!(" ✗ Ошибка: {}", msg);
83 }
84 }
85
86 println!("\n4. Тестирование с невалидными данными:");
87
88 let invalid_data = "это не JSON и не Individual";
90 match storage.put_value(StorageId::Individuals, "test:invalid", invalid_data) {
91 StorageResult::Ok(_) => {
92 println!(" ✓ Невалидные данные сохранены (для тестирования)");
93 },
94 StorageResult::Error(msg) => {
95 println!(" ✗ Ошибка при сохранении: {}", msg);
96 },
97 _ => {
98 println!(" ✗ Неожиданная ошибка при сохранении");
99 }
100 }
101
102 match storage.get_individual("test:invalid", &mut individual) {
104 StorageResult::Ok(_) => {
105 println!(" ✓ Данные загружены (неожиданно)");
106 },
107 StorageResult::UnprocessableEntity => {
108 println!(" ✓ Корректно обработаны невалидные данные");
109 println!(" • Система правильно определила, что данные не являются Individual");
110 },
111 StorageResult::NotFound => {
112 println!(" ✗ Данные не найдены (неожиданно)");
113 },
114 StorageResult::NotReady => {
115 println!(" ✗ Хранилище не готово");
116 },
117 StorageResult::Error(msg) => {
118 println!(" ✗ Ошибка: {}", msg);
119 }
120 }
121
122 println!("\n5. Работа с различными типами хранилищ:");
123
124 let mut memory_storage = VStorageEnum::memory();
126
127 println!(" • Память: сохранение данных...");
128 match memory_storage.put_value(StorageId::Individuals, "test:memory", individual_data) {
129 StorageResult::Ok(_) => {
130 println!(" ✓ Данные сохранены в памяти");
131
132 match memory_storage.get_individual(StorageId::Individuals, "test:memory", &mut individual) {
134 StorageResult::Ok(_) => {
135 println!(" ✓ Данные успешно загружены из памяти");
136 println!(" • ID: {}", individual.get_id());
137 },
138 result => {
139 println!(" ✗ Не удалось загрузить данные: {:?}", result);
140 }
141 }
142 },
143 StorageResult::Error(msg) => {
144 println!(" ✗ Ошибка при сохранении: {}", msg);
145 },
146 _ => {
147 println!(" ✗ Неожиданная ошибка при сохранении");
148 }
149 }
150
151 println!("\n6. Подсчет количества Individual:");
152 match storage.count(StorageId::Individuals) {
153 StorageResult::Ok(count) => {
154 println!(" ✓ В хранилище {} Individual(s)", count);
155 },
156 StorageResult::Error(msg) => {
157 println!(" ✗ Ошибка при подсчете: {}", msg);
158 },
159 _ => {
160 println!(" ✗ Подсчет недоступен");
161 }
162 }
163
164 println!("\n7. Лучшие практики:");
165 println!(" • Всегда проверяйте StorageResult при загрузке Individual");
166 println!(" • StorageResult::UnprocessableEntity означает, что данные есть, но не валидны");
167 println!(" • StorageResult::NotFound означает, что данных нет");
168 println!(" • StorageResult::NotReady означает, что хранилище не готово к работе");
169 println!(" • Используйте соответствующие методы для разных типов данных");
170
171 println!("\n=== Демонстрация завершена ===");
172}