@@ -62,8 +62,10 @@ class MessageDao extends DatabaseAccessor<MoorChatDatabase>
|
||||
Future<Message?> getMessageById(String id) async =>
|
||||
await (select(messages).join([
|
||||
leftOuterJoin(_users, messages.userId.equalsExp(_users.id)),
|
||||
leftOuterJoin(_pinnedByUsers,
|
||||
messages.pinnedByUserId.equalsExp(_pinnedByUsers.id)),
|
||||
leftOuterJoin(
|
||||
_pinnedByUsers,
|
||||
messages.pinnedByUserId.equalsExp(_pinnedByUsers.id),
|
||||
),
|
||||
])
|
||||
..where(messages.id.equals(id)))
|
||||
.map(_messageFromJoinRow)
|
||||
@@ -74,8 +76,10 @@ class MessageDao extends DatabaseAccessor<MoorChatDatabase>
|
||||
Future<List<Message>> getThreadMessages(String cid) async =>
|
||||
Future.wait(await (select(messages).join([
|
||||
leftOuterJoin(_users, messages.userId.equalsExp(_users.id)),
|
||||
leftOuterJoin(_pinnedByUsers,
|
||||
messages.pinnedByUserId.equalsExp(_pinnedByUsers.id)),
|
||||
leftOuterJoin(
|
||||
_pinnedByUsers,
|
||||
messages.pinnedByUserId.equalsExp(_pinnedByUsers.id),
|
||||
),
|
||||
])
|
||||
..where(messages.channelCid.equals(cid))
|
||||
..where(messages.parentId.isNotNull())
|
||||
@@ -92,7 +96,9 @@ class MessageDao extends DatabaseAccessor<MoorChatDatabase>
|
||||
final msgList = await Future.wait(await (select(messages).join([
|
||||
leftOuterJoin(_users, messages.userId.equalsExp(_users.id)),
|
||||
leftOuterJoin(
|
||||
_pinnedByUsers, messages.pinnedByUserId.equalsExp(_pinnedByUsers.id)),
|
||||
_pinnedByUsers,
|
||||
messages.pinnedByUserId.equalsExp(_pinnedByUsers.id),
|
||||
),
|
||||
])
|
||||
..where(messages.parentId.isNotNull())
|
||||
..where(messages.parentId.equals(parentId))
|
||||
@@ -134,7 +140,9 @@ class MessageDao extends DatabaseAccessor<MoorChatDatabase>
|
||||
final msgList = await Future.wait(await (select(messages).join([
|
||||
leftOuterJoin(_users, messages.userId.equalsExp(_users.id)),
|
||||
leftOuterJoin(
|
||||
_pinnedByUsers, messages.pinnedByUserId.equalsExp(_pinnedByUsers.id)),
|
||||
_pinnedByUsers,
|
||||
messages.pinnedByUserId.equalsExp(_pinnedByUsers.id),
|
||||
),
|
||||
])
|
||||
..where(messages.channelCid.equals(cid))
|
||||
..where(
|
||||
|
||||
@@ -64,8 +64,10 @@ class PinnedMessageDao extends DatabaseAccessor<MoorChatDatabase>
|
||||
Future<Message?> getMessageById(String id) async =>
|
||||
await (select(pinnedMessages).join([
|
||||
leftOuterJoin(_users, pinnedMessages.userId.equalsExp(_users.id)),
|
||||
leftOuterJoin(_pinnedByUsers,
|
||||
pinnedMessages.pinnedByUserId.equalsExp(_pinnedByUsers.id)),
|
||||
leftOuterJoin(
|
||||
_pinnedByUsers,
|
||||
pinnedMessages.pinnedByUserId.equalsExp(_pinnedByUsers.id),
|
||||
),
|
||||
])
|
||||
..where(pinnedMessages.id.equals(id)))
|
||||
.map(_messageFromJoinRow)
|
||||
@@ -76,8 +78,10 @@ class PinnedMessageDao extends DatabaseAccessor<MoorChatDatabase>
|
||||
Future<List<Message>> getThreadMessages(String cid) async =>
|
||||
Future.wait(await (select(pinnedMessages).join([
|
||||
leftOuterJoin(_users, pinnedMessages.userId.equalsExp(_users.id)),
|
||||
leftOuterJoin(_pinnedByUsers,
|
||||
pinnedMessages.pinnedByUserId.equalsExp(_pinnedByUsers.id)),
|
||||
leftOuterJoin(
|
||||
_pinnedByUsers,
|
||||
pinnedMessages.pinnedByUserId.equalsExp(_pinnedByUsers.id),
|
||||
),
|
||||
])
|
||||
..where(pinnedMessages.channelCid.equals(cid))
|
||||
..where(pinnedMessages.parentId.isNotNull())
|
||||
@@ -93,8 +97,10 @@ class PinnedMessageDao extends DatabaseAccessor<MoorChatDatabase>
|
||||
}) async {
|
||||
final msgList = await Future.wait(await (select(pinnedMessages).join([
|
||||
leftOuterJoin(_users, pinnedMessages.userId.equalsExp(_users.id)),
|
||||
leftOuterJoin(_pinnedByUsers,
|
||||
pinnedMessages.pinnedByUserId.equalsExp(_pinnedByUsers.id)),
|
||||
leftOuterJoin(
|
||||
_pinnedByUsers,
|
||||
pinnedMessages.pinnedByUserId.equalsExp(_pinnedByUsers.id),
|
||||
),
|
||||
])
|
||||
..where(pinnedMessages.parentId.isNotNull())
|
||||
..where(pinnedMessages.parentId.equals(parentId))
|
||||
@@ -134,8 +140,10 @@ class PinnedMessageDao extends DatabaseAccessor<MoorChatDatabase>
|
||||
}) async {
|
||||
final msgList = await Future.wait(await (select(pinnedMessages).join([
|
||||
leftOuterJoin(_users, pinnedMessages.userId.equalsExp(_users.id)),
|
||||
leftOuterJoin(_pinnedByUsers,
|
||||
pinnedMessages.pinnedByUserId.equalsExp(_pinnedByUsers.id)),
|
||||
leftOuterJoin(
|
||||
_pinnedByUsers,
|
||||
pinnedMessages.pinnedByUserId.equalsExp(_pinnedByUsers.id),
|
||||
),
|
||||
])
|
||||
..where(pinnedMessages.channelCid.equals(cid))
|
||||
..where(pinnedMessages.parentId.isNull() |
|
||||
|
||||
@@ -10,29 +10,30 @@ export 'shared/shared_db.dart';
|
||||
part 'moor_chat_database.g.dart';
|
||||
|
||||
/// A chat database implemented using moor
|
||||
@UseMoor(tables: [
|
||||
Channels,
|
||||
Messages,
|
||||
PinnedMessages,
|
||||
PinnedMessageReactions,
|
||||
Reactions,
|
||||
Users,
|
||||
Members,
|
||||
Reads,
|
||||
ChannelQueries,
|
||||
ConnectionEvents,
|
||||
], daos: [
|
||||
UserDao,
|
||||
ChannelDao,
|
||||
MessageDao,
|
||||
PinnedMessageDao,
|
||||
PinnedMessageReactionDao,
|
||||
MemberDao,
|
||||
ReactionDao,
|
||||
ReadDao,
|
||||
ChannelQueryDao,
|
||||
ConnectionEventDao,
|
||||
])
|
||||
@UseMoor(
|
||||
tables: [
|
||||
Channels,
|
||||
Messages,
|
||||
PinnedMessages,
|
||||
PinnedMessageReactions,Reactions,
|
||||
Users,
|
||||
Members,
|
||||
Reads,
|
||||
ChannelQueries,
|
||||
ConnectionEvents,
|
||||
],
|
||||
daos: [
|
||||
UserDao,
|
||||
ChannelDao,
|
||||
MessageDao,
|
||||
PinnedMessageDao,PinnedMessageReactionDao,
|
||||
MemberDao,
|
||||
ReactionDao,
|
||||
ReadDao,
|
||||
ChannelQueryDao,
|
||||
ConnectionEventDao,
|
||||
],
|
||||
)
|
||||
class MoorChatDatabase extends _$MoorChatDatabase {
|
||||
/// Creates a new moor chat database instance
|
||||
MoorChatDatabase(
|
||||
|
||||
@@ -229,7 +229,7 @@ class StreamChatPersistenceClient extends ChatPersistenceClient {
|
||||
final parentId = message.parentId!;
|
||||
messageByParentIdDictionary[parentId] = [
|
||||
...messageByParentIdDictionary[parentId] ?? [],
|
||||
message
|
||||
message,
|
||||
];
|
||||
}
|
||||
return messageByParentIdDictionary;
|
||||
|
||||
@@ -23,7 +23,7 @@ dependencies:
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.0.1
|
||||
dart_code_metrics: ^4.2.0-dev.1
|
||||
dart_code_metrics: ^4.2.0-dev.5
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
mocktail: ^0.1.1
|
||||
|
||||
@@ -82,9 +82,9 @@ void main() {
|
||||
cid: cids[index],
|
||||
createdBy: users[index],
|
||||
config: ChannelConfig(),
|
||||
extraData: {'test_custom_field': 3 + index},
|
||||
extraData: {'test_custom_field': index + 3},
|
||||
createdAt: now,
|
||||
memberCount: 3 + index,
|
||||
memberCount: index + 3,
|
||||
lastMessageAt: now.add(Duration(hours: index)),
|
||||
),
|
||||
).reversed.toList(growable: false);
|
||||
|
||||
Reference in New Issue
Block a user