Use a minimum age of items to remove

In order to keep deleted items for a while, the periodic task can now
use a duration to only remove items with a certain age. This can be
used to ensure that a deleted item stays at least X days before it
will be removed from the database.

Refs: #347
This commit is contained in:
eikek
2021-08-15 12:28:42 +02:00
parent d136bb8166
commit f4a2b86ea8
27 changed files with 303 additions and 124 deletions

View File

@@ -22,7 +22,6 @@ import Comp.ClassifierSettingsForm
import Comp.Dropdown
import Comp.EmptyTrashForm
import Comp.MenuBar as MB
import Data.CalEvent
import Data.DropdownStyle as DS
import Data.Flags exposing (Flags)
import Data.Language exposing (Language)
@@ -54,11 +53,14 @@ type ClassifierResult
| ClassifierResultSubmitError String
| ClassifierResultOk
type EmptyTrashResult
= EmptyTrashResultInitial
| EmptyTrashResultHttpError Http.Error
| EmptyTrashResultSubmitError String
| EmptyTrashResultOk
| EmptyTrashResultInvalidForm
type FulltextReindexResult
= FulltextReindexInitial
@@ -79,7 +81,7 @@ init flags settings =
Comp.ClassifierSettingsForm.init flags settings.classifier
( em, ec ) =
Comp.EmptyTrashForm.init flags settings.emptyTrashSchedule
Comp.EmptyTrashForm.init flags settings.emptyTrash
in
( { langModel =
Comp.Dropdown.makeSingleList
@@ -101,24 +103,21 @@ init flags settings =
getSettings : Model -> Maybe CollectiveSettings
getSettings model =
Maybe.map
Maybe.map2
(\cls ->
{ language =
Comp.Dropdown.getSelected model.langModel
|> List.head
|> Maybe.map Data.Language.toIso3
|> Maybe.withDefault model.initSettings.language
, integrationEnabled = model.intEnabled
, classifier = cls
, emptyTrashSchedule =
Comp.EmptyTrashForm.getSettings model.emptyTrashModel
|> Maybe.withDefault Data.CalEvent.everyMonth
|> Data.CalEvent.makeEvent
}
)
(Comp.ClassifierSettingsForm.getSettings
model.classifierModel
\trash ->
{ language =
Comp.Dropdown.getSelected model.langModel
|> List.head
|> Maybe.map Data.Language.toIso3
|> Maybe.withDefault model.initSettings.language
, integrationEnabled = model.intEnabled
, classifier = cls
, emptyTrash = trash
}
)
(Comp.ClassifierSettingsForm.getSettings model.classifierModel)
(Comp.EmptyTrashForm.getSettings model.emptyTrashModel)
type Msg
@@ -233,8 +232,20 @@ update flags msg model =
( model, Api.startClassifier flags StartClassifierResp, Nothing )
StartEmptyTrashTask ->
( model, Api.startEmptyTrash flags StartEmptyTrashResp, Nothing )
case getSettings model of
Just settings ->
( model
, Api.startEmptyTrash flags
settings.emptyTrash
StartEmptyTrashResp
, Nothing
)
Nothing ->
( { model | startEmptyTrashResult = EmptyTrashResultInvalidForm }
, Cmd.none
, Nothing
)
StartClassifierResp (Ok br) ->
( { model
@@ -275,6 +286,7 @@ update flags msg model =
)
--- View2
@@ -471,6 +483,7 @@ renderClassifierResultMessage texts result =
, ( S.successMessage, isSuccess )
, ( "hidden", result == ClassifierResultInitial )
]
, class "ml-2"
]
[ case result of
ClassifierResultInitial ->
@@ -505,6 +518,7 @@ renderFulltextReindexResultMessage texts result =
FulltextReindexSubmitError m ->
text m
renderEmptyTrashResultMessage : Texts -> EmptyTrashResult -> Html msg
renderEmptyTrashResultMessage texts result =
let
@@ -525,6 +539,7 @@ renderEmptyTrashResultMessage texts result =
, ( S.successMessage, isSuccess )
, ( "hidden", result == EmptyTrashResultInitial )
]
, class "ml-2"
]
[ case result of
EmptyTrashResultInitial ->
@@ -538,4 +553,7 @@ renderEmptyTrashResultMessage texts result =
EmptyTrashResultSubmitError m ->
text m
EmptyTrashResultInvalidForm ->
text texts.emptyTrashStartInvalidForm
]