diff options
| author | Dan Engelbrecht <[email protected]> | 2023-08-18 11:21:12 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-08-18 11:21:12 +0200 |
| commit | 3975db7eb6ab9457c90a32c2744843d9e757b370 (patch) | |
| tree | bfcebcf91f5c86fd80d0f48c52b123ed8eabfca8 /src/zenserver/projectstore/projectstore.cpp | |
| parent | check oplog op attachments when gathering references for GC (#363) (diff) | |
| download | zen-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.cpp | 40 |
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"); |