Remove a DB query for resetting a number.
This commit is contained in:
parent
605e88d4bf
commit
591d26981e
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue