Commit Graph

59 Commits

Author SHA1 Message Date
bcd86fbfe7 refactor: extract handler business logic into application use cases
Some checks failed
test / unit (push) Has been cancelled
lint / lint (push) Has been cancelled
11 handlers were calling repos/ports directly, bypassing the
application layer. Extracted into proper use cases:

feed: get_public_feed, get_user_feed, get_tag_feed, get_popular_tags
profile: get_user_profile (with follow check), list_users,
         count_local_users, list_local_followers, list_local_following
federation_management: set_also_known_as

Also registers 9 previously undocumented handlers in OpenAPI modules.
2026-05-29 04:22:43 +02:00
5b4b747dd7 feat(federation): enrich RemoteActor with bio, banner, followers/following URLs
Some checks failed
lint / lint (push) Failing after 9m25s
test / unit (push) Has been cancelled
Bumps k-ap to 0.3.1 which adds bio, banner_url, followers_url,
following_url, and also_known_as to RemoteActor. These are populated
from fetched actor JSON at follow/ingest time so followers and following
listings no longer return null profile fields.

Adds migration 015 for the new remote_actors columns, updates all JOIN
queries in postgres-federation to select and return the new fields, and
maps them through k_ap_actor_to_domain.

Also fixes clippy: remove empty line after doc comment in port.rs.
2026-05-29 04:07:52 +02:00
bd370776fe refactor: simplify function signatures and improve code readability
Some checks failed
lint / lint (push) Failing after 9m6s
test / unit (push) Has been cancelled
2026-05-29 03:47:29 +02:00
ecb61f9b8f feat: add federation processed activities table and update dependencies
Some checks failed
test / unit (push) Has been cancelled
lint / lint (push) Has been cancelled
- Created a new SQL migration to add the `federation_processed_activities` table with an index on `processed_at`.
- Updated dependencies in `Cargo.toml` files across `bootstrap` and `worker` crates, including version updates for `k-ap`.
- Enhanced the event publishing mechanism in the `factory.rs` file to include a new `KapPublisher` for handling federation events.
- Refactored the `build` function in `factory.rs` to accommodate the new event publisher and improve ActivityPub service initialization.
- Modified the worker's main loop to handle new federation event types and improved error handling for event processing.

Co-authored-by: Copilot <copilot@github.com>
2026-05-29 03:47:06 +02:00
37d03a06dd docs(openapi): fix schema registration for federation actors and management
Some checks failed
lint / lint (push) Failing after 8m56s
test / unit (push) Successful in 16m29s
2026-05-29 02:09:16 +02:00
55e5bcc2bb docs(openapi): register federation management and actors doc modules 2026-05-29 02:08:08 +02:00
ac26eaca6b docs(openapi): annotate federation actors handlers and add doc module 2026-05-29 02:06:40 +02:00
86d0497509 docs(openapi): annotate all federation management handlers and add doc module 2026-05-29 02:04:59 +02:00
989004dd74 docs(openapi): annotate all missing user handlers 2026-05-29 02:02:31 +02:00
64cc11c2a1 docs(openapi): annotate get_followers, get_following, get_popular_tags handlers 2026-05-29 02:00:53 +02:00
01ef118b0a docs(openapi): add FeedOptionsQuery IntoParams and update feed annotations 2026-05-29 01:59:17 +02:00
8229285a2f refactor(postgres): format FeedSqlBuilder for improved readability 2026-05-29 00:13:55 +02:00
145b07d636 refactor(postgres): introduce FeedSqlBuilder to consolidate SQL construction 2026-05-29 00:11:07 +02:00
0688ffe0ae feat(backend): wire FeedRequest/FeedOptions sort+filter through all feed layers 2026-05-28 23:45:46 +02:00
95728302b7 feat(domain): add FeedSort, FeedFilter, FeedOptions, FeedRequest CQRS query types 2026-05-28 23:39:35 +02:00
e406464f9f feat(presentation): add GET /federation/me/friends handler and route
Some checks failed
lint / lint (push) Failing after 9m24s
test / unit (push) Successful in 16m41s
2026-05-28 03:48:59 +02:00
0e2b72b77a feat(presentation): add GET /users/me/friends handler and route 2026-05-28 03:46:52 +02:00
d4da172398 feat(application): add get_remote_friends use case 2026-05-28 03:44:41 +02:00
4e750420bf feat(application): add get_local_friends use case 2026-05-28 03:43:35 +02:00
e6330125be test(postgres): add list_mutual integration tests 2026-05-28 03:42:12 +02:00
14b7928026 fix: list_mutual sort by follow created_at, apply pagination in TestStore 2026-05-28 03:40:44 +02:00
a6a555e6a7 feat(domain): add list_mutual to FollowRepository, add remote actor storage to TestStore 2026-05-28 03:37:41 +02:00
4d4171a9c5 fix(clippy): remove unused PasswordHash import 2026-05-28 03:00:54 +02:00
75e6fe61ca fix: look up remote parent by ap_id to thread remote-to-remote replies 2026-05-28 02:59:45 +02:00
d68c628335 refactor: delegate mark_follower_accepted/rejected through k-ap service, remove federation_repo from ApFederationAdapter 2026-05-28 02:45:59 +02:00
af5c4481b6 fix: extract initiate_actor_move use case — remove event publish from handler 2026-05-28 02:41:42 +02:00
5e3db44043 fix(tests): update federation_management tests for EventPublisher arg 2026-05-28 02:34:30 +02:00
915163aac4 feat: split accept/reject into DB+event; broadcast_move via event in API 2026-05-28 02:32:50 +02:00
a06d09c101 feat(worker): add FederationManagementHandler and wire into event loop 2026-05-28 02:30:22 +02:00
0dce4fbe64 feat(application): add FederationManagementEventService 2026-05-28 02:28:15 +02:00
9c93baaa39 fix(bootstrap,worker): pass shared federation_repo to ApFederationAdapter 2026-05-28 02:26:57 +02:00
a253efacec feat(activitypub): add federation_repo field and thin DB-only methods to ApFederationAdapter 2026-05-28 02:24:43 +02:00
04f39e35c2 feat(domain): add mark_follower_accepted/rejected thin port methods 2026-05-28 02:22:52 +02:00
2060317867 fix(event-payload): correct NATS subjects for federation events 2026-05-28 02:20:43 +02:00
e338254099 feat(domain): add RemoteFollowAccepted, RemoteFollowRejected, ActorMoved events 2026-05-28 02:19:46 +02:00
2445cad1c9 feat: add PATCH /federation/me/also-known-as endpoint
Adds alsoKnownAs column to users table (migration 013), reads it in
the AP actor JSON, and exposes PATCH /federation/me/also-known-as to
set or clear it. Required pre-condition for broadcast_move.
2026-05-28 01:59:35 +02:00
fc290dc18f fix: update user URL handling in ThoughtsObjectHandler to use user_id 2026-05-28 01:51:55 +02:00
43e5175db5 fix: add broadcast_move stub to TestStore 2026-05-28 01:50:37 +02:00
50a90efbce feat: add POST /federation/me/move endpoint 2026-05-28 01:47:29 +02:00
ff75361eb1 feat: bump k-ap to v0.1.9 and implement migrate_follower_actor 2026-05-28 01:43:06 +02:00
5ca5ad9561 feat: update k-ap dependency to v0.1.8 and enhance middleware for ActivityPub requests 2026-05-28 01:08:45 +02:00
f6893b19dc feat: update dependencies to k-ap v0.1.7 and add profileHref utility for user links 2026-05-27 23:38:14 +02:00
5097c91261 feat: store AP note extensions in JSONB and render movies-diary posts as rich cards 2026-05-24 04:29:04 +02:00
fccc4064cf fix(federation): include header_url as AP banner (image) in actor JSON 2026-05-24 02:18:41 +02:00
01932cf337 feat: add image upload for avatar and banner 2026-05-24 02:06:47 +02:00
1874954ad7 fix: resolve thoughts compile errors after k-ap migration 2026-05-17 23:02:49 +02:00
f12cc7e2a7 chore: move ap_ports into activitypub adapter, delete activitypub-base 2026-05-17 22:48:22 +02:00
6936b7ce62 chore: switch activitypub-base to k-ap git dep 2026-05-17 22:47:32 +02:00
d56d34cc27 refactor: replace long arg lists with input/config structs and builder
- Thought::new_local → NewThought struct (7 args → 1)
- UserWriter::update_profile → UpdateProfileInput struct (6 args → 2)
- update_profile use case → UpdateProfileInput (8 args → 3)
- ActivityPubService::new → builder pattern (9 args → 5 required + 4 optional setters)
- accept_note → AcceptNoteInput struct (8 args → 1)
- ThoughtNote::new_public → ThoughtNoteInput struct (8 args → 1)

Remove all #[allow(clippy::too_many_arguments)] annotations.
2026-05-17 12:25:53 +02:00
2c2decba72 clean up 2026-05-17 12:14:45 +02:00