1use hc_zome_traits::{implement_zome_trait_as_externs, implemented_zome_traits};
2use hdk::prelude::*;
3use migration_zome_trait::MigrationZomeTrait;
4use notifications::FriendsNotifications;
5use notifications_zome_trait::NotificationsZomeTrait;
6use private_event_sourcing::EventHistory;
7use profiles_provider::FriendsProfilesProvider;
8use profiles_provider_zome_trait::ProfilesProviderZomeTrait;
9
10mod notifications;
11mod private_event;
12mod profiles_provider;
13
14mod all_friends;
15mod friend_request;
16mod profile;
17
18#[implemented_zome_traits]
19pub enum ZomeTraits {
20 Notifications(FriendsNotifications),
21 ProfilesProvider(FriendsProfilesProvider),
22 Migration(FriendsMigration),
23}
24
25struct FriendsMigration;
26
27#[implement_zome_trait_as_externs]
28impl MigrationZomeTrait for FriendsMigration {
29 fn migrate(old_cell_id: CellId) -> ExternResult<()> {
30 let response = call(
31 CallTargetCell::OtherCell(old_cell_id),
32 zome_info()?.name,
33 "export_event_history".into(),
34 None,
35 (),
36 )?;
37
38 let ZomeCallResponse::Ok(result) = response else {
39 return Err(wasm_error!(
40 "Error quering the old private event entries: {:?}.",
41 response
42 ));
43 };
44 let event_history: EventHistory = result.decode().map_err(|err| wasm_error!(err))?;
45
46 private_event_sourcing::import_event_history(event_history)?;
47
48 Ok(())
49 }
50}