Page: Add 'title' column, storing title of last revision
This commit is contained in:
parent
ac793c6d39
commit
f7cf06cdd5
@ -58,9 +58,9 @@ std::optional<Page> PageDaoSqlite::find(unsigned int id)
|
|||||||
result.pageid = id;
|
result.pageid = id;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
auto ps = *db << "SELECT name, lastrevision, visible FROM page WHERE id = ?";
|
auto ps = *db << "SELECT name, title, lastrevision, visible FROM page WHERE id = ?";
|
||||||
|
|
||||||
ps << id >> std::tie(result.name, result.current_revision, result.listed);
|
ps << id >> std::tie(result.name, result.title, result.current_revision, result.listed);
|
||||||
}
|
}
|
||||||
catch(const sqlite::errors::no_rows &e)
|
catch(const sqlite::errors::no_rows &e)
|
||||||
{
|
{
|
||||||
@ -97,9 +97,10 @@ void PageDaoSqlite::save(const Page &page)
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
*db << "INSERT OR REPLACE INTO page (id, name, lastrevision, visible) VALUES((SELECT id FROM page WHERE name = "
|
*db << "INSERT OR REPLACE INTO page (id, name, title, lastrevision, visible) VALUES((SELECT id FROM page WHERE "
|
||||||
"? OR id = ?), ?, ?, ?)"
|
"name = "
|
||||||
<< page.name << page.pageid << page.name << page.current_revision << page.listed;
|
"? OR id = ?), ?, ?, ?, ?)"
|
||||||
|
<< page.name << page.pageid << page.name << page.title << page.current_revision << page.listed;
|
||||||
}
|
}
|
||||||
catch(sqlite::sqlite_exception &e)
|
catch(sqlite::sqlite_exception &e)
|
||||||
{
|
{
|
||||||
@ -183,7 +184,8 @@ std::vector<SearchResult> PageDaoSqlite::search(std::string name, QueryOption op
|
|||||||
auto query =
|
auto query =
|
||||||
*db << "SELECT page.name FROM search INNER JOIN page ON search.page = page.id WHERE search MATCH ? "
|
*db << "SELECT page.name FROM search INNER JOIN page ON search.page = page.id WHERE search MATCH ? "
|
||||||
<< ftsEscape(name);
|
<< ftsEscape(name);
|
||||||
query >> [&](std::string pagename) {
|
query >> [&](std::string pagename)
|
||||||
|
{
|
||||||
SearchResult sresult;
|
SearchResult sresult;
|
||||||
sresult.pagename = pagename;
|
sresult.pagename = pagename;
|
||||||
sresult.query = name;
|
sresult.query = name;
|
||||||
|
@ -34,7 +34,7 @@ std::string DynamicContentPostList::render()
|
|||||||
Varreplacer replacer{"{"};
|
Varreplacer replacer{"{"};
|
||||||
replacer.addKeyValue("url", link);
|
replacer.addKeyValue("url", link);
|
||||||
replacer.addKeyValue("date", date);
|
replacer.addKeyValue("date", date);
|
||||||
replacer.addKeyValue("page", pair.first);
|
replacer.addKeyValue("title", pageDao->find(pair.first)->title);
|
||||||
|
|
||||||
stream << replacer.parse(postLink);
|
stream << replacer.parse(postLink);
|
||||||
}
|
}
|
||||||
|
@ -66,6 +66,7 @@ Response HandlerPageEdit::handleRequest(PageDao &pageDao, std::string pagename,
|
|||||||
this->database->beginTransaction();
|
this->database->beginTransaction();
|
||||||
std::string visiblecmd = parser.extractCommand("visible", newContent);
|
std::string visiblecmd = parser.extractCommand("visible", newContent);
|
||||||
std::string rename = parser.extractCommand("rename", newContent);
|
std::string rename = parser.extractCommand("rename", newContent);
|
||||||
|
std::string customtitle = parser.extractCommand("pagetitle", newContent);
|
||||||
Page page;
|
Page page;
|
||||||
std::optional<Page> currentPage = pageDao.find(pagename);
|
std::optional<Page> currentPage = pageDao.find(pagename);
|
||||||
if(currentPage)
|
if(currentPage)
|
||||||
@ -83,6 +84,11 @@ Response HandlerPageEdit::handleRequest(PageDao &pageDao, std::string pagename,
|
|||||||
page.current_revision = current_revision;
|
page.current_revision = current_revision;
|
||||||
page.listed = !(visiblecmd == "0");
|
page.listed = !(visiblecmd == "0");
|
||||||
page.name = pagename;
|
page.name = pagename;
|
||||||
|
page.title = customtitle;
|
||||||
|
if(page.title.empty())
|
||||||
|
{
|
||||||
|
page.title = page.name;
|
||||||
|
}
|
||||||
pageDao.save(page);
|
pageDao.save(page);
|
||||||
|
|
||||||
Revision newRevision;
|
Revision newRevision;
|
||||||
|
1
page.h
1
page.h
@ -7,6 +7,7 @@ class Page
|
|||||||
public:
|
public:
|
||||||
Page();
|
Page();
|
||||||
std::string name;
|
std::string name;
|
||||||
|
std::string title;
|
||||||
bool listed;
|
bool listed;
|
||||||
unsigned int current_revision;
|
unsigned int current_revision;
|
||||||
unsigned int pageid;
|
unsigned int pageid;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
CREATE TABLE page(id INTEGER PRIMARY KEY, name varchar(256), lastrevision integer, visible integer DEFAULT 1);
|
CREATE TABLE page(id INTEGER PRIMARY KEY, name varchar(256), title varchar(1024), lastrevision integer, visible integer DEFAULT 1);
|
||||||
CREATE TABLE user(id INTEGER PRIMARY KEY,username varchar(64),
|
CREATE TABLE user(id INTEGER PRIMARY KEY,username varchar(64),
|
||||||
password blob, salt blob, permissions integer, enabled integer DEFAULT 1);
|
password blob, salt blob, permissions integer, enabled integer DEFAULT 1);
|
||||||
CREATE TABLE session(id INTEGER PRIMARY KEY, csrf_token varchar(32),
|
CREATE TABLE session(id INTEGER PRIMARY KEY, csrf_token varchar(32),
|
||||||
|
Loading…
Reference in New Issue
Block a user