@[Controller("thing")] @[VirtualAction("new", "create", Protect(Role("admin")))] @[VirtualAction("edit", "update", Protect(OwnerRelation))] class ThingController : ApplicationController { @[Action, Protect(Role("admin"))] void create ( Request req, Response res ) {...} @[Action] void index ( Request req, Response res ) {...} @[Action, Protect(Role("member"))] void show ( Request req, Response res ) {...} @[Action, Protect(OwnerRelation)] void update ( Request req, Response res ) {...} @[Action("delete"), Protect(Role("admin"))] void remove ( Request req, Response res ) {...} } @[Model("thing")] @[ForbidMassAssignment] class Thing : Model { @[Attr, Shallow] @[Validate( Present, Unique, Length("<=", 128) )] A!string name; @[Attr, Shallow] @[Validate( Length("[]", 16, 256) )] A!string description; @[Attr(BelongsTo, User), Shallow] @[Validate( Present )] A!User user; @[Attr(HasMany, Tag, Through(Tagging))] @[Validate( NoDuplicate )] A!(Tagging[]) tags; @[Attr] @[Validate( Present )] A!ulong size; @[Attr] @[Validate( Present )] A!ulong weight; @property ulong ratio () {...} }