feat(transaction-log): more details about submission files
This commit is contained in:
parent
56e9212e65
commit
b9cc5b9970
@ -10,7 +10,7 @@ SubmissionEdit -- user uploads new version of their submissio
|
||||
user UserId Maybe -- track id, important for group submissions
|
||||
time UTCTime
|
||||
submission SubmissionId
|
||||
SubmissionFile -- files that are part of a submission
|
||||
SubmissionFile json -- files that are part of a submission
|
||||
submission SubmissionId
|
||||
title FilePath
|
||||
content FileContentReference Maybe
|
||||
@ -18,7 +18,7 @@ SubmissionFile -- files that are part of a submission
|
||||
isUpdate Bool -- is this the file updated by a corrector (original will always be retained)
|
||||
isDeletion Bool -- only set if isUpdate is also set, but file was deleted by corrector
|
||||
UniqueSubmissionFile submission title isUpdate
|
||||
deriving Show
|
||||
deriving Eq Ord Read Show
|
||||
SubmissionUser -- which submission belongs to whom
|
||||
user UserId
|
||||
submission SubmissionId
|
||||
|
||||
@ -90,12 +90,10 @@ data Transaction
|
||||
}
|
||||
|
||||
| TransactionSubmissionFileEdit
|
||||
{ transactionSubmissionFile :: SubmissionFileId
|
||||
, transactionSubmission :: SubmissionId
|
||||
{ transactionSubmissionFile :: Entity SubmissionFile
|
||||
}
|
||||
| TransactionSubmissionFileDelete
|
||||
{ transactionSubmissionFile :: SubmissionFileId
|
||||
, transactionSubmission :: SubmissionId
|
||||
{ transactionSubmissionFile :: Entity SubmissionFile
|
||||
}
|
||||
|
||||
| TransactionExamOfficeUserAdd
|
||||
|
||||
@ -602,15 +602,15 @@ sinkSubmission userId mExists isUpdate = do
|
||||
|
||||
when anyChanges $ do
|
||||
touchSubmission
|
||||
forM_ collidingFiles $ \(Entity sfId' _) -> lift $ do
|
||||
forM_ collidingFiles $ \sfEnt@(Entity sfId' _) -> lift $ do
|
||||
delete sfId'
|
||||
audit $ TransactionSubmissionFileDelete sfId' submissionId
|
||||
audit $ TransactionSubmissionFileDelete sfEnt
|
||||
lift $ if
|
||||
| matchesUnderlying
|
||||
, isUpdate
|
||||
-> return ()
|
||||
| otherwise -> do
|
||||
subFileId <- insert $
|
||||
subFile <- insertEntity $
|
||||
_FileReference # ( file
|
||||
, SubmissionFileResidual
|
||||
{ submissionFileResidualSubmission = submissionId
|
||||
@ -618,12 +618,12 @@ sinkSubmission userId mExists isUpdate = do
|
||||
, submissionFileResidualIsDeletion = False
|
||||
}
|
||||
)
|
||||
audit $ TransactionSubmissionFileEdit subFileId submissionId
|
||||
audit $ TransactionSubmissionFileEdit subFile
|
||||
when undoneDeletion $ do
|
||||
touchSubmission
|
||||
forM_ (filter (submissionFileIsDeletion . entityVal) collidingFiles) $ \(Entity sfId' _) -> lift $ do
|
||||
forM_ (filter (submissionFileIsDeletion . entityVal) collidingFiles) $ \sfEnt@(Entity sfId' _) -> lift $ do
|
||||
delete sfId'
|
||||
audit $ TransactionSubmissionFileDelete sfId' submissionId
|
||||
audit $ TransactionSubmissionFileDelete sfEnt
|
||||
|
||||
Right (submissionId', r) -> do
|
||||
$logDebugS "sinkSubmission" $ tshow submissionId'
|
||||
@ -731,19 +731,19 @@ sinkSubmission userId mExists isUpdate = do
|
||||
return sf
|
||||
|
||||
if
|
||||
| isUpdate -> forM_ missingFiles $ \(Entity sfId SubmissionFile{..}) -> do
|
||||
| isUpdate -> forM_ missingFiles $ \sfEnt@(Entity sfId SubmissionFile{..}) -> do
|
||||
shadowing <- existsBy $ UniqueSubmissionFile submissionFileSubmission submissionFileTitle False
|
||||
|
||||
if
|
||||
| not shadowing -> do
|
||||
delete sfId
|
||||
audit $ TransactionSubmissionFileDelete sfId submissionId
|
||||
audit $ TransactionSubmissionFileDelete sfEnt
|
||||
| submissionFileIsUpdate -> do
|
||||
update sfId [ SubmissionFileContent =. Nothing, SubmissionFileIsDeletion =. True ]
|
||||
audit $ TransactionSubmissionFileEdit sfId submissionId
|
||||
sfRec <- updateGet sfId [ SubmissionFileContent =. Nothing, SubmissionFileIsDeletion =. True ]
|
||||
audit . TransactionSubmissionFileEdit $ Entity sfId sfRec
|
||||
| otherwise -> do
|
||||
now <- liftIO getCurrentTime
|
||||
sfId' <- insert $ SubmissionFile
|
||||
sfEnt' <- insertEntity $ SubmissionFile
|
||||
{ submissionFileSubmission = submissionId
|
||||
, submissionFileTitle
|
||||
, submissionFileModified = now
|
||||
@ -751,16 +751,16 @@ sinkSubmission userId mExists isUpdate = do
|
||||
, submissionFileIsUpdate = True
|
||||
, submissionFileIsDeletion = True
|
||||
}
|
||||
audit $ TransactionSubmissionFileEdit sfId' submissionId
|
||||
audit $ TransactionSubmissionFileEdit sfEnt'
|
||||
| otherwise -> do
|
||||
shadowed <- selectKeysList
|
||||
shadowed <- selectList
|
||||
[ SubmissionFileSubmission ==. submissionId
|
||||
, SubmissionFileIsUpdate ==. False
|
||||
, SubmissionFileId <-. map entityKey missingFiles
|
||||
] []
|
||||
forM_ shadowed $ \sfId' -> do
|
||||
forM_ shadowed $ \sfEnt'@(Entity sfId' _) -> do
|
||||
delete sfId'
|
||||
audit $ TransactionSubmissionFileDelete sfId' submissionId
|
||||
audit $ TransactionSubmissionFileDelete sfEnt'
|
||||
|
||||
if
|
||||
| isUpdate
|
||||
|
||||
Loading…
Reference in New Issue
Block a user