From 74455c59ab145d66c185102100c3cad2ed75da8d Mon Sep 17 00:00:00 2001 From: Alec Murphy Date: Thu, 6 Mar 2025 15:03:05 -0500 Subject: [PATCH] Slon/Modules/Db: Add @slon_db_save_status_to_disk() to save an individual account's statuses --- Slon/Api/V1/Statuses.HC | 2 +- Slon/Modules/ActivityPub.HC | 2 +- Slon/Modules/Api.HC | 2 +- Slon/Modules/Db.HC | 9 +++++++++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Slon/Api/V1/Statuses.HC b/Slon/Api/V1/Statuses.HC index 424990e..5bd117d 100644 --- a/Slon/Api/V1/Statuses.HC +++ b/Slon/Api/V1/Statuses.HC @@ -137,7 +137,7 @@ U0 @slon_api_v1_statuses_delete(SlonHttpSession* session) } } } - @slon_db_save_statuses_to_disk; + @slon_db_save_status_to_disk(status); @slon_db_instance_decrement_status_count; @slon_db_save_instance_to_disk; if (@slon_api_status_delete_fedi) { diff --git a/Slon/Modules/ActivityPub.HC b/Slon/Modules/ActivityPub.HC index 254b042..48d5e16 100644 --- a/Slon/Modules/ActivityPub.HC +++ b/Slon/Modules/ActivityPub.HC @@ -896,7 +896,7 @@ U0 @slon_activitypub_users_inbox(SlonHttpSession* session, U8* user) break; } } - @slon_db_save_statuses_to_disk; + @slon_db_save_status_to_disk(status); request_object = Json.Clone(request_json); } diff --git a/Slon/Modules/Api.HC b/Slon/Modules/Api.HC index e2c4e2a..793c0ea 100644 --- a/Slon/Modules/Api.HC +++ b/Slon/Modules/Api.HC @@ -357,7 +357,7 @@ U0 @slon_api_create_status(JsonObject* status, U8* account_id, U8* to_ap_user = db->o("statuses")->set(account_id, Json.CreateArray(), JSON_ARRAY); } db->o("statuses")->a(account_id)->append(Json.CreateItem(status, JSON_OBJECT)); - @slon_db_save_statuses_to_disk; + @slon_db_save_status_to_disk(status); @slon_db_instance_increment_status_count; @slon_db_save_instance_to_disk; diff --git a/Slon/Modules/Db.HC b/Slon/Modules/Db.HC index dca5f1f..6b45df7 100644 --- a/Slon/Modules/Db.HC +++ b/Slon/Modules/Db.HC @@ -267,8 +267,17 @@ U0 @slon_db_save_settings_to_disk() Json.DumpToFile(scratch_buffer, db->o("settings")); } +U0 @slon_db_save_status_to_disk(JsonObject* status) +{ + // NOTE: This will commit all statuses to disk for the account specified in the status. + U8 scratch_buffer[256]; + StrPrint(scratch_buffer, "%s/statuses/%s.json", SLON_DB_PATH, status->o("account")->@("id")); + Json.DumpToFile(scratch_buffer, db->o("statuses")->a(status->o("account")->@("id"))); +} + U0 @slon_db_save_statuses_to_disk() { + // NOTE: This will commit all statuses to disk for every known account. U8 scratch_buffer[256]; JsonKey* key = db->o("statuses")->keys; while (key) {