// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "../zen.h" namespace zen { class DropCommand : public CacheStoreCommand { public: DropCommand(); ~DropCommand(); virtual int Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) override; virtual cxxopts::Options& Options() override { return m_Options; } private: cxxopts::Options m_Options{"drop", "Drop cache namespace or bucket"}; std::string m_HostName; std::string m_NamespaceName; std::string m_BucketName; }; class CacheInfoCommand : public CacheStoreCommand { public: CacheInfoCommand(); ~CacheInfoCommand(); virtual int Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) override; virtual cxxopts::Options& Options() override { return m_Options; } private: cxxopts::Options m_Options{"cache-info", "Info on cache, namespace or bucket"}; std::string m_HostName; std::string m_NamespaceName; std::string m_SizeInfoBucketNames; bool m_BucketSizeInfo = false; std::string m_BucketName; }; class CacheStatsCommand : public CacheStoreCommand { public: CacheStatsCommand(); ~CacheStatsCommand(); virtual int Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) override; virtual cxxopts::Options& Options() override { return m_Options; } private: cxxopts::Options m_Options{"cache-stats", "Stats info on cache"}; std::string m_HostName; }; class CacheDetailsCommand : public CacheStoreCommand { public: CacheDetailsCommand(); ~CacheDetailsCommand(); virtual int Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) override; virtual cxxopts::Options& Options() override { return m_Options; } private: cxxopts::Options m_Options{"cache-details", "Detailed info on cache"}; std::string m_HostName; bool m_CSV = false; bool m_Details = false; bool m_AttachmentDetails = false; std::string m_Namespace; std::string m_Bucket; std::string m_ValueKey; }; class CacheGenerateCommand : public CacheStoreCommand { public: static constexpr char Name[] = "cache-gen"; static constexpr char Description[] = "Generates cache values into a bucket"; CacheGenerateCommand(); ~CacheGenerateCommand(); virtual int Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) override; virtual cxxopts::Options& Options() override { return m_Options; } private: cxxopts::Options m_Options{Name, Description}; std::string m_HostName; std::string m_Namespace; std::string m_Bucket; uint64_t m_Count = 1; uint64_t m_MinSize = 0; uint64_t m_MaxSize = 0; uint32_t m_MinAttachmentCount = 0; uint32_t m_MaxAttachmentCount = 0; }; class CacheGetCommand : public CacheStoreCommand { public: static constexpr char Name[] = "cache-get"; static constexpr char Description[] = "Get cache values/records or attachments from a bucket"; CacheGetCommand(); ~CacheGetCommand(); virtual int Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) override; virtual cxxopts::Options& Options() override { return m_Options; } private: cxxopts::Options m_Options{Name, Description}; std::string m_HostName; std::string m_Namespace; std::string m_Bucket; std::string m_ValueKey; std::string m_AttachmentHash; std::filesystem::path m_OutputPath; bool m_AsText = false; bool m_Decompress = true; }; } // namespace zen