With Beeson being the prefer schema model for Swarm, it is also possible to have a query language that allows for path and traversal in beeson / super beeson structure. In this proposal we use existing javascript language called JEXL.
Guide-level explanation
Javascript Expression Language or JEXL has most of the features for a lightweight query language for Beeson, with additional built-ins.
Lookup SwarmSoC, SwarmFeed or SwarmBeeson reference
query
// This is a built-in transform for pathing, this is the simple case
beeson.typeManager.addTransform('lookupSwarmBeesonRef', async (ref, timeout = 60_000) => {
// must return a Beeson object
return fdpStorage.download(ref).toBeeson()
})
try {
const typeDna1 = await beeson.query('ref|lookupSwarmBeesonRef', context)
// or
const typeDna2 = await beeson.query.lookupSwarmBeesonRef(ref)
} catch (e) {
// log error
}
Swarm DB - Beeson Query Language
Swarm DB Beeson Query Language
Summary
With Beeson being the prefer schema model for Swarm, it is also possible to have a query language that allows for path and traversal in beeson / super beeson structure. In this proposal we use existing javascript language called JEXL.
Guide-level explanation
Javascript Expression Language or JEXL has most of the features for a lightweight query language for Beeson, with additional built-ins.
Sample data for queries
data
Query type manager
query
output
Query data
query
output
Mutate schema and data
query
output
Lookup SwarmSoC, SwarmFeed or SwarmBeeson reference
query
output
Copyright
Copyright and related rights waived via CC0.
Author
@molekilla (Rogelio Morrell)