#pragma once

// Custom Classes
#include "CDTable.h"

struct CDFeatureGating {
	std::string featureName;
	int32_t major;
	int32_t current;
	int32_t minor;
	std::string description;
};

class CDFeatureGatingTable : public CDTable<CDFeatureGatingTable> {
private:
	std::vector<CDFeatureGating> entries;

public:
	void LoadValuesFromDatabase();

	// Queries the table with a custom "where" clause
	std::vector<CDFeatureGating> Query(std::function<bool(CDFeatureGating)> predicate);

	bool FeatureUnlocked(const std::string& feature) const;

	const std::vector<CDFeatureGating>& GetEntries(void) const;
};