static-mustache
static-mustache copied to clipboard
Repurpose static-mustache to allow SQL-query templates
class User {
// ...
}
class UserFilter {
// ...
}
@GenerateRenderablesFacade(className = "DefaultSuperAppQueries")
interface SuperAppQueries {
@RenderableFactoryMethod(tamplate = "com/github/sviperll/mysuperall/user.sql.mustache")
Query findUsers(UserFilter user);
}
@GenerateRenderablesFacade(className = "DefaultSuperAppViews")
interface SuperAppViews {
@RenderableFactoryMethod(tamplate = "com/github/sviperll/mysuperall/user.html.mustache")
Renderable<Html> renderableUser(User user);
}
class Main {
public static void main(String[] args) throws IOException {
SuperAppQueries queries = new DefaultSuperAppQueries();
UserFilter filter = UserFilter.builder().orderThan(21).nameLike("Snow").build();
Query query = queries.findUsersQuery(filter);
User user;
try (Connection connection = dataSource.getConnection()) {
SqlSupplier<ResultSet> queryRunner = query.createRunner(connection);
try (ResultSet resultSet = queryRunner.get()) {
UserReader reader = new UserReader(resultSet);
user = reader.readUser();
}
}
SuperAppViews views = new DefaultSuperAppViews();
Renderable<Html> renderableUser = views.renderableUser(user);
Renderer renderer = renderable.createRenderer(System.out);
renderer.render();
}
}