package com.airbnb.airpal.sql.jdbi;
import com.airbnb.airpal.api.queries.FeaturedQuery;
import com.airbnb.airpal.api.queries.SavedQuery;
import com.airbnb.airpal.api.queries.UserSavedQuery;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
@Slf4j
public class QueryStoreMapper implements ResultSetMapper<SavedQuery>
{
private final ObjectMapper objectMapper;
public QueryStoreMapper(ObjectMapper objectMapper)
{
this.objectMapper = objectMapper;
}
@Override
public SavedQuery map(int index, ResultSet r, StatementContext ctx)
throws SQLException
{
try {
return new UserSavedQuery(
objectMapper.readValue(r.getString("query"), FeaturedQuery.QueryWithPlaceholders.class),
r.getString("user"),
r.getString("name"),
r.getString("description"),
null,
UUID.fromString(r.getString("uuid")),
false);
}
catch (IOException e) {
log.error("Caught exception mapping SavedQuery", e);
}
return null;
}
}