How nextcloud/files_retention works
Files Retention is a Nextcloud app for rules that automatically delete tagged files after a configured age, optionally notifying the owner a day beforehand. An administrator configures rules in the Vue settings UI; its API requests create, list, or delete rules. The backend persists rules and schedules daily jobs, which find tagged files, compare their creation or modification time with the retention threshold, and delete expired files or issue notifications. The README and sampled source establish this main flow; unsampled settings and notification implementation are represented only where the tree supports their paths.
Main entry points: RetentionJob.php Daily retention job · RetentionService.php Retention service · EventListener.php Event listener · AdminSettings.vue Settings UI
Components 24
Admin settings
- Settings UI
src/AdminSettings.vue - Vue entry
src/main.js - Vuex store
src/store/index.js - Rule state
src/store/retentionStore.js - API client
src/services/retentionService.js - Notification setting
lib/Settings/Admin.php
Rule management
- OCS routes
appinfo/routes.php - API controller
lib/Controller/APIController.php - Retention service
lib/Service/RetentionService.php - Rule database
Retention execution
- Daily retention job
lib/BackgroundJob/RetentionJob.php - Tagged file lookup
- Mount cache
- Nextcloud files
- User files
Nextcloud integration
- System tags
- Job scheduler
- App configuration
- Notification service
- Notifier
lib/Notification/Notifier.php - Event listener
lib/EventListener.php - Rule and tag events
lib/Event - App registration
lib/AppInfo/Application.php
Other components
- Administrator
Connections 28
- Administrator → Settings UI: configures
- Vue entry → Settings UI: mounts
- Vue entry → Vuex store: installs
- Settings UI → Rule state: dispatches
- Rule state → API client: requests rules
- API client → OCS routes: calls OCS
- OCS routes → API controller: dispatches
- API controller → Retention service: invokes
- Retention service → Rule database: reads/writes
- Retention service → System tags: validates tags
- Retention service → Job scheduler: schedules/removes
- Job scheduler → Daily retention job: dispatches
- Daily retention job → Rule database: reads rules
- Daily retention job → System tags: validates tag
- Daily retention job → Tagged file lookup: finds tagged files
- Daily retention job → Mount cache: finds mounts
- Daily retention job → Nextcloud files: resolves nodes
- Nextcloud files → User files: accesses
- Daily retention job → User files: deletes expired files
- Daily retention job → App configuration: reads preference
- Notification setting → App configuration: stores preference
- Daily retention job → Notification service: sends notices
- Notification service → Notifier: delegates rendering
- App registration → Event listener: registers
- App registration → Notifier: registers
- Rule and tag events → Event listener: dispatches
- Event listener → Retention service: handles rule events
- Event listener → Rule database: removes deleted-tag rules