@@ -6,6 +6,8 @@ export abstract class TaskStorable extends TaskBase {
66 // overwrite these for store key customize
77 static readonly taskPrefix : string = 'Task:'
88 static readonly taskPrefixDone : string = 'Done-Task:'
9+ static readonly taskTtl : number | undefined = undefined
10+ static readonly taskTtlDone : number | undefined = undefined
911
1012 getTaskPrefix ( ) : string {
1113 return ( this . constructor as typeof TaskStorable ) . taskPrefix
@@ -15,10 +17,18 @@ export abstract class TaskStorable extends TaskBase {
1517 return ( this . constructor as typeof TaskStorable ) . taskPrefixDone
1618 }
1719
20+ getTaskTtl ( ) : number | undefined {
21+ return ( this . constructor as typeof TaskStorable ) . taskTtl
22+ }
23+
24+ getTaskTtlDone ( ) : number | undefined {
25+ return ( this . constructor as typeof TaskStorable ) . taskTtlDone
26+ }
27+
1828 static async _load < T extends TaskStorable > ( this : Constructor < T > , sm : StoreManager ) : Promise < T > {
1929 const instance = new this ( )
2030 // get all task keys
21- const keys = await sm . keys ( instance . getTaskPrefix ( ) + '*' , true )
31+ const keys = await sm . keys ( ` ${ instance . getTaskPrefix ( ) } *` , true )
2232 // get the first task (del when finish)
2333 const serializedTask : string = ( await sm . get ( keys [ 0 ] ) ) ! // never undefined ensured by keys isWait=true
2434
@@ -30,15 +40,15 @@ export abstract class TaskStorable extends TaskBase {
3040 }
3141
3242 async save ( sm : StoreManager ) {
33- await sm . set ( this . getTaskPrefix ( ) + this . toKey ( ) , this . toString ( ) )
43+ await sm . set ( this . getTaskPrefix ( ) + this . toKey ( ) , this . toString ( ) , this . getTaskTtl ( ) )
3444 }
3545
3646 async remove ( sm : StoreManager ) {
3747 await sm . del ( this . getTaskPrefix ( ) + this . toKey ( ) )
3848 }
3949
4050 async done ( sm : StoreManager ) {
41- await sm . set ( this . getTaskPrefixDone ( ) + this . toKey ( ) , this . toString ( ) )
51+ await sm . set ( this . getTaskPrefixDone ( ) + this . toKey ( ) , this . toString ( ) , this . getTaskTtlDone ( ) )
4252 await this . remove ( sm )
4353 }
4454}
0 commit comments