package org.killbill.billing.entitlement.dao;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import org.killbill.billing.callcontext.InternalCallContext;
import org.killbill.billing.callcontext.InternalTenantContext;
import org.killbill.billing.entitlement.api.BlockingState;
import org.killbill.billing.entitlement.api.BlockingStateType;
import org.killbill.billing.util.audit.ChangeType;
import org.killbill.billing.util.entity.dao.Audited;
import org.killbill.billing.util.entity.dao.EntitySqlDao;
import org.killbill.commons.jdbi.binder.SmartBindBean;
import org.killbill.commons.jdbi.template.KillBillSqlDaoStringTemplate;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
@KillBillSqlDaoStringTemplate
public interface BlockingStateSqlDao extends EntitySqlDao<BlockingStateModelDao, BlockingState> {
@SqlQuery
public abstract BlockingStateModelDao getBlockingStateForService(@Bind("blockableId") UUID blockableId,
@Bind("service") String serviceName,
@Bind("effectiveDate") Date effectiveDate,
@SmartBindBean final InternalTenantContext context);
@SqlQuery
public abstract List<BlockingStateModelDao> getBlockingState(@Bind("blockableId") UUID blockableId,
@Bind("type") BlockingStateType blockingStateType,
@Bind("effectiveDate") Date effectiveDate,
@SmartBindBean final InternalTenantContext context);
@SqlQuery
public abstract List<BlockingStateModelDao> getBlockingAllUpToForAccount(@Bind("effectiveDate") Date effectiveDate,
@SmartBindBean final InternalTenantContext context);
@SqlQuery
public abstract List<BlockingStateModelDao> getBlockingHistoryForService(@Bind("blockableId") UUID blockableId,
@Bind("service") String serviceName,
@SmartBindBean final InternalTenantContext context);
@SqlUpdate
@Audited(ChangeType.UPDATE)
public void unactiveEvent(@Bind("id") String id,
@SmartBindBean final InternalCallContext context);
}