13#include "reusex/core/resource_keys.hpp"
15#include <nlohmann/json.hpp>
35std::vector<TemplateMember>
parse_members(
const nlohmann::json &members);
38 std::string_view template_name);
39nlohmann::json
members_json(
const std::vector<TemplateMember> &members);
42 std::vector<std::string>
keys;
49 const std::vector<ResourceKey> &catalogue);
66 nlohmann::json
extra = nlohmann::json::object();
73 std::string_view template_name);
82 const std::vector<ResourceKey> &catalogue);
85std::string
unique_name(std::string_view base, std::string_view tag,
86 const std::vector<std::string> &taken);
105 std::optional<std::string>
name;
Wire form of one stored report PDF version — the ReportPdfVersion schema in ruxd's API contract (docs...
std::vector< SeedTemplate > seed_templates()
"Materialepas (fuld)" (one category member per leksikon category) and "Hurtig genbrugsscreening" (the...
std::vector< TemplateView > restore_seed_templates(ProjectDB &db)
Insert every seed whose tag no template carries ("Gendanstandardskabeloner"); a seed whose name is ta...
nlohmann::json csv_options_json(const CsvOptions &options)
std::vector< TemplateMember > parse_members(const nlohmann::json &members)
Parse [{"category": name} | {"key": id}, …].
CsvOptions read_csv_options(std::string_view stored, std::string_view template_name)
Stored options, tolerantly: a bad field logs warn and uses its default.
TemplateView template_view(const ProjectDB &db, int64_t id)
TemplateMember legacy_column_member(std::string_view column, const std::vector< ResourceKey > &catalogue)
ResolvedTemplate resolve_template(const std::vector< TemplateMember > &members, const std::vector< ResourceKey > &catalogue)
Spec §5.2: a category member expands to every catalogue key in that category (catalogue order),...
constexpr std::string_view kLegacyKeyPrefix
Export-template columns (schema v21 config.columns) as members.
constexpr std::string_view kSeedScreening
TemplateView duplicate_template(ProjectDB &db, int64_t id)
Copy as "<name> (kopi)", "<name> (kopi 2)", … (never a seed).
CsvOptions parse_csv_options(const nlohmann::json &csv)
std::vector< TemplateView > template_views(const ProjectDB &db)
Every template by id. Logs warn once per template with missing members.
constexpr std::string_view kSeedMaterialepas
std::string unique_name(std::string_view base, std::string_view tag, const std::vector< std::string > &taken)
First of "<base> (<tag>)", "<base> (<tag> 2)", "<base> (<tag> 3)", … that is not in taken.
void delete_template(ProjectDB &db, int64_t id)
TemplateView update_template(ProjectDB &db, int64_t id, const TemplateInput &input)
nlohmann::json members_json(const std::vector< TemplateMember > &members)
std::vector< TemplateMember > read_members(std::string_view stored, std::string_view template_name)
Stored members, tolerantly: unreadable JSON logs warn and reads as none.
TemplateView create_template(ProjectDB &db, const TemplateInput &input)
One row of templates (resources/templates spec §5.1).
A template's CSV export options (templates.csv).
std::string header
"label" | "key"
nlohmann::json extra
unknown fields, kept
std::string encoding
"utf-8" | "utf-8-bom"
std::string delimiter
";" | "," | "\t"
std::vector< std::string > keys
ordered, first position wins
std::vector< TemplateMember > missing
members resolving to nothing
std::vector< TemplateMember > members
std::string ref
category name, or key id
bool operator==(const TemplateMember &) const =default
One template as the API shows it: its row, parsed members and CSV options, and its resolution against...
ProjectDB::ResourceTemplateRecord record
std::vector< TemplateMember > members
ResolvedTemplate resolved