所有数据库表,提供相应的provider、桥接等方法
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import 'package:im_app/domain/entities/api_retry.dart';
|
||||
|
||||
/// API 重试仓储接口
|
||||
abstract class ApiRetryRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Stream<List<ApiRetry>> watchAll();
|
||||
|
||||
Stream<List<ApiRetry>> watchPending();
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<List<ApiRetry>> getAll();
|
||||
|
||||
Future<ApiRetry?> getById(int id);
|
||||
|
||||
/// 读取未同步的重试任务
|
||||
Future<List<ApiRetry>> getPending();
|
||||
|
||||
/// 读取未过期的重试任务
|
||||
Future<List<ApiRetry>> getActive();
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 插入重试任务(autoIncrement id,无需提供)
|
||||
Future<void> insert(ApiRetry apiRetry);
|
||||
|
||||
Future<void> insertOrReplace(ApiRetry apiRetry);
|
||||
|
||||
Future<void> update(ApiRetry apiRetry);
|
||||
|
||||
/// 标记为已同步
|
||||
Future<void> markSynced(int id);
|
||||
|
||||
/// 标记为已过期
|
||||
Future<void> markExpired(int id);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<void> delete(int id);
|
||||
|
||||
Future<void> deleteByUid(int uid);
|
||||
|
||||
/// 清除已同步的重试任务
|
||||
Future<void> deleteSynced();
|
||||
|
||||
Future<void> clear();
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
import 'package:im_app/domain/entities/chat_category.dart';
|
||||
|
||||
/// 聊天分类仓储接口
|
||||
///
|
||||
/// ## 职责
|
||||
/// - StorageSdkApi ↔ Domain ChatCategory 映射
|
||||
/// - CRUD 操作(通过 StorageSdkApi,不直接接触 DB)
|
||||
/// - 所有公开接口只接受 Domain 实体,Companion 转换完全内聚在 Impl
|
||||
///
|
||||
/// ## 数据流
|
||||
/// ```
|
||||
/// 写入:Domain ChatCategory → _toCompanion() → StorageSdkApi → DB
|
||||
/// 读取:DB row (DriftChatCategory) → _toEntity() → Domain ChatCategory
|
||||
/// 监听:DB 变化 → stream → Domain ChatCategory → UI
|
||||
/// ```
|
||||
abstract class ChatCategoryRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 监听所有聊天分类,DB 变化自动反映
|
||||
Stream<List<ChatCategory>> watchAllChatCategories();
|
||||
|
||||
/// 监听指定聊天分类
|
||||
Stream<ChatCategory?> watchChatCategory(int id);
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 读取所有聊天分类
|
||||
Future<List<ChatCategory>> getChatCategories();
|
||||
|
||||
/// 读取指定聊天分类,不存在返回 null
|
||||
Future<ChatCategory?> getChatCategory(int id);
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 插入或替换聊天分类
|
||||
Future<void> insertOrReplaceChatCategory(ChatCategory chatCategory);
|
||||
|
||||
/// 批量插入或替换聊天分类
|
||||
Future<void> insertOrReplaceChatCategories(List<ChatCategory> chatCategories);
|
||||
|
||||
/// 更新聊天分类
|
||||
Future<void> updateChatCategory(ChatCategory chatCategory);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 删除指定聊天分类
|
||||
Future<void> deleteChatCategory(int id);
|
||||
|
||||
/// 清空所有聊天分类
|
||||
Future<void> clearChatCategories();
|
||||
}
|
||||
60
apps/im_app/lib/domain/repositories/chat_repository.dart
Normal file
60
apps/im_app/lib/domain/repositories/chat_repository.dart
Normal file
@@ -0,0 +1,60 @@
|
||||
import 'package:im_app/domain/entities/chat.dart';
|
||||
|
||||
/// 聊天仓储接口
|
||||
///
|
||||
/// ## 职责
|
||||
/// - StorageSdkApi ↔ Domain Chat 映射
|
||||
/// - CRUD 操作(通过 StorageSdkApi,不直接接触 DB)
|
||||
/// - 所有公开接口只接受 Domain 实体,Companion 转换完全内聚在 Impl
|
||||
///
|
||||
/// ## 数据流
|
||||
/// ```
|
||||
/// 写入:Domain Chat → _toCompanion() → StorageSdkApi → DB
|
||||
/// 读取:DB row (DriftChat) → _toEntity() → Domain Chat
|
||||
/// 监听:DB 变化 → stream → Domain Chat → UI
|
||||
/// ```
|
||||
abstract class ChatRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 监听所有聊天,DB 变化自动反映
|
||||
Stream<List<Chat>> watchAllChats();
|
||||
|
||||
/// 监听指定聊天
|
||||
Stream<Chat?> watchChat(int id);
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 读取所有聊天
|
||||
Future<List<Chat>> getChats();
|
||||
|
||||
/// 读取指定聊天,不存在返回 null
|
||||
Future<Chat?> getChat(int id);
|
||||
|
||||
/// 分页读取聊天
|
||||
Future<List<Chat>> getChatsPage({required int offset, required int limit});
|
||||
|
||||
/// 统计聊天总数
|
||||
Future<int> countChats();
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 插入或替换聊天
|
||||
Future<void> insertOrReplaceChat(Chat chat);
|
||||
|
||||
/// 批量插入或替换聊天
|
||||
Future<void> insertOrReplaceChats(List<Chat> chats);
|
||||
|
||||
/// 更新聊天
|
||||
Future<void> updateChat(Chat chat);
|
||||
|
||||
/// 批量更新聊天
|
||||
Future<void> updateChatsBatch(List<Chat> chats);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 删除指定聊天
|
||||
Future<void> deleteChat(int id);
|
||||
|
||||
/// 清空所有聊天
|
||||
Future<void> clearChats();
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
import 'package:im_app/domain/entities/favorite_detail.dart';
|
||||
|
||||
/// 收藏详情仓储接口
|
||||
///
|
||||
/// ## 职责
|
||||
/// - StorageSdkApi ↔ Domain FavoriteDetail 映射
|
||||
/// - CRUD 操作(通过 StorageSdkApi,不直接接触 DB)
|
||||
/// - 所有公开接口只接受 Domain 实体,Companion 转换完全内聚在 Impl
|
||||
///
|
||||
/// ## 数据流
|
||||
/// ```
|
||||
/// 写入:Domain FavoriteDetail → _toCompanion() → StorageSdkApi → DB
|
||||
/// 读取:DB row (DriftFavoriteDetail) → _toEntity() → Domain FavoriteDetail
|
||||
/// 监听:DB 变化 → stream → Domain FavoriteDetail → UI
|
||||
/// ```
|
||||
abstract class FavoriteDetailRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 监听所有收藏详情,DB 变化自动反映
|
||||
Stream<List<FavoriteDetail>> watchAll();
|
||||
|
||||
/// 监听指定 relatedId 的收藏详情
|
||||
Stream<List<FavoriteDetail>> watchByRelatedId(String relatedId);
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 读取所有收藏详情
|
||||
Future<List<FavoriteDetail>> getAll();
|
||||
|
||||
/// 读取指定 id,不存在返回 null
|
||||
Future<FavoriteDetail?> getById(int id);
|
||||
|
||||
/// 读取指定 relatedId 的所有收藏详情
|
||||
Future<List<FavoriteDetail>> getByRelatedId(String relatedId);
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 插入收藏详情(autoIncrement id,无需提供)
|
||||
Future<void> insert(FavoriteDetail favoriteDetail);
|
||||
|
||||
/// 批量插入收藏详情
|
||||
Future<void> insertAll(List<FavoriteDetail> favoriteDetails);
|
||||
|
||||
/// 插入或替换收藏详情
|
||||
Future<void> insertOrReplace(FavoriteDetail favoriteDetail);
|
||||
|
||||
/// 更新收藏详情
|
||||
Future<void> update(FavoriteDetail favoriteDetail);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 删除指定 id
|
||||
Future<void> delete(int id);
|
||||
|
||||
/// 删除指定 relatedId 的所有收藏详情
|
||||
Future<void> deleteByRelatedId(String relatedId);
|
||||
|
||||
/// 清空所有收藏详情
|
||||
Future<void> clear();
|
||||
}
|
||||
63
apps/im_app/lib/domain/repositories/favorite_repository.dart
Normal file
63
apps/im_app/lib/domain/repositories/favorite_repository.dart
Normal file
@@ -0,0 +1,63 @@
|
||||
import 'package:im_app/domain/entities/favorite.dart';
|
||||
|
||||
/// 收藏仓储接口
|
||||
///
|
||||
/// ## 职责
|
||||
/// - StorageSdkApi ↔ Domain Favorite 映射
|
||||
/// - CRUD 操作(通过 StorageSdkApi,不直接接触 DB)
|
||||
/// - 所有公开接口只接受 Domain 实体,Companion 转换完全内聚在 Impl
|
||||
///
|
||||
/// ## 数据流
|
||||
/// ```
|
||||
/// 写入:Domain Favorite → _toCompanion() → StorageSdkApi → DB
|
||||
/// 读取:DB row (DriftFavorite) → _toEntity() → Domain Favorite
|
||||
/// 监听:DB 变化 → stream → Domain Favorite → UI
|
||||
/// ```
|
||||
abstract class FavoriteRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 监听所有收藏,DB 变化自动反映
|
||||
Stream<List<Favorite>> watchAll();
|
||||
|
||||
/// 监听指定收藏
|
||||
Stream<Favorite?> watchById(int id);
|
||||
|
||||
/// 监听指定 parentId 的收藏
|
||||
Stream<List<Favorite>> watchByParentId(String parentId);
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 读取所有收藏
|
||||
Future<List<Favorite>> getAll();
|
||||
|
||||
/// 读取指定收藏,不存在返回 null
|
||||
Future<Favorite?> getById(int id);
|
||||
|
||||
/// 读取指定 parentId 的所有收藏
|
||||
Future<List<Favorite>> getByParentId(String parentId);
|
||||
|
||||
/// 读取未上传的收藏
|
||||
Future<List<Favorite>> getUnuploaded();
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 插入或替换收藏
|
||||
Future<void> insertOrReplace(Favorite favorite);
|
||||
|
||||
/// 批量插入或替换收藏
|
||||
Future<void> insertOrReplaceAll(List<Favorite> favorites);
|
||||
|
||||
/// 更新收藏
|
||||
Future<void> update(Favorite favorite);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 删除指定收藏
|
||||
Future<void> delete(int id);
|
||||
|
||||
/// 删除指定 parentId 的所有收藏
|
||||
Future<void> deleteByParentId(String parentId);
|
||||
|
||||
/// 清空所有收藏
|
||||
Future<void> clear();
|
||||
}
|
||||
57
apps/im_app/lib/domain/repositories/group_repository.dart
Normal file
57
apps/im_app/lib/domain/repositories/group_repository.dart
Normal file
@@ -0,0 +1,57 @@
|
||||
import 'package:im_app/domain/entities/group.dart';
|
||||
|
||||
/// 群组仓储接口
|
||||
///
|
||||
/// ## 职责
|
||||
/// - StorageSdkApi ↔ Domain Group 映射
|
||||
/// - CRUD 操作(通过 StorageSdkApi,不直接接触 DB)
|
||||
/// - 所有公开接口只接受 Domain 实体,Companion 转换完全内聚在 Impl
|
||||
///
|
||||
/// ## 数据流
|
||||
/// ```
|
||||
/// 写入:Domain Group → _toCompanion() → StorageSdkApi → DB
|
||||
/// 读取:DB row (DriftGroup) → _toEntity() → Domain Group
|
||||
/// 监听:DB 变化 → stream → Domain Group → UI
|
||||
/// ```
|
||||
abstract class GroupRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 监听所有群组,DB 变化自动反映
|
||||
Stream<List<Group>> watchAll();
|
||||
|
||||
/// 监听指定群组
|
||||
Stream<Group?> watchById(int id);
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 读取所有群组
|
||||
Future<List<Group>> getAll();
|
||||
|
||||
/// 读取指定群组,不存在返回 null
|
||||
Future<Group?> getById(int id);
|
||||
|
||||
/// 读取指定 workspaceId 的所有群组
|
||||
Future<List<Group>> getByWorkspace(int workspaceId);
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 插入或替换群组
|
||||
Future<void> insertOrReplace(Group group);
|
||||
|
||||
/// 批量插入或替换群组
|
||||
Future<void> insertOrReplaceAll(List<Group> groups);
|
||||
|
||||
/// 更新群组
|
||||
Future<void> update(Group group);
|
||||
|
||||
/// 批量更新群组
|
||||
Future<void> updateBatch(List<Group> groups);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 删除指定群组
|
||||
Future<void> delete(int id);
|
||||
|
||||
/// 清空所有群组
|
||||
Future<void> clear();
|
||||
}
|
||||
67
apps/im_app/lib/domain/repositories/message_repository.dart
Normal file
67
apps/im_app/lib/domain/repositories/message_repository.dart
Normal file
@@ -0,0 +1,67 @@
|
||||
import 'package:im_app/domain/entities/message.dart';
|
||||
|
||||
/// 消息仓储接口
|
||||
///
|
||||
/// ## 职责
|
||||
/// - StorageSdkApi ↔ Domain Message 映射
|
||||
/// - CRUD 操作(通过 StorageSdkApi,不直接接触 DB)
|
||||
/// - 所有公开接口只接受 Domain 实体,Companion 转换完全内聚在 Impl
|
||||
///
|
||||
/// ## 数据流
|
||||
/// ```
|
||||
/// 写入:Domain Message → _toCompanion() → StorageSdkApi → DB
|
||||
/// 读取:DB row (DriftMessage) → _toEntity() → Domain Message
|
||||
/// 监听:DB 变化 → stream → Domain Message → UI
|
||||
/// ```
|
||||
abstract class MessageRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 监听指定 chatId 的所有消息,按 chatIdx 升序
|
||||
Stream<List<Message>> watchByChatId(int chatId);
|
||||
|
||||
/// 监听指定消息
|
||||
Stream<Message?> watchById(int id);
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 读取指定 chatId 的所有消息,按 chatIdx 升序
|
||||
Future<List<Message>> getByChatId(int chatId);
|
||||
|
||||
/// 分页读取指定 chatId 的消息
|
||||
Future<List<Message>> getByChatIdPage({
|
||||
required int chatId,
|
||||
required int offset,
|
||||
required int limit,
|
||||
});
|
||||
|
||||
/// 读取指定消息,不存在返回 null
|
||||
Future<Message?> getById(int id);
|
||||
|
||||
/// 读取指定 messageId,不存在返回 null
|
||||
Future<Message?> getByMessageId(int messageId);
|
||||
|
||||
/// 统计指定 chatId 的消息数量
|
||||
Future<int> countByChatId(int chatId);
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 插入或替换消息
|
||||
Future<void> insertOrReplace(Message message);
|
||||
|
||||
/// 批量插入或替换消息
|
||||
Future<void> insertOrReplaceAll(List<Message> messages);
|
||||
|
||||
/// 更新消息
|
||||
Future<void> update(Message message);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 删除指定消息
|
||||
Future<void> delete(int id);
|
||||
|
||||
/// 删除指定 chatId 的所有消息
|
||||
Future<void> deleteByChatId(int chatId);
|
||||
|
||||
/// 清空所有消息
|
||||
Future<void> clear();
|
||||
}
|
||||
47
apps/im_app/lib/domain/repositories/mini_app_repository.dart
Normal file
47
apps/im_app/lib/domain/repositories/mini_app_repository.dart
Normal file
@@ -0,0 +1,47 @@
|
||||
import 'package:im_app/domain/entities/mini_app.dart';
|
||||
|
||||
/// 小程序仓储接口(discover / explore / favorite / recent 共用)
|
||||
///
|
||||
/// ## 职责
|
||||
/// - StorageSdkApi ↔ Domain MiniApp 映射
|
||||
/// - CRUD 操作(通过 StorageSdkApi,不直接接触 DB)
|
||||
/// - 所有公开接口只接受 Domain 实体,Companion 转换完全内聚在 Impl
|
||||
abstract class MiniAppRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 监听所有小程序,DB 变化自动反映
|
||||
Stream<List<MiniApp>> watchAll();
|
||||
|
||||
/// 监听指定小程序
|
||||
Stream<MiniApp?> watch(String id);
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 读取所有小程序
|
||||
Future<List<MiniApp>> getAll();
|
||||
|
||||
/// 读取指定小程序,不存在返回 null
|
||||
Future<MiniApp?> get(String id);
|
||||
|
||||
/// 检查是否存在
|
||||
Future<bool> isExist(String id);
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 插入或替换小程序
|
||||
Future<void> insertOrReplace(MiniApp miniApp);
|
||||
|
||||
/// 批量插入或替换小程序
|
||||
Future<void> insertOrReplaceAll(List<MiniApp> miniApps);
|
||||
|
||||
/// 更新小程序
|
||||
Future<void> update(MiniApp miniApp);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 删除指定小程序
|
||||
Future<void> delete(String id);
|
||||
|
||||
/// 清空所有小程序
|
||||
Future<void> clear();
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import 'package:im_app/domain/entities/pending_friend_request_history.dart';
|
||||
|
||||
/// 待处理好友请求历史仓储接口
|
||||
abstract class PendingFriendRequestHistoryRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Stream<List<PendingFriendRequestHistory>> watchAll();
|
||||
|
||||
Stream<PendingFriendRequestHistory?> watchById(int id);
|
||||
|
||||
Stream<List<PendingFriendRequestHistory>> watchByUid(int uid);
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<List<PendingFriendRequestHistory>> getAll();
|
||||
|
||||
Future<PendingFriendRequestHistory?> getById(int id);
|
||||
|
||||
Future<List<PendingFriendRequestHistory>> getByUid(int uid);
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<void> insertOrReplace(PendingFriendRequestHistory history);
|
||||
|
||||
Future<void> insertOrReplaceAll(List<PendingFriendRequestHistory> histories);
|
||||
|
||||
Future<void> update(PendingFriendRequestHistory history);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<void> delete(int id);
|
||||
|
||||
Future<void> deleteByUid(int uid);
|
||||
|
||||
Future<void> clear();
|
||||
}
|
||||
38
apps/im_app/lib/domain/repositories/sound_repository.dart
Normal file
38
apps/im_app/lib/domain/repositories/sound_repository.dart
Normal file
@@ -0,0 +1,38 @@
|
||||
import 'package:im_app/domain/entities/sound.dart';
|
||||
|
||||
/// 音效仓储接口
|
||||
abstract class SoundRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Stream<List<Sound>> watchAll();
|
||||
|
||||
Stream<Sound?> watchById(int id);
|
||||
|
||||
Stream<List<Sound>> watchByType(int typ);
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<List<Sound>> getAll();
|
||||
|
||||
Future<Sound?> getById(int id);
|
||||
|
||||
Future<List<Sound>> getByType(int typ);
|
||||
|
||||
Future<List<Sound>> getByChannelGroup(int channelGroupId);
|
||||
|
||||
Future<List<Sound>> getDefaults();
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<void> insertOrReplace(Sound sound);
|
||||
|
||||
Future<void> insertOrReplaceAll(List<Sound> sounds);
|
||||
|
||||
Future<void> update(Sound sound);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<void> delete(int id);
|
||||
|
||||
Future<void> clear();
|
||||
}
|
||||
43
apps/im_app/lib/domain/repositories/tag_repository.dart
Normal file
43
apps/im_app/lib/domain/repositories/tag_repository.dart
Normal file
@@ -0,0 +1,43 @@
|
||||
import 'package:im_app/domain/entities/tag.dart';
|
||||
|
||||
/// 标签仓储接口
|
||||
abstract class TagRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Stream<List<Tag>> watchAll();
|
||||
|
||||
Stream<Tag?> watchById(int id);
|
||||
|
||||
Stream<List<Tag>> watchByUid(int uid);
|
||||
|
||||
Stream<List<Tag>> watchByType(int type);
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<List<Tag>> getAll();
|
||||
|
||||
Future<Tag?> getById(int id);
|
||||
|
||||
Future<List<Tag>> getByUid(int uid);
|
||||
|
||||
Future<List<Tag>> getByType(int type);
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
/// 插入标签(autoIncrement id,无需提供)
|
||||
Future<void> insert(Tag tag);
|
||||
|
||||
Future<void> insertOrReplace(Tag tag);
|
||||
|
||||
Future<void> insertOrReplaceAll(List<Tag> tags);
|
||||
|
||||
Future<void> update(Tag tag);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<void> delete(int id);
|
||||
|
||||
Future<void> deleteByUid(int uid);
|
||||
|
||||
Future<void> clear();
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
import 'package:im_app/domain/entities/user_request_history.dart';
|
||||
|
||||
/// 用户请求历史仓储接口
|
||||
abstract class UserRequestHistoryRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Stream<List<UserRequestHistory>> watchAll();
|
||||
|
||||
Stream<UserRequestHistory?> watchById(int id);
|
||||
|
||||
Stream<List<UserRequestHistory>> watchByStatus(int status);
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<List<UserRequestHistory>> getAll();
|
||||
|
||||
Future<UserRequestHistory?> getById(int id);
|
||||
|
||||
Future<List<UserRequestHistory>> getByStatus(int status);
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<void> insertOrReplace(UserRequestHistory history);
|
||||
|
||||
Future<void> insertOrReplaceAll(List<UserRequestHistory> histories);
|
||||
|
||||
Future<void> update(UserRequestHistory history);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<void> delete(int id);
|
||||
|
||||
Future<void> clear();
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import 'package:im_app/domain/entities/workspace.dart';
|
||||
|
||||
/// 工作空间仓储接口
|
||||
abstract class WorkspaceRepository {
|
||||
// ── 监听 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Stream<List<Workspace>> watchAll();
|
||||
|
||||
Stream<Workspace?> watchById(int id);
|
||||
|
||||
// ── 读取 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<List<Workspace>> getAll();
|
||||
|
||||
Future<Workspace?> getById(int id);
|
||||
|
||||
Future<List<Workspace>> getByOwner(int ownerId);
|
||||
|
||||
// ── 写入 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<void> insertOrReplace(Workspace workspace);
|
||||
|
||||
Future<void> insertOrReplaceAll(List<Workspace> workspaces);
|
||||
|
||||
Future<void> update(Workspace workspace);
|
||||
|
||||
// ── 删除 ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<void> delete(int id);
|
||||
|
||||
Future<void> clear();
|
||||
}
|
||||
Reference in New Issue
Block a user