refactor(jans-cedarling): enhance schema parser and entity creation implementation #10513
Open
Description
Is your feature request related to a problem? Please describe.
The current Cedar Schema Parser and Entity Creation features lack some automation and validation capabilities. Specifically:
- Parsing schemas could be made more robust and efficient.
- Entity creation via Cedarling is hard to maintain since every time a new entity is introduced, a new custom function for that entity might be required depending on the entity shape.
Describe the solution you'd like
- Improve Cedar Schema Parser: Enhance the parser to handle edge cases, improve performance, and provide clearer error messages when schemas are invalid.
- Enhance Cedar Entity Creation: Update cedarling to:
- Validate the schema against the supplied HashMap.
- Automatically attempt to create entities based on the schema.
- Return detailed error messages if the creation fails due to mismatches or missing data. For example, if the supplied HashMap includes a key "Access_token" with a corresponding struct, the entity builder should validate this against the schema and either create the entity or return a descriptive error.
Describe alternatives you've considered
- Manually validating HashMap entries before invoking entity creation, which is error-prone and less efficient.
- Writing custom logic for schema validation, which adds additional maintenance overhead and redundancy.
Additional context
Example usage:
// we define this struct which will hold all data gathered from the tokens
struct EntityBuilder;
// the creation here will probably not be as simple as calling `new` since we need to take
// note of the mappings but is initialized like this in the example for brevity.
let entity_builder = EntityBuilder::new();
entity_data.insert("Access_token", SomeStruct { /* fields */ });
match entity_builder.create_entity(&entity_data) {
Ok(entity) => println!("Entity created: {:?}", entity),
Err(e) => println!("Failed to create entity: {}", e),
}
Activity