feat: update text field to use open-ended structures
This commit is contained in:
1 parent
6512f5fe13
commit
7a453ad367
8 files changed
+166
-47
No files matched your search
@@ -0,0 +1,34 @@
|
||||
use std::collections::HashMap;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use macros::Reactive;
|
||||
use crate::components::ValueType;
|
||||
|
||||
/// This struct allows for completely open-ended data storage.
|
||||
///
|
||||
/// The `HashMap` allows the application to store an arbitrary number of values which are accessible
|
||||
/// using a `String` as a key, allowing for simple shifting of stored values. All information is
|
||||
/// stored using the `ValueType` enum, which provides some simple methods to verify the type of the
|
||||
/// stored value. It *must* have a main key member name so that a database will know how to store
|
||||
/// the data.
|
||||
///
|
||||
/// In the future, this should also be optimized to store properly within a DynamoDB table. As of
|
||||
/// now, the table will simply create a single massive `Map` field that contains all the stored
|
||||
/// information in the `HashMap`. We'd prefer to be able to get single values if possible,
|
||||
/// especially for interoperability with other applications, should they be created.
|
||||
#[derive(Debug, Clone, Default, Serialize, Deserialize, Reactive)]
|
||||
pub struct ExpandableInfo {
|
||||
/// The main key member. Required and used to get/put the information in a database.
|
||||
key_member: String,
|
||||
/// The main data store. Contains all information that this struct needs to hold.
|
||||
#[serde(default)]
|
||||
data: HashMap<String, ValueType>,
|
||||
}
|
||||
|
||||
impl ExpandableInfo {
|
||||
pub fn new(key: String) -> Self {
|
||||
Self {
|
||||
key_member: key,
|
||||
data: HashMap::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user