package com.pingcap.kb.integration.template;

import com.github.jknack.handlebars.Handlebars;
import java.io.IOException;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class HandlebarsService {

  private final Handlebars handlebars;

  public HandlebarsService(JdbcTemplateLoader jdbcTemplateLoader, ObjectProvider<NamedHelper> helpers) {
    this.handlebars = new Handlebars(jdbcTemplateLoader);
    helpers.forEach(helper -> {
      handlebars.registerHelper(helper.getName(), helper);
    });
  }

  public String render(String name, Object context) throws IOException {
    return handlebars.compile(name).apply(context);
  }
}
