LCOV - code coverage report
Current view: top level - lib/src/database - database_api.dart (source / functions) Coverage Total Hit
Test: merged.info Lines: 50.0 % 2 1
Test Date: 2025-01-14 13:39:53 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(
      84              :     String roomId,
      85              :     StrippedStateEvent event,
      86              :     EventUpdateType type,
      87              :     Client client,
      88              :   );
      89              : 
      90              :   Future<Event?> getEventById(String eventId, Room room);
      91              : 
      92              :   Future<void> forgetRoom(String roomId);
      93              : 
      94              :   Future<CachedProfileInformation?> getUserProfile(String userId);
      95              : 
      96              :   Future<void> storeUserProfile(
      97              :     String userId,
      98              :     CachedProfileInformation profile,
      99              :   );
     100              : 
     101              :   Future<void> markUserProfileAsOutdated(String userId);
     102              : 
     103              :   Future<void> clearCache();
     104              : 
     105              :   Future<void> clear();
     106              : 
     107              :   Future<User?> getUser(String userId, Room room);
     108              : 
     109              :   Future<List<User>> getUsers(Room room);
     110              : 
     111              :   Future<List<Event>> getEventList(
     112              :     Room room, {
     113              :     int start = 0,
     114              :     bool onlySending = false,
     115              :     int? limit,
     116              :   });
     117              : 
     118              :   Future<List<String>> getEventIdList(
     119              :     Room room, {
     120              :     int start = 0,
     121              :     bool includeSending = false,
     122              :     int? limit,
     123              :   });
     124              : 
     125              :   Future<Uint8List?> getFile(Uri mxcUri);
     126              : 
     127              :   Future storeFile(Uri mxcUri, Uint8List bytes, int time);
     128              : 
     129              :   Future<bool> deleteFile(Uri mxcUri);
     130              : 
     131              :   Future storeSyncFilterId(
     132              :     String syncFilterId,
     133              :   );
     134              : 
     135              :   Future storeAccountData(String type, Map<String, Object?> content);
     136              : 
     137              :   Future storeRoomAccountData(String roomId, BasicEvent event);
     138              : 
     139              :   Future<Map<String, DeviceKeysList>> getUserDeviceKeys(Client client);
     140              : 
     141              :   Future<SSSSCache?> getSSSSCache(String type);
     142              : 
     143              :   Future<OutboundGroupSession?> getOutboundGroupSession(
     144              :     String roomId,
     145              :     String userId,
     146              :   );
     147              : 
     148              :   Future<List<StoredInboundGroupSession>> getAllInboundGroupSessions();
     149              : 
     150              :   Future<StoredInboundGroupSession?> getInboundGroupSession(
     151              :     String roomId,
     152              :     String sessionId,
     153              :   );
     154              : 
     155              :   Future updateInboundGroupSessionIndexes(
     156              :     String indexes,
     157              :     String roomId,
     158              :     String sessionId,
     159              :   );
     160              : 
     161              :   Future storeInboundGroupSession(
     162              :     String roomId,
     163              :     String sessionId,
     164              :     String pickle,
     165              :     String content,
     166              :     String indexes,
     167              :     String allowedAtIndex,
     168              :     String senderKey,
     169              :     String senderClaimedKey,
     170              :   );
     171              : 
     172              :   Future markInboundGroupSessionAsUploaded(
     173              :     String roomId,
     174              :     String sessionId,
     175              :   );
     176              : 
     177              :   Future updateInboundGroupSessionAllowedAtIndex(
     178              :     String allowedAtIndex,
     179              :     String roomId,
     180              :     String sessionId,
     181              :   );
     182              : 
     183              :   Future removeOutboundGroupSession(String roomId);
     184              : 
     185              :   Future storeOutboundGroupSession(
     186              :     String roomId,
     187              :     String pickle,
     188              :     String deviceIds,
     189              :     int creationTime,
     190              :   );
     191              : 
     192              :   Future updateClientKeys(
     193              :     String olmAccount,
     194              :   );
     195              : 
     196              :   Future storeOlmSession(
     197              :     String identityKey,
     198              :     String sessionId,
     199              :     String pickle,
     200              :     int lastReceived,
     201              :   );
     202              : 
     203              :   Future setLastActiveUserDeviceKey(
     204              :     int lastActive,
     205              :     String userId,
     206              :     String deviceId,
     207              :   );
     208              : 
     209              :   Future setLastSentMessageUserDeviceKey(
     210              :     String lastSentMessage,
     211              :     String userId,
     212              :     String deviceId,
     213              :   );
     214              : 
     215              :   Future clearSSSSCache();
     216              : 
     217              :   Future storeSSSSCache(
     218              :     String type,
     219              :     String keyId,
     220              :     String ciphertext,
     221              :     String content,
     222              :   );
     223              : 
     224              :   Future markInboundGroupSessionsAsNeedingUpload();
     225              : 
     226              :   Future storePrevBatch(
     227              :     String prevBatch,
     228              :   );
     229              : 
     230              :   Future deleteOldFiles(int savedAt);
     231              : 
     232              :   Future storeUserDeviceKeysInfo(
     233              :     String userId,
     234              :     bool outdated,
     235              :   );
     236              : 
     237              :   Future storeUserDeviceKey(
     238              :     String userId,
     239              :     String deviceId,
     240              :     String content,
     241              :     bool verified,
     242              :     bool blocked,
     243              :     int lastActive,
     244              :   );
     245              : 
     246              :   Future removeUserDeviceKey(
     247              :     String userId,
     248              :     String deviceId,
     249              :   );
     250              : 
     251              :   Future removeUserCrossSigningKey(
     252              :     String userId,
     253              :     String publicKey,
     254              :   );
     255              : 
     256              :   Future storeUserCrossSigningKey(
     257              :     String userId,
     258              :     String publicKey,
     259              :     String content,
     260              :     bool verified,
     261              :     bool blocked,
     262              :   );
     263              : 
     264              :   Future deleteFromToDeviceQueue(int id);
     265              : 
     266              :   Future removeEvent(String eventId, String roomId);
     267              : 
     268              :   Future setRoomPrevBatch(
     269              :     String? prevBatch,
     270              :     String roomId,
     271              :     Client client,
     272              :   );
     273              : 
     274              :   Future setVerifiedUserCrossSigningKey(
     275              :     bool verified,
     276              :     String userId,
     277              :     String publicKey,
     278              :   );
     279              : 
     280              :   Future setBlockedUserCrossSigningKey(
     281              :     bool blocked,
     282              :     String userId,
     283              :     String publicKey,
     284              :   );
     285              : 
     286              :   Future setVerifiedUserDeviceKey(
     287              :     bool verified,
     288              :     String userId,
     289              :     String deviceId,
     290              :   );
     291              : 
     292              :   Future setBlockedUserDeviceKey(
     293              :     bool blocked,
     294              :     String userId,
     295              :     String deviceId,
     296              :   );
     297              : 
     298              :   Future<List<Event>> getUnimportantRoomEventStatesForRoom(
     299              :     List<String> events,
     300              :     Room room,
     301              :   );
     302              : 
     303              :   Future<List<OlmSession>> getOlmSessions(
     304              :     String identityKey,
     305              :     String userId,
     306              :   );
     307              : 
     308              :   Future<Map<String, Map>> getAllOlmSessions();
     309              : 
     310              :   Future<List<OlmSession>> getOlmSessionsForDevices(
     311              :     List<String> identityKeys,
     312              :     String userId,
     313              :   );
     314              : 
     315              :   Future<List<QueuedToDeviceEvent>> getToDeviceEventQueue();
     316              : 
     317              :   /// Please do `jsonEncode(content)` in your code to stay compatible with
     318              :   /// auto generated methods here.
     319              :   Future insertIntoToDeviceQueue(
     320              :     String type,
     321              :     String txnId,
     322              :     String content,
     323              :   );
     324              : 
     325              :   Future<List<String>> getLastSentMessageUserDeviceKey(
     326              :     String userId,
     327              :     String deviceId,
     328              :   );
     329              : 
     330              :   Future<List<StoredInboundGroupSession>> getInboundGroupSessionsToUpload();
     331              : 
     332              :   Future<void> addSeenDeviceId(
     333              :     String userId,
     334              :     String deviceId,
     335              :     String publicKeys,
     336              :   );
     337              : 
     338              :   Future<void> addSeenPublicKey(String publicKey, String deviceId);
     339              : 
     340              :   Future<String?> deviceIdSeen(userId, deviceId);
     341              : 
     342              :   Future<String?> publicKeySeen(String publicKey);
     343              : 
     344              :   Future<dynamic> close();
     345              : 
     346              :   Future<void> transaction(Future<void> Function() action);
     347              : 
     348              :   Future<String> exportDump();
     349              : 
     350              :   Future<bool> importDump(String export);
     351              : 
     352              :   Future<void> storePresence(String userId, CachedPresence presence);
     353              : 
     354              :   Future<CachedPresence?> getPresence(String userId);
     355              : 
     356              :   Future<void> storeWellKnown(DiscoveryInformation? discoveryInformation);
     357              : 
     358              :   Future<DiscoveryInformation?> getWellKnown();
     359              : 
     360              :   /// Deletes the whole database. The database needs to be created again after
     361              :   /// this.
     362              :   Future<void> delete();
     363              : }
        

Generated by: LCOV version 2.0-1