feat: implement service layer for Phase 2 #58
Reference in New Issue
Block a user
Delete Branch "fix/issue-43"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Implements service layer methods for Phase 2 features as specified in issue #43.
BountyService Changes
Admin Management:
is_admin(room_id, user_id)- Check if user is adminadd_admin(room_id, user_id)- Add admin (requires admin permission)remove_admin(room_id, user_id)- Remove admin (requires admin permission)list_admins(room_id)- List all admin IDsTimezone:
set_timezone(room_id, timezone)- Set room timezone (requires admin)get_timezone(room_id)- Get room timezone (default UTC+0)Link Uniqueness:
check_link_unique(room_id, link, exclude_bounty_id)- Check if link is uniqueModified Methods:
add_bounty()- Now requires admin permission and checks link uniquenessupdate_bounty()- Changed from creator-only to admin-only permissiondelete_bounty()- Now performs soft delete (setsdeleted_at) instead of hard deleteget_bounty()- Now filters out soft-deleted bountieslist_bounties()- Uses storage method which excludes soft-deletedNew Methods:
list_deleted_bounties(room_id)- List soft-deleted bounties (for /recover)TrackingService Changes
get_tracked_bounties()- Now filters out soft-deleted bountiesPermissions (per issue #43)
Tests
All 94 tests pass. Tests updated to reflect new admin-only permissions and soft delete behavior.
Fixes #43
lgtm