// // Created by Shell on 2026-06-18. // #ifndef SEADISK_REPO_ENTRY_HPP #define SEADISK_REPO_ENTRY_HPP #include #include #include namespace seafile::api { /** * @brief File or directory entry metadata. */ struct RepoEntry final { /// Entry type ("file" or "dir"). std::string type; /// File or directory name. std::string name; /// Object identifier. std::string id; /// Last modification time (Unix timestamp, seconds). std::int64_t mtime{}; /// Internal email address of the last modifier. std::optional modifier_email; /// File size in bytes. For directories this may be 0. std::optional size{}; /// Whether the file is currently locked. std::optional is_locked{}; /// Lock owner email or identifier. Null if unlocked. std::optional lock_owner; /// Lock timestamp (Unix timestamp, seconds). std::optional lock_time{}; /// Whether the current user owns the lock. std::optional locked_by_me{}; /// Current user's permission (e.g. "r", "rw"). std::optional permission; /// Contact email address of the last modifier. std::optional modifier_contact_email; /// Display name of the last modifier. std::optional modifier_name; /// Whether the entry is starred by the current user. std::optional starred{}; NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT( RepoEntry, modifier_email, size, is_locked, lock_owner, lock_time, locked_by_me, type, name, id, mtime, permission, modifier_contact_email, modifier_name, starred); }; } #endif //SEADISK_REPO_ENTRY_HPP