[StreamChatPersistence] Fix connectionEventEntity, MessageDao
Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
export 'list_converter.dart';
|
||||||
|
export 'map_converter.dart';
|
||||||
|
export 'message_sending_status_converter.dart';
|
||||||
@@ -16,12 +16,8 @@ class ConnectionEventDao extends DatabaseAccessor<MoorChatDatabase>
|
|||||||
|
|
||||||
/// Get the latest stored connection event
|
/// Get the latest stored connection event
|
||||||
Future<Event> get connectionEvent {
|
Future<Event> get connectionEvent {
|
||||||
return select(connectionEvents).join([
|
return select(connectionEvents).map((eventEntity) {
|
||||||
leftOuterJoin(users, connectionEvents.ownUserId.equalsExp(users.id)),
|
return eventEntity.toEvent();
|
||||||
]).map((rows) {
|
|
||||||
final event = rows.readTable(connectionEvents);
|
|
||||||
final user = rows.readTable(users);
|
|
||||||
return event.toEvent(user: user?.toUser());
|
|
||||||
}).getSingle();
|
}).getSingle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,7 +36,7 @@ class ConnectionEventDao extends DatabaseAccessor<MoorChatDatabase>
|
|||||||
lastEventAt: event.createdAt ?? connectionInfo?.lastEventAt,
|
lastEventAt: event.createdAt ?? connectionInfo?.lastEventAt,
|
||||||
totalUnreadCount:
|
totalUnreadCount:
|
||||||
event.totalUnreadCount ?? connectionInfo?.totalUnreadCount,
|
event.totalUnreadCount ?? connectionInfo?.totalUnreadCount,
|
||||||
ownUserId: event.me?.id ?? connectionInfo?.ownUserId,
|
ownUser: event.me?.toJson() ?? connectionInfo?.ownUser,
|
||||||
unreadChannels: event.unreadChannels ?? connectionInfo?.unreadChannels,
|
unreadChannels: event.unreadChannels ?? connectionInfo?.unreadChannels,
|
||||||
),
|
),
|
||||||
mode: InsertMode.insertOrReplace,
|
mode: InsertMode.insertOrReplace,
|
||||||
|
|||||||
@@ -97,9 +97,7 @@ class MessageDao extends DatabaseAccessor<MoorChatDatabase>
|
|||||||
///
|
///
|
||||||
Future<List<Message>> getMessagesByCid(
|
Future<List<Message>> getMessagesByCid(
|
||||||
String cid, {
|
String cid, {
|
||||||
int limit = 20,
|
PaginationParams messagePagination,
|
||||||
String messageLessThan,
|
|
||||||
String messageGreaterThan,
|
|
||||||
}) async {
|
}) async {
|
||||||
final msgList = await Future.wait(await (select(messages).join([
|
final msgList = await Future.wait(await (select(messages).join([
|
||||||
leftOuterJoin(users, messages.userId.equalsExp(users.id)),
|
leftOuterJoin(users, messages.userId.equalsExp(users.id)),
|
||||||
@@ -111,27 +109,30 @@ class MessageDao extends DatabaseAccessor<MoorChatDatabase>
|
|||||||
.map(_messageFromJoinRow)
|
.map(_messageFromJoinRow)
|
||||||
.get());
|
.get());
|
||||||
|
|
||||||
if (messageLessThan != null) {
|
if (messagePagination.lessThan != null) {
|
||||||
final lessThanIndex = msgList.indexWhere((m) => m.id == messageLessThan);
|
final lessThanIndex = msgList.indexWhere(
|
||||||
|
(m) => m.id == messagePagination.lessThan,
|
||||||
|
);
|
||||||
if (lessThanIndex != -1) {
|
if (lessThanIndex != -1) {
|
||||||
msgList.removeRange(lessThanIndex, msgList.length);
|
msgList.removeRange(lessThanIndex, msgList.length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (messageGreaterThan != null) {
|
if (messagePagination.greaterThanOrEqual != null) {
|
||||||
final greaterThanIndex =
|
final greaterThanIndex = msgList.indexWhere(
|
||||||
msgList.indexWhere((m) => m.id == messageGreaterThan);
|
(m) => m.id == messagePagination.greaterThanOrEqual,
|
||||||
|
);
|
||||||
if (greaterThanIndex != -1) {
|
if (greaterThanIndex != -1) {
|
||||||
msgList.removeRange(0, greaterThanIndex);
|
msgList.removeRange(0, greaterThanIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (limit != null) {
|
if (messagePagination.limit != null) {
|
||||||
return msgList.take(limit).toList();
|
return msgList.take(messagePagination.limit).toList();
|
||||||
}
|
}
|
||||||
return msgList;
|
return msgList;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
Future<int> updateMessages(String cid, List<Message> messageList) {
|
Future<void> updateMessages(String cid, List<Message> messageList) {
|
||||||
return batch((batch) {
|
return batch((batch) {
|
||||||
batch.insertAll(
|
batch.insertAll(
|
||||||
messages,
|
messages,
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import 'package:stream_chat/stream_chat.dart';
|
|||||||
|
|
||||||
import '../entity/entity.dart';
|
import '../entity/entity.dart';
|
||||||
import '../dao/dao.dart';
|
import '../dao/dao.dart';
|
||||||
|
import '../converter/converter.dart';
|
||||||
import 'shared/shared_db.dart';
|
import 'shared/shared_db.dart';
|
||||||
|
|
||||||
part 'moor_chat_database.g.dart';
|
part 'moor_chat_database.g.dart';
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import 'package:moor/moor.dart';
|
import 'package:moor/moor.dart';
|
||||||
|
import 'package:stream_chat_persistence/src/converter/map_converter.dart';
|
||||||
|
|
||||||
@DataClassName('ConnectionEventEntity')
|
@DataClassName('ConnectionEventEntity')
|
||||||
class ConnectionEvents extends Table {
|
class ConnectionEvents extends Table {
|
||||||
IntColumn get id => integer()();
|
IntColumn get id => integer()();
|
||||||
|
|
||||||
TextColumn get ownUserId => text().nullable()();
|
TextColumn get ownUser => text().nullable().map(MapConverter<Object>())();
|
||||||
|
|
||||||
IntColumn get totalUnreadCount => integer().nullable()();
|
IntColumn get totalUnreadCount => integer().nullable()();
|
||||||
|
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import 'package:stream_chat_persistence/src/db/moor_chat_database.dart';
|
|||||||
///
|
///
|
||||||
extension ConnectionEventX on ConnectionEventEntity {
|
extension ConnectionEventX on ConnectionEventEntity {
|
||||||
///
|
///
|
||||||
Event toEvent({User user}) {
|
Event toEvent() {
|
||||||
return Event(
|
return Event(
|
||||||
me: user,
|
me: ownUser != null ? OwnUser.fromJson(ownUser) : null,
|
||||||
totalUnreadCount: totalUnreadCount,
|
totalUnreadCount: totalUnreadCount,
|
||||||
unreadChannels: unreadChannels,
|
unreadChannels: unreadChannels,
|
||||||
);
|
);
|
||||||
|
|||||||
+7
-11
@@ -1,12 +1,12 @@
|
|||||||
import 'package:stream_chat/stream_chat.dart';
|
import 'package:stream_chat/stream_chat.dart';
|
||||||
|
|
||||||
import 'moor_chat_database.dart';
|
import 'db/moor_chat_database.dart';
|
||||||
import 'shared/shared_db.dart';
|
import 'db/shared/shared_db.dart';
|
||||||
|
|
||||||
///
|
///
|
||||||
class StreamChatDatabaseImpl implements StreamChatDatabase {
|
class StreamChatPersistenceImpl extends StreamChatPersistence {
|
||||||
///
|
///
|
||||||
StreamChatDatabaseImpl(
|
StreamChatPersistenceImpl(
|
||||||
this._userId, {
|
this._userId, {
|
||||||
Logger logger,
|
Logger logger,
|
||||||
}) : _logger = logger,
|
}) : _logger = logger,
|
||||||
@@ -75,7 +75,7 @@ class StreamChatDatabaseImpl implements StreamChatDatabase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> deleteChannelByCids(List<String> cids) {
|
Future<void> deleteChannels(List<String> cids) {
|
||||||
return _db.channelDao.deleteChannelByCids(cids);
|
return _db.channelDao.deleteChannelByCids(cids);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,15 +105,11 @@ class StreamChatDatabaseImpl implements StreamChatDatabase {
|
|||||||
@override
|
@override
|
||||||
Future<List<Message>> getMessagesByCid(
|
Future<List<Message>> getMessagesByCid(
|
||||||
String cid, {
|
String cid, {
|
||||||
int limit = 20,
|
PaginationParams messagePagination,
|
||||||
String messageLessThan,
|
|
||||||
String messageGreaterThan,
|
|
||||||
}) {
|
}) {
|
||||||
return _db.messageDao.getMessagesByCid(
|
return _db.messageDao.getMessagesByCid(
|
||||||
cid,
|
cid,
|
||||||
limit: limit,
|
messagePagination: messagePagination,
|
||||||
messageLessThan: messageLessThan,
|
|
||||||
messageGreaterThan: messageGreaterThan,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
library stream_chat_persistence;
|
library stream_chat_persistence;
|
||||||
|
|
||||||
export 'src/db/stream_chat_database_impl.dart';
|
export 'src/stream_chat_persistence_impl.dart';
|
||||||
|
|||||||
@@ -9,10 +9,13 @@ environment:
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
moor: ^3.4.0
|
moor: ^3.4.0
|
||||||
|
path: ^1.7.0
|
||||||
|
path_provider: ^1.6.27
|
||||||
|
sqlite3_flutter_libs: ^0.3.0
|
||||||
stream_chat:
|
stream_chat:
|
||||||
path: ../dart_client
|
path: ../dart_client
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
test: ^1.15.7
|
test: ^1.15.7
|
||||||
build_runner: ^1.10.13
|
build_runner: ^1.11.0
|
||||||
moor_generator: ^3.4.1
|
moor_generator: ^3.4.1
|
||||||
|
|||||||
Reference in New Issue
Block a user