11// SPDX-License-Identifier: Apache-2.0
22#include " file/FileService.h"
33#include " file/params/CreateFileParams.h"
4+ #include " file/params/UpdateFileParams.h"
45#include " key/KeyService.h"
56#include " sdk/SdkClient.h"
67#include " json/JsonErrorType.h"
78#include " json/JsonRpcException.h"
89
910#include < FileCreateTransaction.h>
11+ #include < FileId.h>
12+ #include < FileUpdateTransaction.h>
1013#include < Key.h>
1114#include < KeyList.h>
1215#include < PrivateKey.h>
@@ -73,4 +76,56 @@ nlohmann::json createFile(const CreateFileParams& params)
7376 };
7477}
7578
79+ // -----
80+ nlohmann::json updateFile (const UpdateFileParams& params)
81+ {
82+ FileUpdateTransaction fileUpdateTransaction;
83+ fileUpdateTransaction.setGrpcDeadline (SdkClient::DEFAULT_TCK_REQUEST_TIMEOUT);
84+
85+ // Set the file ID (optional)
86+ if (params.mFileId .has_value ())
87+ {
88+ fileUpdateTransaction.setFileId (FileId::fromString (params.mFileId .value ()));
89+ }
90+
91+ if (params.mKeys .has_value ())
92+ {
93+ std::vector<std::shared_ptr<Key>> keys;
94+ for (const std::string& keyString : params.mKeys .value ())
95+ {
96+ keys.push_back (KeyService::getHieroKey (keyString));
97+ }
98+ fileUpdateTransaction.setKeys (keys);
99+ }
100+
101+ if (params.mContents .has_value ())
102+ {
103+ fileUpdateTransaction.setContents (params.mContents .value ());
104+ }
105+
106+ if (params.mFileMemo .has_value ())
107+ {
108+ fileUpdateTransaction.setFileMemo (params.mFileMemo .value ());
109+ }
110+
111+ if (params.mExpirationTime .has_value ())
112+ {
113+ fileUpdateTransaction.setExpirationTime (
114+ std::chrono::system_clock::from_time_t (0 ) +
115+ std::chrono::seconds (Hiero::internal::EntityIdHelper::getNum<int64_t >(params.mExpirationTime .value ())));
116+ }
117+
118+ if (params.mCommonTxParams .has_value ())
119+ {
120+ params.mCommonTxParams ->fillOutTransaction (fileUpdateTransaction, SdkClient::getClient ());
121+ }
122+
123+ const TransactionReceipt txReceipt =
124+ fileUpdateTransaction.execute (SdkClient::getClient ()).getReceipt (SdkClient::getClient ());
125+
126+ return {
127+ {" status" , gStatusToString .at (txReceipt.mStatus )}
128+ };
129+ }
130+
76131} // namespace Hiero::TCK::FileService
0 commit comments