103 lines
2.2 KiB
C++
103 lines
2.2 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
#include <cstdint>
|
|
|
|
struct RegistryStats {
|
|
int total_functions = 0;
|
|
int total_types = 0;
|
|
int total_apps = 0;
|
|
int total_analysis = 0;
|
|
int total_unit_tests = 0;
|
|
int total_proposals = 0;
|
|
int tested_functions = 0;
|
|
int pure_functions = 0;
|
|
int impure_functions = 0;
|
|
};
|
|
|
|
struct LangCount {
|
|
std::string lang;
|
|
int count = 0;
|
|
};
|
|
|
|
struct DomainCount {
|
|
std::string domain;
|
|
int count = 0;
|
|
};
|
|
|
|
struct KindCount {
|
|
std::string kind;
|
|
int count = 0;
|
|
};
|
|
|
|
struct DateCount {
|
|
std::string date; // YYYY-MM-DD
|
|
int count = 0;
|
|
};
|
|
|
|
struct FunctionRow {
|
|
std::string id;
|
|
std::string name;
|
|
std::string lang;
|
|
std::string domain;
|
|
std::string kind;
|
|
std::string purity;
|
|
std::string description;
|
|
std::string created_at;
|
|
bool tested = false;
|
|
};
|
|
|
|
struct AppRow {
|
|
std::string id;
|
|
std::string name;
|
|
std::string lang;
|
|
std::string domain;
|
|
std::string description;
|
|
std::string framework;
|
|
};
|
|
|
|
struct AnalysisRow {
|
|
std::string id;
|
|
std::string name;
|
|
std::string domain;
|
|
std::string description;
|
|
};
|
|
|
|
struct TypeRow {
|
|
std::string id;
|
|
std::string name;
|
|
std::string lang;
|
|
std::string domain;
|
|
std::string algebraic;
|
|
std::string description;
|
|
};
|
|
|
|
// All data loaded from registry.db in one shot
|
|
struct RegistryData {
|
|
RegistryStats stats;
|
|
std::vector<LangCount> by_lang;
|
|
std::vector<DomainCount> by_domain;
|
|
std::vector<KindCount> by_kind;
|
|
std::vector<DateCount> by_date; // last 30 days
|
|
std::vector<FunctionRow> recent_funcs; // last 20
|
|
std::vector<AppRow> apps;
|
|
std::vector<AnalysisRow> analyses;
|
|
std::vector<TypeRow> types;
|
|
|
|
// For chart data (populated by prepare_chart_data)
|
|
std::vector<std::string> lang_labels;
|
|
std::vector<float> lang_values;
|
|
std::vector<std::string> domain_labels;
|
|
std::vector<float> domain_values;
|
|
std::vector<std::string> kind_labels;
|
|
std::vector<float> kind_values;
|
|
std::vector<std::string> date_labels;
|
|
std::vector<float> date_values;
|
|
|
|
void prepare_chart_data();
|
|
};
|
|
|
|
// Load all data from registry.db. Returns true on success.
|
|
bool load_registry_data(const char* db_path, RegistryData& out);
|