File tree Expand file tree Collapse file tree 3 files changed +48
-1
lines changed
Expand file tree Collapse file tree 3 files changed +48
-1
lines changed Original file line number Diff line number Diff line change @@ -244,3 +244,26 @@ ioLogger handle formatter msg = liftIO do
244244
245245instance Loggable Sync. EntityValidationError where
246246 toLog = withSeverity Error . showLog
247+
248+ instance Loggable Sync. HashMismatchForEntity where
249+ toLog = withSeverity Error . showLog
250+
251+ instance Loggable Sync. UploadEntitiesError where
252+ toLog = \ case
253+ Sync. UploadEntitiesError'EntityValidationFailure err -> toLog err
254+ Sync. UploadEntitiesError'HashMismatchForEntity mismatch -> toLog mismatch
255+ Sync. UploadEntitiesError'InvalidRepoInfo msg repoInfo ->
256+ textLog (" Invalid repo info: " <> msg <> " RepoInfo: " <> tShow repoInfo)
257+ & withSeverity Error
258+ Sync. UploadEntitiesError'NeedDependencies nd ->
259+ textLog (" Need dependencies: " <> tShow nd)
260+ & withSeverity Error
261+ Sync. UploadEntitiesError'NoWritePermission repoInfo ->
262+ textLog (" No write permission for repo: " <> tShow repoInfo)
263+ & withSeverity UserFault
264+ Sync. UploadEntitiesError'ProjectNotFound projectShorthand ->
265+ textLog (" Project not found: " <> projectShorthand)
266+ & withSeverity UserFault
267+ Sync. UploadEntitiesError'UserNotFound userHandle ->
268+ textLog (" User not found: " <> userHandle)
269+ & withSeverity UserFault
Original file line number Diff line number Diff line change @@ -404,9 +404,25 @@ throwSomeServerError = throwError . SomeServerError . withCallstack
404404
405405-- Instances from unison types.
406406
407+
407408instance ToServerError Sync. EntityValidationError where
408409 toServerError = \ case
409410 Sync. EntityHashMismatch {} -> (" entity-hash-mismatch" , err500)
410411 Sync. UnsupportedEntityType {} -> (" unsupported-entity-type" , err500)
411412 Sync. InvalidByteEncoding {} -> (" invalid-byte-encoding" , err500)
412413 Sync. HashResolutionFailure {} -> (" hash-resolution-failure" , err500)
414+
415+ instance ToServerError Sync. HashMismatchForEntity where
416+ toServerError _ = (" hash-mismatch-for-entity" , err400 {errBody = " Hash Mismatch for Entity" })
417+
418+ instance ToServerError Sync. UploadEntitiesError where
419+ toServerError = \ case
420+ Sync. UploadEntitiesError'EntityValidationFailure err -> toServerError err
421+ Sync. UploadEntitiesError'HashMismatchForEntity mismatch -> toServerError mismatch
422+ Sync. UploadEntitiesError'InvalidRepoInfo _ _ -> (" invalid-repo-info" , err400 {errBody = " Invalid Repo Info" })
423+ Sync. UploadEntitiesError'NeedDependencies _ -> (" need-dependencies" , err400 {errBody = " Need Dependencies" })
424+ Sync. UploadEntitiesError'NoWritePermission _ -> (" no-write-permission" , err403 {errBody = " No Write Permission" })
425+ Sync. UploadEntitiesError'ProjectNotFound _ -> (" project-not-found" , err404 {errBody = " Project Not Found" })
426+ Sync. UploadEntitiesError'UserNotFound _ -> (" user-not-found" , err404 {errBody = " User Not Found" })
427+
428+
Original file line number Diff line number Diff line change @@ -189,7 +189,7 @@ downloadEntitiesEndpoint mayUserId DownloadEntitiesRequest {repoInfo, hashes = h
189189
190190uploadEntitiesEndpoint :: UserId -> UploadEntitiesRequest -> WebApp UploadEntitiesResponse
191191uploadEntitiesEndpoint callingUserId (UploadEntitiesRequest {repoInfo, entities}) = do
192- either id id <$> runExceptT do
192+ finalizeResponse =<< runExceptT do
193193 addRequestTag " repo-info" (unRepoInfo repoInfo)
194194 codebase <-
195195 case repoInfoKind repoInfo of
@@ -224,6 +224,14 @@ uploadEntitiesEndpoint callingUserId (UploadEntitiesRequest {repoInfo, entities}
224224 Right Nothing -> UploadEntitiesSuccess
225225 -- There were missing dependencies, so we need to ask the client for them.
226226 Right (Just missingDeps) -> UploadEntitiesFailure $ Share. UploadEntitiesError'NeedDependencies (NeedDependencies missingDeps)
227+ where
228+ finalizeResponse :: Either UploadEntitiesResponse UploadEntitiesResponse -> WebApp UploadEntitiesResponse
229+ finalizeResponse result = case either id id result of
230+ success@ (UploadEntitiesSuccess ) -> pure success
231+ failure@ (UploadEntitiesFailure err) -> do
232+ -- Report the error, but return it to the client as well.
233+ reportError err
234+ pure failure
227235
228236-- | Insert entities to the user's codebase (either temp storage or main), returning the hashes of any missing dependencies
229237-- we still need from the client.
You can’t perform that action at this time.
0 commit comments