shokollm
8494b4621c
feat: switch admin identification from user_id to username
...
- Replace admin_user_ids (list[int]) with admin_usernames (list[str])
- Update all service methods to use username for permission checks
- Add delete button to bot responses for message cleanup
- Update tests to match new implementation
Note: Breaking change - existing data files need fresh start
2026-04-09 08:02:36 +00:00
shokollm
90b0b564c2
feat: add multi-ID delete support with per-ID results
...
- Add delete_bounties() method to BountyService that returns individual
results per bounty ID (deleted, not_found, permission_denied)
- Update cmd_delete to accept multiple IDs and show per-ID messages
- Add 3 tests for delete_bounties method
Example output:
/delete 1 2 3
✅ Bounty #1 deleted.
✅ Bounty #2 deleted.
⛔ Bounty #3 not found.
Fixes #47
2026-04-04 13:06:56 +00:00
shokollm
c005ee341a
Revert "Merge pull request 'feat: add multi-ID delete support with per-ID results' ( #63 ) from fix/issue-47 into main"
...
This reverts commit bd2627efe9 , reversing
changes made to 42ed551554 .
2026-04-04 07:24:03 +00:00
shokollm
8069ed6465
feat: add multi-ID delete support with per-ID results
...
- Add delete_bounties method to BountyService that returns individual
results per bounty ID (deleted, not_found, permission_denied)
- Update cmd_delete to accept multiple IDs and show per-ID messages
- Add tests for delete_bounties
Example output:
/delete 1 2 3
✅ Bounty #1 deleted.
✅ Bounty #2 deleted.
⛔ Bounty #3 not found.
Fixes #47
2026-04-04 06:39:11 +00:00
shokollm
af7774ef03
feat: implement service layer for Phase 2 - admin management, timezone, soft delete
...
BountyService:
- Add is_admin(), add_admin(), remove_admin(), list_admins()
- Add set_timezone(), get_timezone()
- Add check_link_unique(), list_deleted_bounties()
- Modify add_bounty() to check link uniqueness and require admin
- Modify update_bounty() to require admin permission (not creator)
- Modify delete_bounty() to perform soft delete (set deleted_at)
- get_bounty() now filters out soft-deleted bounties
- list_bounties() uses storage.list_bounties() which excludes soft-deleted
TrackingService:
- get_tracked_bounties() now filters out soft-deleted bounties
Tests updated to reflect new admin-only permissions and soft delete behavior.
2026-04-04 05:27:40 +00:00
shokollm
3feab1d469
test(services): add unit tests for BountyService and TrackingService
...
- Test BountyService: add_bounty, list_bounties, get_bounty, update_bounty, delete_bounty
- Test TrackingService: track_bounty, untrack_bounty, get_tracked_bounties
- Test edge cases: permission errors, not found, duplicate tracking
2026-04-03 11:36:07 +00:00