[StreamChatPersistence] Add initial implementation
Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
import 'package:moor/moor.dart';
|
||||
|
||||
@DataClassName('ChannelQueryEntity')
|
||||
class ChannelQueries extends Table {
|
||||
TextColumn get queryHash => text()();
|
||||
|
||||
TextColumn get channelCid => text()();
|
||||
|
||||
@override
|
||||
Set<Column> get primaryKey => {
|
||||
queryHash,
|
||||
channelCid,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import 'package:moor/moor.dart';
|
||||
import 'package:stream_chat_persistence/src/converter/map_converter.dart';
|
||||
|
||||
@DataClassName('ChannelEntity')
|
||||
class Channels extends Table {
|
||||
TextColumn get id => text()();
|
||||
|
||||
TextColumn get type => text()();
|
||||
|
||||
TextColumn get cid => text()();
|
||||
|
||||
TextColumn get config => text().map(MapConverter<Object>())();
|
||||
|
||||
BoolColumn get frozen => boolean().withDefault(Constant(false))();
|
||||
|
||||
DateTimeColumn get lastMessageAt => dateTime().nullable()();
|
||||
|
||||
DateTimeColumn get createdAt => dateTime().nullable()();
|
||||
|
||||
DateTimeColumn get updatedAt => dateTime().nullable()();
|
||||
|
||||
DateTimeColumn get deletedAt => dateTime().nullable()();
|
||||
|
||||
IntColumn get memberCount => integer().nullable()();
|
||||
|
||||
TextColumn get createdById => text().nullable()();
|
||||
|
||||
TextColumn get extraData => text().nullable().map(MapConverter<Object>())();
|
||||
|
||||
@override
|
||||
Set<Column> get primaryKey => {cid};
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import 'package:moor/moor.dart';
|
||||
|
||||
@DataClassName('ConnectionEventEntity')
|
||||
class ConnectionEvents extends Table {
|
||||
IntColumn get id => integer()();
|
||||
|
||||
TextColumn get ownUserId => text().nullable()();
|
||||
|
||||
IntColumn get totalUnreadCount => integer().nullable()();
|
||||
|
||||
IntColumn get unreadChannels => integer().nullable()();
|
||||
|
||||
DateTimeColumn get lastEventAt => dateTime().nullable()();
|
||||
|
||||
DateTimeColumn get lastSyncAt => dateTime().nullable()();
|
||||
|
||||
@override
|
||||
Set<Column> get primaryKey => {id};
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
export 'channels.dart';
|
||||
export 'messages.dart';
|
||||
export 'reactions.dart';
|
||||
export 'users.dart';
|
||||
export 'members.dart';
|
||||
export 'reads.dart';
|
||||
export 'channel_queries.dart';
|
||||
export 'connection_events.dart';
|
||||
@@ -0,0 +1,33 @@
|
||||
import 'package:moor/moor.dart';
|
||||
|
||||
@DataClassName('MemberEntity')
|
||||
class Members extends Table {
|
||||
TextColumn get userId => text()();
|
||||
|
||||
TextColumn get channelCid =>
|
||||
text().customConstraint('REFERENCES channels(cid) ON DELETE CASCADE')();
|
||||
|
||||
TextColumn get role => text().nullable()();
|
||||
|
||||
DateTimeColumn get inviteAcceptedAt => dateTime().nullable()();
|
||||
|
||||
DateTimeColumn get inviteRejectedAt => dateTime().nullable()();
|
||||
|
||||
BoolColumn get invited => boolean().nullable()();
|
||||
|
||||
BoolColumn get banned => boolean().nullable()();
|
||||
|
||||
BoolColumn get shadowBanned => boolean().nullable()();
|
||||
|
||||
BoolColumn get isModerator => boolean().nullable()();
|
||||
|
||||
DateTimeColumn get createdAt => dateTime()();
|
||||
|
||||
DateTimeColumn get updatedAt => dateTime().nullable()();
|
||||
|
||||
@override
|
||||
Set<Column> get primaryKey => {
|
||||
userId,
|
||||
channelCid,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
import 'package:moor/moor.dart';
|
||||
import 'package:stream_chat_persistence/src/converter/list_converter.dart';
|
||||
import 'package:stream_chat_persistence/src/converter/map_converter.dart';
|
||||
import 'package:stream_chat_persistence/src/converter/message_sending_status_converter.dart';
|
||||
|
||||
@DataClassName('MessageEntity')
|
||||
class Messages extends Table {
|
||||
TextColumn get id => text()();
|
||||
|
||||
TextColumn get messageText => text().nullable()();
|
||||
|
||||
TextColumn get attachments =>
|
||||
text().nullable().map(ListConverter<String>())();
|
||||
|
||||
IntColumn get status =>
|
||||
integer().nullable().map(MessageSendingStatusConverter())();
|
||||
|
||||
TextColumn get type => text().nullable()();
|
||||
|
||||
TextColumn get mentionedUsers =>
|
||||
text().nullable().map(ListConverter<String>())();
|
||||
|
||||
TextColumn get reactionCounts => text().nullable().map(MapConverter<int>())();
|
||||
|
||||
TextColumn get reactionScores => text().nullable().map(MapConverter<int>())();
|
||||
|
||||
TextColumn get parentId => text().nullable()();
|
||||
|
||||
TextColumn get quotedMessageId => text().nullable()();
|
||||
|
||||
IntColumn get replyCount => integer().nullable()();
|
||||
|
||||
BoolColumn get showInChannel => boolean().nullable()();
|
||||
|
||||
BoolColumn get shadowed => boolean().nullable()();
|
||||
|
||||
TextColumn get command => text().nullable()();
|
||||
|
||||
DateTimeColumn get createdAt => dateTime()();
|
||||
|
||||
DateTimeColumn get updatedAt => dateTime().nullable()();
|
||||
|
||||
DateTimeColumn get deletedAt => dateTime().nullable()();
|
||||
|
||||
TextColumn get userId => text().nullable()();
|
||||
|
||||
TextColumn get channelCid => text().nullable().customConstraint(
|
||||
'NULLABLE REFERENCES channels(cid) ON DELETE CASCADE')();
|
||||
|
||||
TextColumn get extraData => text().nullable().map(MapConverter<Object>())();
|
||||
|
||||
@override
|
||||
Set<Column> get primaryKey => {id};
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import 'package:moor/moor.dart';
|
||||
import 'package:stream_chat_persistence/src/converter/map_converter.dart';
|
||||
|
||||
@DataClassName('ReactionEntity')
|
||||
class Reactions extends Table {
|
||||
TextColumn get userId => text()();
|
||||
|
||||
TextColumn get messageId =>
|
||||
text().customConstraint('REFERENCES messages(id) ON DELETE CASCADE')();
|
||||
|
||||
TextColumn get type => text()();
|
||||
|
||||
DateTimeColumn get createdAt => dateTime()();
|
||||
|
||||
IntColumn get score => integer().nullable()();
|
||||
|
||||
TextColumn get extraData => text().nullable().map(MapConverter<Object>())();
|
||||
|
||||
@override
|
||||
Set<Column> get primaryKey => {
|
||||
messageId,
|
||||
type,
|
||||
userId,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import 'package:moor/moor.dart';
|
||||
|
||||
@DataClassName('ReadEntity')
|
||||
class Reads extends Table {
|
||||
DateTimeColumn get lastRead => dateTime()();
|
||||
|
||||
TextColumn get userId => text()();
|
||||
|
||||
TextColumn get channelCid =>
|
||||
text().customConstraint('REFERENCES channels(cid) ON DELETE CASCADE')();
|
||||
|
||||
IntColumn get unreadMessages => integer().nullable()();
|
||||
|
||||
@override
|
||||
Set<Column> get primaryKey => {
|
||||
userId,
|
||||
channelCid,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
import 'package:moor/moor.dart';
|
||||
import 'package:stream_chat_persistence/src/converter/map_converter.dart';
|
||||
|
||||
@DataClassName('UserEntity')
|
||||
class Users extends Table {
|
||||
TextColumn get id => text()();
|
||||
|
||||
TextColumn get role => text().nullable()();
|
||||
|
||||
DateTimeColumn get createdAt => dateTime().nullable()();
|
||||
|
||||
DateTimeColumn get updatedAt => dateTime().nullable()();
|
||||
|
||||
DateTimeColumn get lastActive => dateTime().nullable()();
|
||||
|
||||
BoolColumn get online => boolean().nullable()();
|
||||
|
||||
BoolColumn get banned => boolean().nullable()();
|
||||
|
||||
TextColumn get extraData => text().nullable().map(MapConverter<Object>())();
|
||||
|
||||
@override
|
||||
Set<Column> get primaryKey => {id};
|
||||
}
|
||||
Reference in New Issue
Block a user