database.executeFast("CREATE TABLE users(uid INTEGER PRIMARY KEY, name TEXT, status INTEGER, data BLOB)").stepThis().dispose();
database.executeFast("CREATE TABLE users(uid INTEGER PRIMARY KEY, name TEXT, status INTEGER, data BLOB)").stepThis().dispose();
database.executeFast("CREATE TABLE messages(mid INTEGER PRIMARY KEY, uid INTEGER, read_state INTEGER, send_state INTEGER, date INTEGER, data BLOB, out INTEGER, ttl INTEGER, media INTEGER)").stepThis().dispose();
database.executeFast("CREATE TABLE messages(mid INTEGER PRIMARY KEY, uid INTEGER, read_state INTEGER, send_state INTEGER, date INTEGER, data BLOB, out INTEGER, ttl INTEGER, media INTEGER)").stepThis().dispose();
database.executeFast("CREATE TABLE chats(uid INTEGER PRIMARY KEY, name TEXT, data BLOB)").stepThis().dispose();
database.executeFast("CREATE TABLE chats(uid INTEGER PRIMARY KEY, name TEXT, data BLOB)").stepThis().dispose();
database.executeFast("CREATE TABLE enc_chats(uid INTEGER PRIMARY KEY, user INTEGER, name TEXT, data BLOB, g BLOB, authkey BLOB, ttl INTEGER)").stepThis().dispose();
database.executeFast("CREATE TABLE enc_chats(uid INTEGER PRIMARY KEY, user INTEGER, name TEXT, data BLOB, g BLOB, authkey BLOB, ttl INTEGER, layer INTEGER)").stepThis().dispose();
@@ -136,7 +136,7 @@ public class MessagesStorage {
...
@@ -136,7 +136,7 @@ public class MessagesStorage {
database.executeFast("CREATE INDEX IF NOT EXISTS mid_out_idx_messages ON messages(mid, out);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS mid_out_idx_messages ON messages(mid, out);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS task_idx_messages ON messages(uid, out, read_state, ttl, date, send_state);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS task_idx_messages ON messages(uid, out, read_state, ttl, date, send_state);").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS send_state_idx_messages ON messages(mid, send_state, date) WHERE mid < 0 AND send_state = 1;").stepThis().dispose();
database.executeFast("CREATE INDEX IF NOT EXISTS send_state_idx_messages ON messages(mid, send_state, date) WHERE mid < 0 AND send_state = 1;").stepThis().dispose();
@@ -504,6 +504,7 @@ public class MessagesStorage {
...
@@ -504,6 +504,7 @@ public class MessagesStorage {
chat.a_or_b=cursor.byteArrayValue(2);
chat.a_or_b=cursor.byteArrayValue(2);
chat.auth_key=cursor.byteArrayValue(3);
chat.auth_key=cursor.byteArrayValue(3);
chat.ttl=cursor.intValue(4);
chat.ttl=cursor.intValue(4);
chat.layer=cursor.intValue(5);
}
}
buffersStorage.reuseFreeBuffer(data);
buffersStorage.reuseFreeBuffer(data);
}
}
...
@@ -1231,7 +1232,7 @@ public class MessagesStorage {
...
@@ -1231,7 +1232,7 @@ public class MessagesStorage {
cursor.dispose();
cursor.dispose();
if(needEncrypted){
if(needEncrypted){
cursor=database.queryFinalized("SELECT q.data, q.name, q.user, q.g, q.authkey, q.ttl, u.data, u.status FROM enc_chats as q INNER JOIN dialogs as d ON (q.uid << 32) = d.did INNER JOIN users as u ON q.user = u.uid");
cursor=database.queryFinalized("SELECT q.data, u.name, q.user, q.g, q.authkey, q.ttl, u.data, u.status, q.layer FROM enc_chats as q INNER JOIN dialogs as d ON (q.uid << 32) = d.did INNER JOIN users as u ON q.user = u.uid");
while(cursor.next()){
while(cursor.next()){
Stringname=cursor.stringValue(1);
Stringname=cursor.stringValue(1);
if(name.startsWith(q)||name.contains(" "+q)){
if(name.startsWith(q)||name.contains(" "+q)){
...
@@ -1243,6 +1244,7 @@ public class MessagesStorage {
...
@@ -1243,6 +1244,7 @@ public class MessagesStorage {