package org.fluxtream.core.domain; import com.google.gson.annotations.Expose; import org.hibernate.annotations.Index; import org.hibernate.annotations.Type; import javax.persistence.Entity; import javax.persistence.Lob; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; @Entity(name="ApiUpdates") @NamedQueries ( { @NamedQuery(name = "apiUpdates.count.all.since", query = "SELECT COUNT(updt) FROM ApiUpdates updt " + "WHERE updt.api=? AND updt.ts>?"), @NamedQuery(name = "apiUpdates.count.byGuest.since", query = "SELECT COUNT(updt) FROM ApiUpdates updt WHERE updt.guestId=? AND updt.api=? AND updt.ts>?"), @NamedQuery(name = "apiUpdates.count.all", query = "SELECT COUNT(updt) FROM ApiUpdates updt WHERE updt.api=?"), @NamedQuery(name = "apiUpdates.count.byGuest", query = "SELECT COUNT(updt) FROM ApiUpdates updt WHERE updt.guestId=? AND updt.api=?"), @NamedQuery(name = "apiUpdates.delete.all", query = "DELETE FROM ApiUpdates updt WHERE updt.guestId=?"), @NamedQuery(name = "apiUpdates.delete.byApiKey", query = "DELETE FROM ApiUpdates updt WHERE updt.apiKeyId=?"), @NamedQuery( name="apiUpdates.last.paged", query="SELECT updt FROM ApiUpdates updt WHERE updt.apiKeyId=? ORDER BY updt.ts DESC"), @NamedQuery( name="apiUpdates.last", query="SELECT updt FROM ApiUpdates updt WHERE updt.apiKeyId=? ORDER BY updt.ts DESC LIMIT 10"), @NamedQuery( name="apiUpdates.last.successful.byApi", query="SELECT updt FROM ApiUpdates updt WHERE updt.apiKeyId=? and updt.success=true ORDER BY updt.ts DESC"), @NamedQuery( name="apiUpdates.last.successful.byApiAndObjectTypes", query="SELECT updt FROM ApiUpdates updt WHERE updt.apiKeyId=? and updt.objectTypes=? and updt.success=true ORDER BY updt.ts DESC")}) public class ApiUpdate extends AbstractEntity { /** * Legacy (we need it for the existing user data) */ @Index(name="guestId") public long guestId; @Expose @Index(name="ts") public long ts; @Expose @Index(name="elapsed") public long elapsed; @Index(name="apiKeyId") public Long apiKeyId; @Index(name="httpResponseCode") @Expose public Integer httpResponseCode; @Expose public String reason; /** * Legacy (we need it for the existing user data) */ @Index(name="api") public int api; @Expose @Index(name="objectTypes") public int objectTypes; @Expose @Index(name="success") @Type(type="yes_no") public boolean success; @Lob @Expose public String query; }