@@ -140,6 +140,10 @@ func TestSqliteIntegration(t *testing.T) {
140140 multiWithSetOnly (t , s )
141141 })
142142
143+ t .Run ("Delete with Prefix (actor state)" , func (t * testing.T ) {
144+ testDeleteWithPrefix (t , s )
145+ })
146+
143147 t .Run ("ttlExpireTime" , func (t * testing.T ) {
144148 getExpireTime (t , s )
145149 getBulkExpireTime (t , s )
@@ -610,6 +614,55 @@ func setItemWithNoKey(t *testing.T, s state.Store) {
610614 require .Error (t , err )
611615}
612616
617+ func testDeleteWithPrefix (t * testing.T , s state.Store ) {
618+ setReq1 := & state.SetRequest {
619+ Key : "mock-app-id||mock-actor-type||mock-actor-id||key0" ,
620+ }
621+
622+ setReq2 := & state.SetRequest {
623+ Key : "mock-app-id||mock-actor-type||mock-actor-id||key1" ,
624+ }
625+
626+ setReq3 := & state.SetRequest {
627+ Key : "mock-app-id||mock-actor-type||mock-actor-id||key2" ,
628+ }
629+
630+ setReq4 := & state.SetRequest {
631+ Key : "different-app-id||different-actor-type||different-actor-id||key0" ,
632+ }
633+
634+ delReq := state.DeleteWithPrefixRequest {
635+ Prefix : "mock-app-id||mock-actor-type||mock-actor-id" ,
636+ }
637+
638+ err := s .Set (context .Background (), setReq1 )
639+ require .NoError (t , err )
640+
641+ err = s .Set (context .Background (), setReq2 )
642+ require .NoError (t , err )
643+
644+ err = s .Set (context .Background (), setReq3 )
645+ require .NoError (t , err )
646+
647+ err = s .Set (context .Background (), setReq4 )
648+ require .NoError (t , err )
649+
650+ res , err := s .(state.DeleteWithPrefix ).DeleteWithPrefix (context .Background (), delReq )
651+ require .NoError (t , err )
652+ assert .Equal (t , int64 (3 ), res .Count )
653+
654+ delReq = state.DeleteWithPrefixRequest {
655+ Prefix : "different-app-id||different-actor-type||different-actor-id||" ,
656+ }
657+ res , err = s .(state.DeleteWithPrefix ).DeleteWithPrefix (context .Background (), delReq )
658+ require .NoError (t , err )
659+ assert .Equal (t , int64 (1 ), res .Count )
660+
661+ res , err = s .(state.DeleteWithPrefix ).DeleteWithPrefix (context .Background (), delReq )
662+ require .NoError (t , err )
663+ assert .Equal (t , int64 (0 ), res .Count )
664+ }
665+
613666func testSetItemWithInvalidTTL (t * testing.T , s state.Store ) {
614667 setReq := & state.SetRequest {
615668 Key : randomKey (),
0 commit comments