Skip to main content

tuwunel_database/
maps.rs

1use std::{collections::BTreeMap, sync::Arc};
2
3use rocksdb::DBCompressionType as CompressionType;
4use tuwunel_core::Result;
5
6use crate::{
7	Engine, Map,
8	engine::descriptor::{self, CacheDisp, Descriptor},
9};
10
11pub(super) type Maps = BTreeMap<MapsKey, MapsVal>;
12pub(super) type MapsKey = &'static str;
13pub(super) type MapsVal = Arc<Map>;
14
15pub(super) fn open(engine: &Arc<Engine>) -> Result<Maps> { open_list(engine, MAPS) }
16
17#[tracing::instrument(name = "maps", level = "debug", skip_all)]
18pub(super) fn open_list(engine: &Arc<Engine>, maps: &[Descriptor]) -> Result<Maps> {
19	maps.iter()
20		.filter(|desc| !desc.dropped)
21		.map(|desc| Ok((desc.name, Map::open(engine, desc.name)?)))
22		.collect()
23}
24
25pub(super) static MAPS: &[Descriptor] = &[
26	Descriptor {
27		name: "alias_roomid",
28		..descriptor::RANDOM_SMALL
29	},
30	Descriptor {
31		name: "alias_userid",
32		..descriptor::RANDOM_SMALL
33	},
34	Descriptor {
35		name: "aliasid_alias",
36		..descriptor::RANDOM_SMALL
37	},
38	Descriptor {
39		name: "authchainkey_authchain",
40		cache_disp: CacheDisp::SharedWith("shorteventid_authchain"),
41		compression: CompressionType::None,
42		index_size: 1024,
43		block_size: 4096,
44		key_size_hint: Some(8), // intentionally match shorteventid_authchain
45		val_size_hint: Some(256),
46		..descriptor::RANDOM_CACHE
47	},
48	Descriptor {
49		name: "backupid_algorithm",
50		..descriptor::RANDOM_SMALL
51	},
52	Descriptor {
53		name: "backupid_etag",
54		..descriptor::RANDOM_SMALL
55	},
56	Descriptor {
57		name: "backupkeyid_backup",
58		..descriptor::RANDOM_SMALL
59	},
60	Descriptor {
61		name: "bannedroomids",
62		..descriptor::RANDOM_SMALL
63	},
64	Descriptor {
65		name: "disabledroomids",
66		..descriptor::RANDOM_SMALL
67	},
68	Descriptor {
69		name: "eventid_originalpdu",
70		key_size_hint: Some(48),
71		val_size_hint: Some(1520),
72		block_size: 2048,
73		index_size: 512,
74		..descriptor::RANDOM
75	},
76	Descriptor {
77		name: "eventid_outlierpdu",
78		cache_disp: CacheDisp::SharedWith("pduid_pdu"),
79		key_size_hint: Some(48),
80		val_size_hint: Some(1488),
81		block_size: 1024,
82		index_size: 512,
83		..descriptor::RANDOM
84	},
85	Descriptor {
86		name: "eventid_pduid",
87		cache_disp: CacheDisp::Unique,
88		key_size_hint: Some(48),
89		val_size_hint: Some(16),
90		block_size: 512,
91		index_size: 512,
92		..descriptor::RANDOM
93	},
94	Descriptor {
95		name: "eventid_policysigstate",
96		..descriptor::RANDOM_SMALL_CACHE
97	},
98	Descriptor {
99		name: "eventid_shorteventid",
100		cache_disp: CacheDisp::Unique,
101		key_size_hint: Some(48),
102		val_size_hint: Some(8),
103		block_size: 512,
104		index_size: 512,
105		..descriptor::RANDOM
106	},
107	Descriptor {
108		name: "global",
109		..descriptor::RANDOM_SMALL
110	},
111	Descriptor {
112		name: "id_appserviceregistrations",
113		..descriptor::RANDOM_SMALL
114	},
115	Descriptor {
116		name: "keychangeid_userid",
117		..descriptor::RANDOM
118	},
119	Descriptor {
120		name: "keyid_key",
121		..descriptor::RANDOM_SMALL
122	},
123	Descriptor {
124		name: "lazyloadedids",
125		..descriptor::RANDOM_SMALL
126	},
127	Descriptor {
128		name: "logintoken_expiresatuserid",
129		..descriptor::RANDOM_SMALL
130	},
131	Descriptor {
132		name: "mediaid_file",
133		..descriptor::RANDOM_SMALL
134	},
135	Descriptor {
136		name: "mediaid_pending",
137		ttl: 60 * 60 * 24 * 7,
138		..descriptor::RANDOM_SMALL_CACHE
139	},
140	Descriptor {
141		name: "mediaid_user",
142		..descriptor::RANDOM_SMALL
143	},
144	Descriptor {
145		name: "oauthid_session",
146		..descriptor::RANDOM_SMALL
147	},
148	Descriptor {
149		name: "oauthuniqid_oauthid",
150		..descriptor::RANDOM_SMALL
151	},
152	Descriptor {
153		name: "oidc_signingkey",
154		..descriptor::RANDOM_SMALL
155	},
156	Descriptor {
157		name: "oidcclientid_registration",
158		..descriptor::RANDOM_SMALL_CACHE
159	},
160	Descriptor {
161		name: "oidccode_authsession",
162		..descriptor::RANDOM_SMALL
163	},
164	Descriptor {
165		name: "oidcdevice_userdeviceid",
166		..descriptor::RANDOM_SMALL
167	},
168	Descriptor {
169		name: "oidccskeybypass_userid",
170		..descriptor::RANDOM_SMALL
171	},
172	Descriptor {
173		name: "oidcreqid_authrequest",
174		..descriptor::RANDOM_SMALL
175	},
176	Descriptor {
177		name: "onetimekeyid_onetimekeys",
178		..descriptor::DROPPED
179	},
180	Descriptor {
181		name: "onetimekeyid4225_otk",
182		..descriptor::RANDOM_SMALL
183	},
184	Descriptor {
185		name: "openidtoken_expiresatuserid",
186		..descriptor::RANDOM_SMALL
187	},
188	Descriptor {
189		name: "pduid_pdu",
190		cache_disp: CacheDisp::SharedWith("eventid_outlierpdu"),
191		key_size_hint: Some(16),
192		val_size_hint: Some(1520),
193		block_size: 2048,
194		index_size: 512,
195		..descriptor::SEQUENTIAL
196	},
197	Descriptor {
198		name: "publicroomids",
199		..descriptor::RANDOM_SMALL
200	},
201	Descriptor {
202		name: "pushkey_deviceid",
203		..descriptor::RANDOM_SMALL
204	},
205	Descriptor {
206		name: "presenceid_presence",
207		..descriptor::SEQUENTIAL_SMALL
208	},
209	Descriptor {
210		name: "readreceiptid_readreceipt",
211		..descriptor::RANDOM
212	},
213	Descriptor {
214		name: "referencedevents",
215		..descriptor::RANDOM
216	},
217	Descriptor {
218		name: "registrationtoken_info",
219		..descriptor::RANDOM_SMALL
220	},
221	Descriptor {
222		name: "roomid_knockedcount",
223		..descriptor::RANDOM_SMALL
224	},
225	Descriptor {
226		name: "roomid_invitedcount",
227		..descriptor::RANDOM_SMALL
228	},
229	Descriptor {
230		name: "roomid_inviteviaservers",
231		..descriptor::RANDOM_SMALL
232	},
233	Descriptor {
234		name: "roomid_joinedcount",
235		..descriptor::RANDOM_SMALL
236	},
237	Descriptor {
238		name: "roomid_maxremotepowerlevel",
239		..descriptor::RANDOM_SMALL
240	},
241	Descriptor {
242		name: "roomid_pduleaves",
243		..descriptor::RANDOM_SMALL
244	},
245	Descriptor {
246		name: "roomid_shortroomid",
247		val_size_hint: Some(8),
248		..descriptor::RANDOM_SMALL
249	},
250	Descriptor {
251		name: "roomid_shortstatehash",
252		val_size_hint: Some(8),
253		..descriptor::RANDOM_SMALL
254	},
255	Descriptor {
256		name: "roomid_spacehierarchy",
257		limit_size: 1024 * 1024 * 64,
258		..descriptor::RANDOM_SMALL_CACHE
259	},
260	Descriptor {
261		name: "roomid_ts_pducount",
262		val_size_hint: Some(8),
263		..descriptor::RANDOM
264	},
265	Descriptor {
266		name: "roomserverids",
267		..descriptor::RANDOM_SMALL
268	},
269	Descriptor {
270		name: "roomsynctoken_shortstatehash",
271		..descriptor::DROPPED
272	},
273	Descriptor {
274		name: "roomuserdataid_accountdata",
275		..descriptor::RANDOM_SMALL
276	},
277	Descriptor {
278		name: "roomuserid_invitecount",
279		val_size_hint: Some(8),
280		..descriptor::RANDOM_SMALL
281	},
282	Descriptor {
283		name: "roomuserid_joined",
284		..descriptor::RANDOM_SMALL
285	},
286	Descriptor {
287		name: "roomuserid_lastprivatereadupdate",
288		..descriptor::RANDOM_SMALL
289	},
290	Descriptor {
291		name: "roomuserid_lastnotificationread",
292		..descriptor::RANDOM_SMALL
293	},
294	Descriptor {
295		name: "roomuserid_leftcount",
296		val_size_hint: Some(8),
297		..descriptor::RANDOM
298	},
299	Descriptor {
300		name: "roomuserid_knockedcount",
301		val_size_hint: Some(8),
302		..descriptor::RANDOM_SMALL
303	},
304	Descriptor {
305		name: "roomuserid_privateread",
306		..descriptor::RANDOM_SMALL
307	},
308	Descriptor {
309		name: "roomuseroncejoinedids",
310		..descriptor::RANDOM
311	},
312	Descriptor {
313		name: "roomusertype_roomuserdataid",
314		..descriptor::RANDOM_SMALL
315	},
316	Descriptor {
317		name: "senderkey_pusher",
318		..descriptor::RANDOM_SMALL
319	},
320	Descriptor {
321		name: "server_signingkeys",
322		..descriptor::RANDOM
323	},
324	Descriptor {
325		name: "servercurrentevent_data",
326		..descriptor::RANDOM_SMALL
327	},
328	Descriptor {
329		name: "servername_destination",
330		..descriptor::RANDOM_SMALL_CACHE
331	},
332	Descriptor {
333		name: "servername_educount",
334		..descriptor::RANDOM_SMALL
335	},
336	Descriptor {
337		name: "servername_override",
338		..descriptor::RANDOM_SMALL_CACHE
339	},
340	Descriptor {
341		name: "servernameevent_data",
342		cache_disp: CacheDisp::Unique,
343		val_size_hint: Some(128),
344		..descriptor::RANDOM
345	},
346	Descriptor {
347		name: "serverroomids",
348		..descriptor::RANDOM_SMALL
349	},
350	Descriptor {
351		name: "shorteventid_authchain",
352		cache_disp: CacheDisp::SharedWith("authchainkey_authchain"),
353		key_size_hint: Some(8),
354		val_size_hint: Some(256),
355		index_size: 512,
356		block_size: 4096,
357		..descriptor::SEQUENTIAL
358	},
359	Descriptor {
360		name: "shorteventid_eventid",
361		cache_disp: CacheDisp::Unique,
362		key_size_hint: Some(8),
363		val_size_hint: Some(48),
364		..descriptor::SEQUENTIAL_SMALL
365	},
366	Descriptor {
367		name: "shorteventid_shortstatehash",
368		key_size_hint: Some(8),
369		val_size_hint: Some(8),
370		block_size: 512,
371		index_size: 512,
372		..descriptor::SEQUENTIAL
373	},
374	Descriptor {
375		name: "shortstatehash_statediff",
376		key_size_hint: Some(8),
377		..descriptor::SEQUENTIAL_SMALL
378	},
379	Descriptor {
380		name: "shortstatekey_statekey",
381		cache_disp: CacheDisp::Unique,
382		key_size_hint: Some(8),
383		val_size_hint: Some(1016),
384		..descriptor::RANDOM_SMALL
385	},
386	Descriptor {
387		name: "softfailedeventids",
388		key_size_hint: Some(48),
389		..descriptor::RANDOM_SMALL
390	},
391	Descriptor {
392		name: "statehash_shortstatehash",
393		val_size_hint: Some(8),
394		..descriptor::RANDOM
395	},
396	Descriptor {
397		name: "statekey_shortstatekey",
398		cache_disp: CacheDisp::Unique,
399		key_size_hint: Some(1016),
400		val_size_hint: Some(8),
401		..descriptor::RANDOM
402	},
403	Descriptor {
404		name: "threadid_userids",
405		..descriptor::SEQUENTIAL_SMALL
406	},
407	Descriptor {
408		name: "timeredacted_eventid",
409		key_size_hint: Some(57),
410		..descriptor::SEQUENTIAL_SMALL
411	},
412	Descriptor {
413		name: "todeviceid_events",
414		..descriptor::RANDOM
415	},
416	Descriptor {
417		name: "tofrom_relation",
418		key_size_hint: Some(8),
419		val_size_hint: Some(8),
420		..descriptor::RANDOM_SMALL
421	},
422	Descriptor {
423		name: "token_userdeviceid",
424		..descriptor::RANDOM_SMALL
425	},
426	Descriptor {
427		name: "tokenids",
428		block_size: 512,
429		..descriptor::RANDOM
430	},
431	Descriptor {
432		name: "url_previews",
433		..descriptor::RANDOM
434	},
435	Descriptor {
436		name: "userdeviceid_metadata",
437		..descriptor::RANDOM_SMALL
438	},
439	Descriptor {
440		name: "userdeviceconnid_conn",
441		block_size: 1024 * 16,
442		..descriptor::RANDOM_SMALL
443	},
444	Descriptor {
445		name: "userdeviceid_refresh",
446		..descriptor::RANDOM_SMALL
447	},
448	Descriptor {
449		name: "userdeviceid_token",
450		..descriptor::RANDOM_SMALL
451	},
452	Descriptor {
453		name: "userdeviceidalgorithm_fallback",
454		..descriptor::RANDOM_SMALL
455	},
456	Descriptor {
457		name: "userdevicesessionid_uiaainfo",
458		..descriptor::RANDOM_SMALL_CACHE
459	},
460	Descriptor {
461		name: "userdevicetxnid_response",
462		..descriptor::RANDOM_SMALL
463	},
464	Descriptor {
465		name: "userfilterid_filter",
466		..descriptor::RANDOM_SMALL
467	},
468	Descriptor {
469		name: "userid_avatarurl",
470		..descriptor::RANDOM_SMALL
471	},
472	Descriptor {
473		name: "userid_blurhash",
474		..descriptor::RANDOM_SMALL
475	},
476	Descriptor {
477		name: "userid_dehydrateddevice",
478		..descriptor::RANDOM_SMALL
479	},
480	Descriptor {
481		name: "userid_devicelistversion",
482		..descriptor::RANDOM_SMALL
483	},
484	Descriptor {
485		name: "userid_displayname",
486		..descriptor::RANDOM_SMALL
487	},
488	Descriptor {
489		name: "userid_lastonetimekeyupdate",
490		..descriptor::RANDOM_SMALL
491	},
492	Descriptor {
493		name: "userid_locked",
494		..descriptor::RANDOM_SMALL
495	},
496	Descriptor {
497		name: "userid_masterkeyid",
498		..descriptor::RANDOM_SMALL
499	},
500	Descriptor {
501		name: "userid_oauthid",
502		..descriptor::RANDOM_SMALL
503	},
504	Descriptor {
505		name: "userid_origin",
506		..descriptor::RANDOM
507	},
508	Descriptor {
509		name: "userid_password",
510		..descriptor::RANDOM
511	},
512	Descriptor {
513		name: "userid_presenceid",
514		..descriptor::RANDOM_SMALL
515	},
516	Descriptor {
517		name: "userid_selfsigningkeyid",
518		..descriptor::RANDOM_SMALL
519	},
520	Descriptor {
521		name: "userid_suspended",
522		..descriptor::RANDOM_SMALL
523	},
524	Descriptor {
525		name: "userid_usersigningkeyid",
526		..descriptor::RANDOM_SMALL
527	},
528	Descriptor {
529		name: "useridcount_notification",
530		limit_size: 1024 * 1024 * 256,
531		..descriptor::RANDOM_SMALL_CACHE
532	},
533	Descriptor {
534		name: "useridprofilekey_value",
535		..descriptor::RANDOM_SMALL
536	},
537	Descriptor {
538		name: "userroomid_highlightcount",
539		..descriptor::RANDOM
540	},
541	Descriptor {
542		name: "userroomid_invitestate",
543		..descriptor::RANDOM_SMALL
544	},
545	Descriptor {
546		name: "userroomid_joined",
547		..descriptor::RANDOM
548	},
549	Descriptor {
550		name: "userroomid_leftstate",
551		..descriptor::RANDOM
552	},
553	Descriptor {
554		name: "userroomid_knockedstate",
555		..descriptor::RANDOM_SMALL
556	},
557	Descriptor {
558		name: "userroomid_notificationcount",
559		..descriptor::RANDOM
560	},
561];