From 8998fb8793f2d3c7b6683b0ed47354c56e025160 Mon Sep 17 00:00:00 2001 From: Albert S Date: Fri, 11 Aug 2023 09:21:02 +0200 Subject: [PATCH] PermissionsDao: Add clearForPage() --- database/permissionsdao.h | 2 ++ database/permissionsdaosqlite.cpp | 13 +++++++++++++ database/permissionsdaosqlite.h | 1 + 3 files changed, 16 insertions(+) diff --git a/database/permissionsdao.h b/database/permissionsdao.h index e2c6731..bd72be0 100644 --- a/database/permissionsdao.h +++ b/database/permissionsdao.h @@ -9,6 +9,8 @@ class PermissionsDao PermissionsDao(); virtual std::optional find(std::string pagename, std::string username) = 0; virtual void save(std::string pagename, std::string username, Permissions perms) = 0; + virtual void clearForPage(std::string pagename) = 0; + virtual ~PermissionsDao() = default; }; diff --git a/database/permissionsdaosqlite.cpp b/database/permissionsdaosqlite.cpp index 7c5018d..4e41c2e 100644 --- a/database/permissionsdaosqlite.cpp +++ b/database/permissionsdaosqlite.cpp @@ -59,3 +59,16 @@ void PermissionsDaoSqlite::save(std::string pagename, std::string username, Perm throwFrom(e); } } + +void PermissionsDaoSqlite::clearForPage(std::string pagename) +{ + try + { + auto stmt = *db << "DELETE FROM permissions WHERE page = (SELECT id FROM page WHERE name = ?)" << pagename; + stmt.execute(); + } + catch(sqlite::sqlite_exception &e) + { + throwFrom(e); + } +} diff --git a/database/permissionsdaosqlite.h b/database/permissionsdaosqlite.h index 39d03f9..7a2441f 100644 --- a/database/permissionsdaosqlite.h +++ b/database/permissionsdaosqlite.h @@ -10,6 +10,7 @@ class PermissionsDaoSqlite : public PermissionsDao, protected SqliteDao std::optional find(std::string pagename, std::string username) override; virtual void save(std::string pagename, std::string username, Permissions perms) override; + virtual void clearForPage(std::string pagename) override; using SqliteDao::SqliteDao; };