@@ -18,13 +18,26 @@ const defaultHandleFn: HandleFn = () => {
18
18
const defaultToKeyFn : ToKeyFn = _ => randomStr ( 8 , alphabetHex )
19
19
export interface TaskFlowTTL { taskTtl : Milliseconds ; doneTtl : Milliseconds }
20
20
21
+ export interface TaskFlowParams {
22
+ context ?: Context
23
+ taskPrefix ?: Prefix
24
+ donePrefix ?: Prefix
25
+ taskTtl ?: Milliseconds
26
+ doneTtl ?: Milliseconds
27
+ cache ?: StoreManager
28
+ toKeyFn ?: ToKeyFn
29
+ handleFn ?: HandleFn
30
+ successFn ?: HandleResultFn
31
+ failFn ?: HandleResultFn
32
+ }
33
+
21
34
// TODO: add 'Failed-Task:' ?
22
35
export class TaskFlow implements Flow {
23
36
sm : StoreManager = new StoreManager ( memoryStore ( ) )
24
37
taskPrefix : Prefix = 'Task:'
25
38
donePrefix : Prefix = 'Done-Task:'
26
- taskTtl ? : Milliseconds
27
- doneTtl ? : Milliseconds
39
+ taskTtl : Milliseconds = 60 * 1000
40
+ doneTtl : Milliseconds = 60 * 1000
28
41
toKeyFn : ToKeyFn = defaultToKeyFn
29
42
handleFn : HandleFn = defaultHandleFn
30
43
successFn : HandleResultFn = defaultSuccessFn
@@ -39,7 +52,21 @@ export class TaskFlow implements Flow {
39
52
40
53
constructor (
41
54
private parentFlow : EventFlow ,
42
- ) { }
55
+ params ?: TaskFlowParams ,
56
+ ) {
57
+ params ?. context && this . context ( params ?. context )
58
+ const taskPrefix = params ?. taskPrefix ?? this . taskPrefix
59
+ const donePrefix = params ?. donePrefix ?? this . donePrefix
60
+ this . prefix ( taskPrefix , donePrefix )
61
+ const taskTtl = params ?. taskTtl ?? this . taskTtl
62
+ const doneTtl = params ?. doneTtl ?? this . doneTtl
63
+ this . ttl ( taskTtl , doneTtl )
64
+ params ?. cache && this . cache ( params ?. cache )
65
+ params ?. toKeyFn && this . key ( params ?. toKeyFn )
66
+ params ?. handleFn && this . handle ( params ?. handleFn )
67
+ params ?. successFn && this . success ( params ?. successFn )
68
+ params ?. failFn && this . fail ( params ?. failFn )
69
+ }
43
70
44
71
get middlewares ( ) {
45
72
return this . _middlewares
0 commit comments