aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/projectstore/projectstore.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2023-08-18 11:21:12 +0200
committerGitHub <[email protected]>2023-08-18 11:21:12 +0200
commit3975db7eb6ab9457c90a32c2744843d9e757b370 (patch)
treebfcebcf91f5c86fd80d0f48c52b123ed8eabfca8 /src/zenserver/projectstore/projectstore.cpp
parentcheck oplog op attachments when gathering references for GC (#363) (diff)
downloadzen-3975db7eb6ab9457c90a32c2744843d9e757b370.tar.xz
zen-3975db7eb6ab9457c90a32c2744843d9e757b370.zip
add update/delete endpoint for project and oplog (#353)
* add update endpoint for project store project * add update endpoint for oplog * changelog * Zen command line tool `project-update` Zen command line tool `project-delete` Zen command line tool `oplog-update` Zen command line tool `oplog-delete` * add --force-update option to project/oplog create remove project/oplog update commnad
Diffstat (limited to 'src/zenserver/projectstore/projectstore.cpp')
-rw-r--r--src/zenserver/projectstore/projectstore.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/zenserver/projectstore/projectstore.cpp b/src/zenserver/projectstore/projectstore.cpp
index 38674d28d..d20466161 100644
--- a/src/zenserver/projectstore/projectstore.cpp
+++ b/src/zenserver/projectstore/projectstore.cpp
@@ -559,6 +559,16 @@ ProjectStore::Oplog::Write()
}
void
+ProjectStore::Oplog::Update(const std::filesystem::path& MarkerPath)
+{
+ if (m_MarkerPath == MarkerPath)
+ {
+ return;
+ }
+ Write();
+}
+
+void
ProjectStore::Oplog::ReplayLog()
{
RwLock::ExclusiveLockScope OplogLock(m_OplogLock);
@@ -1814,6 +1824,36 @@ ProjectStore::NewProject(const std::filesystem::path& BasePath,
}
bool
+ProjectStore::UpdateProject(std::string_view ProjectId,
+ std::string_view RootDir,
+ std::string_view EngineRootDir,
+ std::string_view ProjectRootDir,
+ std::string_view ProjectFilePath)
+{
+ ZEN_TRACE_CPU("ProjectStore::UpdateProject");
+
+ ZEN_INFO("updating project {}", ProjectId);
+
+ RwLock::ExclusiveLockScope ProjectsLock(m_ProjectsLock);
+
+ auto ProjIt = m_Projects.find(std::string{ProjectId});
+
+ if (ProjIt == m_Projects.end())
+ {
+ return false;
+ }
+ Ref<ProjectStore::Project> Prj = ProjIt->second;
+
+ Prj->RootDir = RootDir;
+ Prj->EngineRootDir = EngineRootDir;
+ Prj->ProjectRootDir = ProjectRootDir;
+ Prj->ProjectFilePath = ProjectFilePath;
+ Prj->Write();
+
+ return true;
+}
+
+bool
ProjectStore::DeleteProject(std::string_view ProjectId)
{
ZEN_TRACE_CPU("ProjectStore::DeleteProject");