| 17 | |
| 18 | |
| 19 | class FileService: |
| 20 | FILE_METADATA_KEY_PREFIX = "admin_file_metadata:" |
| 21 | FILE_VIEW_PRESETS_KEY = "admin_file_view_presets" |
| 22 | ADMIN_ACTIVITY_KEY = "admin_activity_events" |
| 23 | MAX_METADATA_NOTE_LENGTH = 2000 |
| 24 | MAX_METADATA_TAGS = 12 |
| 25 | MAX_METADATA_TAG_LENGTH = 24 |
| 26 | MAX_VIEW_PRESETS = 24 |
| 27 | MAX_VIEW_PRESET_NAME_LENGTH = 32 |
| 28 | MAX_VIEW_PRESET_KEYWORD_LENGTH = 80 |
| 29 | MAX_ADMIN_ACTIVITIES = 80 |
| 30 | MAX_ADMIN_ACTIVITY_TEXT_LENGTH = 120 |
| 31 | |
| 32 | POLICY_ACTIONS = { |
| 33 | "extend_24h", |
| 34 | "extend_7d", |
| 35 | "make_permanent", |
| 36 | "reset_download_limit", |
| 37 | } |
| 38 | |
| 39 | SORT_FIELDS = { |
| 40 | "created_at", |
| 41 | "createdat", |
| 42 | "expired_at", |
| 43 | "expiredat", |
| 44 | "name", |
| 45 | "size", |
| 46 | "used_count", |
| 47 | "usedcount", |
| 48 | "code", |
| 49 | } |
| 50 | VIEW_PRESET_STATUS_VALUES = {"all", "active", "expired"} |
| 51 | VIEW_PRESET_TYPE_VALUES = {"all", "file", "text", "chunked"} |
| 52 | VIEW_PRESET_HEALTH_VALUES = { |
| 53 | "all", |
| 54 | "attention", |
| 55 | "danger", |
| 56 | "warning", |
| 57 | "healthy", |
| 58 | "expired", |
| 59 | "expiring_soon", |
| 60 | "storage_issue", |
| 61 | "never_retrieved", |
| 62 | "permanent", |
| 63 | } |
| 64 | VIEW_PRESET_SORT_FIELDS = { |
| 65 | "created_at", |
| 66 | "expired_at", |
| 67 | "name", |
| 68 | "size", |
| 69 | "used_count", |
| 70 | "code", |
| 71 | } |
| 72 | |
| 73 | def __init__(self): |
| 74 | self._file_storage: Optional[FileStorageInterface] = None |
| 75 | |
| 76 | @property |
no outgoing calls