LiteLoaderBDS-1.16.40/LiteLoader/include/llapi/PlayerInfoAPI.h
2023-03-03 10:18:21 -08:00

69 lines
1.8 KiB
C++

/**
* @file PlayerInfoAPI.h
* @author LiteLDev (https://github.com/LiteLDev)
* @brief Player information database interfaces
*
* @copyright Copyright (c) 2021-present LiteLoaderBDS developers and all contributors
*
*/
#pragma once
#include "Global.h"
#include <string>
namespace PlayerInfo {
/**
* @brief Player information structure.
*
*/
struct Info {
std::string name; ///< Real name(xbox)
xuid_t xuid; ///< Xuid(online-mode is required)
std::string uuid; ///< UUID
};
/**
* @brief Find the information of a player by realName.
*
* @param name The player name
* @return std::optional<Info> The info
*/
LIAPI std::optional<Info> findByName(const std::string& name);
/**
* @brief Find the information of a player by xuid.
*
* @param xuid The player xuid
* @return std::optional<Info> The info
*/
LIAPI std::optional<Info> findByXuid(const xuid_t& xuid);
/**
* @brief Find the information of a player by UUID.
*
* @param uuid The player UUID
* @return std::optional<Info> The info
*/
LIAPI std::optional<Info> findByUUID(const std::string& uuid);
/**
* @brief Get all the player names.
*
* @return std::vector<std::string> The names
*/
LIAPI std::vector<std::string> getAllPlayerNames();
/**
* @brief Get all the player info.
*
* @return std::vector<PlayerInfo::Info> The info
*/
LIAPI std::vector<Info> getAllPlayerInfo();
LIAPI bool insert(std::string name, std::string xuid, std::string uuid);
LIAPI std::string getXuid(std::string name);
LIAPI std::string getUUID(std::string name);
LIAPI std::string fromXuid(std::string xuid);
LIAPI std::string fromUUID(std::string uuid);
LIAPI void forEachInfo(std::function<bool(std::string_view name, std::string_view xuid, std::string_view uuid)> callback);
} // namespace PlayerInfo