diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2023-05-26 13:18:46 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2023-05-30 11:26:50 +0300 |
commit | 651c01a92dbbec65674fe3c73a6c82a936e73d91 (patch) | |
tree | 6a9c62f2d4756b4547c1a742a57d546db9e81b62 /libbrep | |
parent | 9d3853cef802cb25ccc5c6749293d76990a3030c (diff) |
Add support for package-description, package-description-type, and changes-type package manifest values
Diffstat (limited to 'libbrep')
-rw-r--r-- | libbrep/package.cxx | 20 | ||||
-rw-r--r-- | libbrep/package.hxx | 41 | ||||
-rw-r--r-- | libbrep/package.xml | 7 |
3 files changed, 49 insertions, 19 deletions
diff --git a/libbrep/package.cxx b/libbrep/package.cxx index 152d1d8..e5e7767 100644 --- a/libbrep/package.cxx +++ b/libbrep/package.cxx @@ -60,9 +60,9 @@ namespace brep license_alternatives_type la, small_vector<string, 5> tp, small_vector<string, 5> kw, - optional<string> ds, - optional<text_type> dt, - string ch, + optional<typed_text> ds, + optional<typed_text> pds, + optional<typed_text> ch, optional<manifest_url> ur, optional<manifest_url> du, optional<manifest_url> su, @@ -94,7 +94,7 @@ namespace brep topics (move (tp)), keywords (move (kw)), description (move (ds)), - description_type (move (dt)), + package_description (move (pds)), changes (move (ch)), url (move (ur)), doc_url (move (du)), @@ -216,7 +216,17 @@ namespace brep for (const auto& k: keywords) k2 += ' ' + k; - return {move (k), move (k2), description ? *description : "", changes}; + string d (description ? description->text : ""); + + if (package_description) + { + if (description) + d += ' '; + + d += package_description->text; + } + + return {move (k), move (k2), move (d), changes ? changes->text : ""}; } // repository diff --git a/libbrep/package.hxx b/libbrep/package.hxx index bba38b7..4cbdded 100644 --- a/libbrep/package.hxx +++ b/libbrep/package.hxx @@ -18,9 +18,9 @@ // Used by the data migration entries. // -#define LIBBREP_PACKAGE_SCHEMA_VERSION_BASE 26 +#define LIBBREP_PACKAGE_SCHEMA_VERSION_BASE 27 -#pragma db model version(LIBBREP_PACKAGE_SCHEMA_VERSION_BASE, 26, closed) +#pragma db model version(LIBBREP_PACKAGE_SCHEMA_VERSION_BASE, 27, closed) namespace brep { @@ -49,9 +49,12 @@ namespace brep using bpkg::text_type; using bpkg::to_text_type; + // Note that here we assume that the saved string representation of a type + // is always recognized later. + // #pragma db map type(text_type) as(string) \ to(to_string (?)) \ - from(brep::to_text_type (?)) + from(*brep::to_text_type (?)) using optional_text_type = optional<text_type>; @@ -396,6 +399,15 @@ namespace brep string d; }; + #pragma db value + struct typed_text + { + string text; + text_type type; + + #pragma db member(text) column("") + }; + // Tweak package_id mapping to include a constraint (this only affects the // database schema). // @@ -429,9 +441,9 @@ namespace brep license_alternatives_type, small_vector<string, 5> topics, small_vector<string, 5> keywords, - optional<string> description, - optional<text_type> description_type, - string changes, + optional<typed_text> description, + optional<typed_text> package_description, + optional<typed_text> changes, optional<manifest_url> url, optional<manifest_url> doc_url, optional<manifest_url> src_url, @@ -501,9 +513,14 @@ namespace brep license_alternatives_type license_alternatives; small_vector<string, 5> topics; small_vector<string, 5> keywords; - optional<string> description; // Absent if type is unknown. - optional<text_type> description_type; // Present if description is present. - string changes; + + // Note that the descriptions and changes are absent if the respective + // type is unknown. + // + optional<typed_text> description; + optional<typed_text> package_description; + optional<typed_text> changes; + optional<manifest_url> url; optional<manifest_url> doc_url; optional<manifest_url> src_url; @@ -723,9 +740,9 @@ namespace brep friend class odb::access; package (): tenant (id.tenant), name (id.name) {} - // Save keywords, summary, description, and changes to weighted_text - // a, b, c, d members, respectively. So a word found in keywords will - // have a higher weight than if it's found in the summary. + // Save keywords, summary, descriptions, and changes to weighted_text a, + // b, c, d members, respectively. So a word found in keywords will have a + // higher weight than if it's found in the summary. // weighted_text search_text () const; diff --git a/libbrep/package.xml b/libbrep/package.xml index 8f32284..98c9055 100644 --- a/libbrep/package.xml +++ b/libbrep/package.xml @@ -1,5 +1,5 @@ <changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" schema-name="package" version="1"> - <model version="26"> + <model version="27"> <table name="tenant" kind="object"> <column name="id" type="TEXT" null="false"/> <column name="private" type="BOOLEAN" null="false"/> @@ -144,7 +144,10 @@ <column name="summary" type="TEXT" null="false"/> <column name="description" type="TEXT" null="true"/> <column name="description_type" type="TEXT" null="true"/> - <column name="changes" type="TEXT" null="false"/> + <column name="package_description" type="TEXT" null="true"/> + <column name="package_description_type" type="TEXT" null="true"/> + <column name="changes" type="TEXT" null="true"/> + <column name="changes_type" type="TEXT" null="true"/> <column name="url" type="TEXT" null="true"/> <column name="url_comment" type="TEXT" null="true"/> <column name="doc_url" type="TEXT" null="true"/> |