#pragma once
#include <string>
#include <vector>

#include "IFileSystemEntity.h"

namespace System::IO {
    class Directory : public IFileSystemEntity {
    private:
        std::wstring path;
    public:
        explicit Directory(const std::wstring& directoryPath);
        ~Directory() override = default;

        std::wstring GetPath() const override;
        DWORD GetAttributes() const override;
        bool SetAttributes(DWORD attributes) override;

        static bool Exists(const std::wstring& path);
        static bool CreateDirectory(const std::wstring& path);
        static bool Delete(const std::wstring& path);
        static bool Move(const std::wstring& source, const std::wstring& destination);
        static std::vector<std::wstring> GetFiles(const std::wstring& path);
        static std::vector<std::wstring> GetDirectories(const std::wstring& path);
    };
}