Prototype
// animals/model.rell
entity prototype {
key species: name;
habitat: string;
diet: string;
avg_lifespan: integer;
}
entity animal {
key yours.token;
prototype;
}
// animals/extensions.rell
@extend(yours.populate_metadata)
function populate_metadata(yours.token, modules: set<name>) {
if (not modules.contains("animals")) return null; // ignore non-supported tokens
val metadata = map<text, gtv>();
val animal = animal @? { token }; // ignore not-known animal tokens
if (animal == null) return null;
// attach additional metadata
metadata.put("species", animal.prototype.species.to_gtv());
metadata.put("habitat", animal.prototype.habitat.to_gtv());
metadata.put("diet", animal.prototype.diet.to_gtv());
metadata.put("avg_lifespan", animal.prototype.diet.to_gtv());
return metadata;
}Last updated