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