package io.wealthwizards.appsynctesting;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.google.gson.GsonBuilder;

import java.io.IOException;
import java.io.StringWriter;

public final class App {
    public static void main(String[] args) throws IOException {
        var template = args[0];

        var mapper = new ObjectMapper()
                .registerModule(new JavaTimeModule());

        var parsedContext = mapper.readValue(args[1], AppSyncContext.class);
        var state = mapper.readValue(args[2], AppSyncState.class);

        var evaluator = new Evaluator(parsedContext, state);

        try {
            var gson = new GsonBuilder()
                    .serializeNulls()
                    .create();

            var json = gson.toJson(evaluator.evaluate(template));

            System.out.print(json);
        } catch (Exception exception) {
            System.err.print(exception.toString());
        }
    }
}
