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

#include "GnsNode.hpp"


namespace gns {


class GnsServer;


/**
 * Represent a GNS3 project.
 */
class GnsProject {
public:
    GnsProject(const GnsServer* server, const std::string& uuid);

    /**
     * Get the base prefix for an API request
     * @return the base prefix for an API request
     */
    [[nodiscard]] std::string getApiBase() const;

    /**
     * Get the uuid of the project
     * @return the uuid of the project
     */
    [[nodiscard]] std::string getUuid() const;

    /**
     * Get all the nodes of the project
     * @return all the nodes of the project
     */
    [[nodiscard]] std::vector<std::shared_ptr<GnsNode>> getNodes() const;

private:
    const GnsServer* server;
    std::string uuid;
};


}