public interface Report<T>
DSL example:
module Web {
report GatherStartupPage {
int perPage;
int userID;
date after;
List<Question> popularQuestions 'it => it.date > after' limit perPage;
UserInfo userInfo 'it => it.id == userID';
List<Menu> menu 'it => it.active' order by index;
count<Question> totalQuestions;
}
aggregate Question {
date date;
string text;
}
aggregate UserInfo(id) {
int id;
string name;
}
SQL Menu 'SELECT name, active FROM StartupMenu' {
String name;
bool active;
}
}