Remove a DB query for resetting a number.

This commit is contained in:
Matt Corallo 2014-01-09 11:00:31 -10:00
parent 605e88d4bf
commit 591d26981e
2 changed files with 12 additions and 11 deletions

View File

@ -54,6 +54,13 @@ public abstract class Accounts {
public static final String FETCHES_MESSAGES = "fetches_messages";
public static final String SUPPORTS_SMS = "supports_sms";
private static final String NUMBER_DATA_QUERY = "SELECT number, COUNT(" +
"CASE WHEN (" + GCM_ID + " IS NOT NULL OR " + APN_ID + " IS NOT NULL OR " + FETCHES_MESSAGES + " = 1) " +
"THEN 1 ELSE 0 END) AS active, COUNT(" +
"CASE WHEN " + SUPPORTS_SMS + " = 1 THEN 1 ELSE 0 END) AS " + SUPPORTS_SMS + " " +
"FROM accounts";
@SqlUpdate("INSERT INTO accounts (" + NUMBER + ", " + DEVICE_ID + ", " + AUTH_TOKEN + ", " +
SALT + ", " + SIGNALING_KEY + ", " + FETCHES_MESSAGES + ", " +
GCM_ID + ", " + APN_ID + ", " + SUPPORTS_SMS + ") " +
@ -86,12 +93,6 @@ public abstract class Accounts {
@SqlQuery("SELECT COUNT(DISTINCT " + NUMBER + ") from accounts")
abstract long getNumberCount();
private static final String NUMBER_DATA_QUERY = "SELECT number, COUNT(" +
"CASE WHEN (" + GCM_ID + " IS NOT NULL OR " + APN_ID + " IS NOT NULL OR " + FETCHES_MESSAGES + " = 1) " +
"THEN 1 ELSE 0 END) AS active, COUNT(" +
"CASE WHEN " + SUPPORTS_SMS + " = 1 THEN 1 ELSE 0 END) AS " + SUPPORTS_SMS + " " +
"FROM accounts";
@Mapper(NumberDataMapper.class)
@SqlQuery(NUMBER_DATA_QUERY + " GROUP BY " + NUMBER + " OFFSET :offset LIMIT :limit")
abstract List<NumberData> getAllNumbers(@Bind("offset") int offset, @Bind("limit") int length);

View File

@ -62,7 +62,7 @@ public class AccountsManager {
memcachedClient.set(getKey(account.getNumber(), account.getDeviceId()), 0, account);
}
updateDirectory(account);
updateDirectory(account, false);
}
/** Creates a new Account for an existing NumberData (setting the deviceId) */
@ -74,7 +74,7 @@ public class AccountsManager {
memcachedClient.set(getKey(account.getNumber(), account.getDeviceId()), 0, account);
}
updateDirectory(account);
updateDirectory(account, true);
}
public void update(Account account) {
@ -83,7 +83,7 @@ public class AccountsManager {
}
accounts.update(account);
updateDirectory(account);
updateDirectory(account, true);
}
public Optional<Account> get(String number, long deviceId) {
@ -109,12 +109,12 @@ public class AccountsManager {
return accounts.getAllByNumber(number);
}
private void updateDirectory(Account account) {
private void updateDirectory(Account account, boolean possiblyOtherAccounts) {
boolean active = account.getFetchesMessages() ||
!Util.isEmpty(account.getApnRegistrationId()) || !Util.isEmpty(account.getGcmRegistrationId());
boolean supportsSms = account.getSupportsSms();
if (!active || !supportsSms) {
if (possiblyOtherAccounts && (!active || !supportsSms)) {
NumberData numberData = accounts.getNumberData(account.getNumber());
active = numberData.isActive();
supportsSms = numberData.isSupportsSms();