LCOV - code coverage report
Current view: top level - lib/src/database - database_api.dart (source / functions) Hit Total Coverage
Test: merged.info Lines: 1 2 50.0 %
Date: 2025-01-06 12:44:40 Functions: 0 0 -

          Line data    Source code
       1             : /*
       2             :  *   Famedly Matrix SDK
       3             :  *   Copyright (C) 2021 Famedly GmbH
       4             :  *
       5             :  *   This program is free software: you can redistribute it and/or modify
       6             :  *   it under the terms of the GNU Affero General Public License as
       7             :  *   published by the Free Software Foundation, either version 3 of the
       8             :  *   License, or (at your option) any later version.
       9             :  *
      10             :  *   This program is distributed in the hope that it will be useful,
      11             :  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
      12             :  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
      13             :  *   GNU Affero General Public License for more details.
      14             :  *
      15             :  *   You should have received a copy of the GNU Affero General Public License
      16             :  *   along with this program.  If not, see <https://www.gnu.org/licenses/>.
      17             :  */
      18             : 
      19             : import 'dart:typed_data';
      20             : 
      21             : import 'package:matrix/encryption/utils/olm_session.dart';
      22             : import 'package:matrix/encryption/utils/outbound_group_session.dart';
      23             : import 'package:matrix/encryption/utils/ssss_cache.dart';
      24             : import 'package:matrix/encryption/utils/stored_inbound_group_session.dart';
      25             : import 'package:matrix/matrix.dart';
      26             : import 'package:matrix/src/utils/queued_to_device_event.dart';
      27             : 
      28             : abstract class DatabaseApi {
      29           0 :   int get maxFileSize => 1 * 1000 * 1000;
      30             : 
      31           1 :   bool get supportsFileStoring => false;
      32             : 
      33             :   Future<Map<String, dynamic>?> getClient(String name);
      34             : 
      35             :   Future updateClient(
      36             :     String homeserverUrl,
      37             :     String token,
      38             :     DateTime? tokenExpiresAt,
      39             :     String? refreshToken,
      40             :     String userId,
      41             :     String? deviceId,
      42             :     String? deviceName,
      43             :     String? prevBatch,
      44             :     String? olmAccount,
      45             :   );
      46             : 
      47             :   Future insertClient(
      48             :     String name,
      49             :     String homeserverUrl,
      50             :     String token,
      51             :     DateTime? tokenExpiresAt,
      52             :     String? refreshToken,
      53             :     String userId,
      54             :     String? deviceId,
      55             :     String? deviceName,
      56             :     String? prevBatch,
      57             :     String? olmAccount,
      58             :   );
      59             : 
      60             :   Future<List<Room>> getRoomList(Client client);
      61             : 
      62             :   Future<Room?> getSingleRoom(
      63             :     Client client,
      64             :     String roomId, {
      65             :     bool loadImportantStates = true,
      66             :   });
      67             : 
      68             :   Future<Map<String, BasicEvent>> getAccountData();
      69             : 
      70             :   /// Stores a RoomUpdate object in the database. Must be called inside of
      71             :   /// [transaction].
      72             :   Future<void> storeRoomUpdate(
      73             :     String roomId,
      74             :     SyncRoomUpdate roomUpdate,
      75             :     Event? lastEvent,
      76             :     Client client,
      77             :   );
      78             : 
      79             :   Future<void> deleteTimelineForRoom(String roomId);
      80             : 
      81             :   /// Stores an EventUpdate object in the database. Must be called inside of
      82             :   /// [transaction].
      83             :   Future<void> storeEventUpdate(EventUpdate eventUpdate, Client client);
      84             : 
      85             :   Future<Event?> getEventById(String eventId, Room room);
      86             : 
      87             :   Future<void> forgetRoom(String roomId);
      88             : 
      89             :   Future<CachedProfileInformation?> getUserProfile(String userId);
      90             : 
      91             :   Future<void> storeUserProfile(
      92             :     String userId,
      93             :     CachedProfileInformation profile,
      94             :   );
      95             : 
      96             :   Future<void> markUserProfileAsOutdated(String userId);
      97             : 
      98             :   Future<void> clearCache();
      99             : 
     100             :   Future<void> clear();
     101             : 
     102             :   Future<User?> getUser(String userId, Room room);
     103             : 
     104             :   Future<List<User>> getUsers(Room room);
     105             : 
     106             :   Future<List<Event>> getEventList(
     107             :     Room room, {
     108             :     int start = 0,
     109             :     bool onlySending = false,
     110             :     int? limit,
     111             :   });
     112             : 
     113             :   Future<List<String>> getEventIdList(
     114             :     Room room, {
     115             :     int start = 0,
     116             :     bool includeSending = false,
     117             :     int? limit,
     118             :   });
     119             : 
     120             :   Future<Uint8List?> getFile(Uri mxcUri);
     121             : 
     122             :   Future storeFile(Uri mxcUri, Uint8List bytes, int time);
     123             : 
     124             :   Future<bool> deleteFile(Uri mxcUri);
     125             : 
     126             :   Future storeSyncFilterId(
     127             :     String syncFilterId,
     128             :   );
     129             : 
     130             :   Future storeAccountData(String type, Map<String, Object?> content);
     131             : 
     132             :   Future storeRoomAccountData(BasicRoomEvent event);
     133             : 
     134             :   Future<Map<String, DeviceKeysList>> getUserDeviceKeys(Client client);
     135             : 
     136             :   Future<SSSSCache?> getSSSSCache(String type);
     137             : 
     138             :   Future<OutboundGroupSession?> getOutboundGroupSession(
     139             :     String roomId,
     140             :     String userId,
     141             :   );
     142             : 
     143             :   Future<List<StoredInboundGroupSession>> getAllInboundGroupSessions();
     144             : 
     145             :   Future<StoredInboundGroupSession?> getInboundGroupSession(
     146             :     String roomId,
     147             :     String sessionId,
     148             :   );
     149             : 
     150             :   Future updateInboundGroupSessionIndexes(
     151             :     String indexes,
     152             :     String roomId,
     153             :     String sessionId,
     154             :   );
     155             : 
     156             :   Future storeInboundGroupSession(
     157             :     String roomId,
     158             :     String sessionId,
     159             :     String pickle,
     160             :     String content,
     161             :     String indexes,
     162             :     String allowedAtIndex,
     163             :     String senderKey,
     164             :     String senderClaimedKey,
     165             :   );
     166             : 
     167             :   Future markInboundGroupSessionAsUploaded(
     168             :     String roomId,
     169             :     String sessionId,
     170             :   );
     171             : 
     172             :   Future updateInboundGroupSessionAllowedAtIndex(
     173             :     String allowedAtIndex,
     174             :     String roomId,
     175             :     String sessionId,
     176             :   );
     177             : 
     178             :   Future removeOutboundGroupSession(String roomId);
     179             : 
     180             :   Future storeOutboundGroupSession(
     181             :     String roomId,
     182             :     String pickle,
     183             :     String deviceIds,
     184             :     int creationTime,
     185             :   );
     186             : 
     187             :   Future updateClientKeys(
     188             :     String olmAccount,
     189             :   );
     190             : 
     191             :   Future storeOlmSession(
     192             :     String identityKey,
     193             :     String sessionId,
     194             :     String pickle,
     195             :     int lastReceived,
     196             :   );
     197             : 
     198             :   Future setLastActiveUserDeviceKey(
     199             :     int lastActive,
     200             :     String userId,
     201             :     String deviceId,
     202             :   );
     203             : 
     204             :   Future setLastSentMessageUserDeviceKey(
     205             :     String lastSentMessage,
     206             :     String userId,
     207             :     String deviceId,
     208             :   );
     209             : 
     210             :   Future clearSSSSCache();
     211             : 
     212             :   Future storeSSSSCache(
     213             :     String type,
     214             :     String keyId,
     215             :     String ciphertext,
     216             :     String content,
     217             :   );
     218             : 
     219             :   Future markInboundGroupSessionsAsNeedingUpload();
     220             : 
     221             :   Future storePrevBatch(
     222             :     String prevBatch,
     223             :   );
     224             : 
     225             :   Future deleteOldFiles(int savedAt);
     226             : 
     227             :   Future storeUserDeviceKeysInfo(
     228             :     String userId,
     229             :     bool outdated,
     230             :   );
     231             : 
     232             :   Future storeUserDeviceKey(
     233             :     String userId,
     234             :     String deviceId,
     235             :     String content,
     236             :     bool verified,
     237             :     bool blocked,
     238             :     int lastActive,
     239             :   );
     240             : 
     241             :   Future removeUserDeviceKey(
     242             :     String userId,
     243             :     String deviceId,
     244             :   );
     245             : 
     246             :   Future removeUserCrossSigningKey(
     247             :     String userId,
     248             :     String publicKey,
     249             :   );
     250             : 
     251             :   Future storeUserCrossSigningKey(
     252             :     String userId,
     253             :     String publicKey,
     254             :     String content,
     255             :     bool verified,
     256             :     bool blocked,
     257             :   );
     258             : 
     259             :   Future deleteFromToDeviceQueue(int id);
     260             : 
     261             :   Future removeEvent(String eventId, String roomId);
     262             : 
     263             :   Future setRoomPrevBatch(
     264             :     String? prevBatch,
     265             :     String roomId,
     266             :     Client client,
     267             :   );
     268             : 
     269             :   Future setVerifiedUserCrossSigningKey(
     270             :     bool verified,
     271             :     String userId,
     272             :     String publicKey,
     273             :   );
     274             : 
     275             :   Future setBlockedUserCrossSigningKey(
     276             :     bool blocked,
     277             :     String userId,
     278             :     String publicKey,
     279             :   );
     280             : 
     281             :   Future setVerifiedUserDeviceKey(
     282             :     bool verified,
     283             :     String userId,
     284             :     String deviceId,
     285             :   );
     286             : 
     287             :   Future setBlockedUserDeviceKey(
     288             :     bool blocked,
     289             :     String userId,
     290             :     String deviceId,
     291             :   );
     292             : 
     293             :   Future<List<Event>> getUnimportantRoomEventStatesForRoom(
     294             :     List<String> events,
     295             :     Room room,
     296             :   );
     297             : 
     298             :   Future<List<OlmSession>> getOlmSessions(
     299             :     String identityKey,
     300             :     String userId,
     301             :   );
     302             : 
     303             :   Future<Map<String, Map>> getAllOlmSessions();
     304             : 
     305             :   Future<List<OlmSession>> getOlmSessionsForDevices(
     306             :     List<String> identityKeys,
     307             :     String userId,
     308             :   );
     309             : 
     310             :   Future<List<QueuedToDeviceEvent>> getToDeviceEventQueue();
     311             : 
     312             :   /// Please do `jsonEncode(content)` in your code to stay compatible with
     313             :   /// auto generated methods here.
     314             :   Future insertIntoToDeviceQueue(
     315             :     String type,
     316             :     String txnId,
     317             :     String content,
     318             :   );
     319             : 
     320             :   Future<List<String>> getLastSentMessageUserDeviceKey(
     321             :     String userId,
     322             :     String deviceId,
     323             :   );
     324             : 
     325             :   Future<List<StoredInboundGroupSession>> getInboundGroupSessionsToUpload();
     326             : 
     327             :   Future<void> addSeenDeviceId(
     328             :     String userId,
     329             :     String deviceId,
     330             :     String publicKeys,
     331             :   );
     332             : 
     333             :   Future<void> addSeenPublicKey(String publicKey, String deviceId);
     334             : 
     335             :   Future<String?> deviceIdSeen(userId, deviceId);
     336             : 
     337             :   Future<String?> publicKeySeen(String publicKey);
     338             : 
     339             :   Future<dynamic> close();
     340             : 
     341             :   Future<void> transaction(Future<void> Function() action);
     342             : 
     343             :   Future<String> exportDump();
     344             : 
     345             :   Future<bool> importDump(String export);
     346             : 
     347             :   Future<void> storePresence(String userId, CachedPresence presence);
     348             : 
     349             :   Future<CachedPresence?> getPresence(String userId);
     350             : 
     351             :   Future<void> storeWellKnown(DiscoveryInformation? discoveryInformation);
     352             : 
     353             :   Future<DiscoveryInformation?> getWellKnown();
     354             : 
     355             :   /// Deletes the whole database. The database needs to be created again after
     356             :   /// this.
     357             :   Future<void> delete();
     358             : }

Generated by: LCOV version 1.14