/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
 */

#pragma once

#include <filesystem>

namespace OpenVulkano
{
	struct FileDescription
	{
		constexpr static inline std::filesystem::perms ALL_READ = std::filesystem::perms::owner_read | std::filesystem::perms::group_read | std::filesystem::perms::others_read;
		constexpr static inline size_t UNKNOWN_SIZE = SIZE_MAX;

		std::filesystem::file_type type;
		std::string path;
		size_t size;
		std::filesystem::perms permissions;
		time_t createTime = {}, modTime = {};

		static FileDescription MakeDescriptionForFile(const char* path, size_t size)
		{
			return {
				std::filesystem::file_type::regular,
				path,
				size,
				std::filesystem::perms::owner_write | ALL_READ,
				std::time(nullptr), std::time(nullptr)
			};
		}
	};
}
