Slon/Api/V1/Announcements: Implement Announcements

Fixes #9
This commit is contained in:
Alec Murphy 2025-03-12 16:19:00 -04:00
parent 6e9f86b4ae
commit 475e648feb
11 changed files with 345 additions and 0 deletions

View file

@ -133,6 +133,20 @@ JsonObject* @slon_api_account_by_remote_actor(U8* remote_actor)
return NULL;
}
JsonObject* @slon_api_announcement_by_id(U8* id)
{
if (!id || !StrLen(id))
return NULL;
JsonArray* announcements = db->a("announcements");
I64 i;
for (i = 0; i < announcements->length; i++) {
if (!StrICmp(announcements->o(i)->@("id"), id)) {
return announcements->o(i);
}
}
return NULL;
}
U0 @slon_api_async_upload_to_catbox(SlonCatboxUpload* cb)
{
if (!cb) {

View file

@ -51,6 +51,13 @@ U0 @slon_db_load_apps_from_disk()
db->set("apps", Json.ParseFile(scratch_buffer, slon_db_mem_task), JSON_OBJECT);
}
U0 @slon_db_load_announcements_from_disk()
{
U8 scratch_buffer[256];
StrPrint(scratch_buffer, "%s/announcements.json", SLON_DB_PATH);
db->set("announcements", Json.ParseFile(scratch_buffer, slon_db_mem_task), JSON_ARRAY);
}
U0 @slon_db_load_instance_from_disk()
{
U8 scratch_buffer[256];
@ -230,6 +237,13 @@ U0 @slon_db_save_apps_to_disk()
Json.DumpToFile(scratch_buffer, db->o("apps"), slon_db_mem_task);
}
U0 @slon_db_save_announcements_to_disk()
{
U8 scratch_buffer[256];
StrPrint(scratch_buffer, "%s/announcements.json", SLON_DB_PATH);
Json.DumpToFile(scratch_buffer, db->a("announcements"), slon_db_mem_task);
}
U0 @slon_db_save_instance_to_disk()
{
U8 scratch_buffer[256];
@ -328,6 +342,7 @@ U0 @slon_db_save_to_disk()
{
@slon_db_save_accounts_to_disk();
@slon_db_save_actors_to_disk();
@slon_db_save_announcements_to_disk();
@slon_db_save_apps_to_disk();
@slon_db_save_followers_to_disk();
@slon_db_save_following_to_disk();
@ -344,6 +359,7 @@ U0 @slon_db_load_from_defaults()
{
db->set("accounts", Json.CreateArray(slon_db_mem_task), JSON_ARRAY);
db->set("actors", Json.CreateObject(slon_db_mem_task), JSON_OBJECT);
db->set("announcements", Json.CreateArray(slon_db_mem_task), JSON_ARRAY);
db->set("apps", Json.CreateObject(slon_db_mem_task), JSON_OBJECT);
db->set("idempotency_keys", Json.CreateObject(slon_db_mem_task), JSON_OBJECT);
db->set("private_keys", Json.CreateObject(slon_db_mem_task), JSON_OBJECT);
@ -372,6 +388,7 @@ U0 @slon_db_load_from_disk()
{
@slon_db_load_accounts_from_disk();
@slon_db_load_actors_from_disk();
@slon_db_load_announcements_from_disk();
@slon_db_load_apps_from_disk();
db->set("idempotency_keys", Json.CreateObject(slon_db_mem_task), JSON_OBJECT);
@slon_db_load_private_keys_from_disk();