package com.airbnb.airpal.core.store.queries;
import com.airbnb.airpal.api.queries.SavedQuery;
import com.airbnb.airpal.api.queries.UserSavedQuery;
import com.airbnb.airpal.core.AirpalUser;
import com.airbnb.airpal.presto.PartitionedTable;
import com.hubspot.rosetta.jdbi.RosettaBinder;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import java.util.List;
import java.util.UUID;
public abstract class QueryStoreDAO implements QueryStore
{
@SqlQuery("SELECT * FROM saved_queries WHERE user = :userName")
@Override
public abstract List<SavedQuery> getSavedQueries(@BindBean AirpalUser airpalUser);
@Override
public List<SavedQuery> getSavedQueries(AirpalUser airpalUser, List<PartitionedTable> tables)
{
return null;
}
@SqlUpdate(
"INSERT INTO saved_queries (query, user, description, uuid, name) " +
"VALUES (:queryWithPlaceholders, :user, :description, :uuid, :name)")
public abstract int _saveQuery(@RosettaBinder UserSavedQuery query);
@Override
public boolean saveQuery(UserSavedQuery query)
{
return _saveQuery(query) > 0;
}
@SqlUpdate("DELETE FROM saved_queries WHERE uuid = :queryUuid")
public abstract int _deleteSavedQuery(AirpalUser airpalUser, @Bind("queryUuid") UUID queryUUID);
@Override
public boolean deleteSavedQuery(AirpalUser airpalUser, UUID queryUUID)
{
return _deleteSavedQuery(airpalUser, queryUUID) > 0;
}
@Override
@SqlQuery("SELECT * FROM saved_queries WHERE uuid = :queryUuid")
public abstract SavedQuery getSavedQuery(@Bind("queryUuid") UUID queryUUID);
}