@@ -12,24 +12,29 @@ import (
1212 "github.com/cosmos/cosmos-sdk/crypto/keyring"
1313)
1414
15+ // Client defines the interface for action operations
1516type Client interface {
1617 StartCascade (ctx context.Context , fileHash string , actionID string , filePath string , signedData string ) (string , error )
17-
18+ DeleteTask ( ctx context. Context , taskID string ) error
1819 GetTask (ctx context.Context , taskID string ) (* task.TaskEntry , bool )
19-
20- SubscribeToEvents (eventType event.EventType , handler event.Handler )
21-
22- SubscribeToAllEvents (handler event.Handler )
20+ SubscribeToEvents (ctx context.Context , eventType event.EventType , handler event.Handler )
21+ SubscribeToAllEvents (ctx context.Context , handler event.Handler )
2322}
2423
24+ // ClientImpl implements the Client interface
2525type ClientImpl struct {
2626 config config.Config
2727 taskManager task.Manager
2828 logger log.Logger
2929 keyring keyring.Keyring
3030}
3131
32+ // Verify interface compliance at compile time
33+ var _ Client = (* ClientImpl )(nil )
34+
35+ // NewClient creates a new action client
3236func NewClient (
37+ ctx context.Context ,
3338 config config.Config ,
3439 logger log.Logger ,
3540 keyring keyring.Keyring ,
@@ -38,7 +43,7 @@ func NewClient(
3843 logger = log .NewNoopLogger ()
3944 }
4045
41- taskManager , err := task .NewManager (config , logger , keyring )
46+ taskManager , err := task .NewManager (ctx , config , logger , keyring )
4247 if err != nil {
4348 return nil , fmt .Errorf ("failed to create task manager: %w" , err )
4449 }
@@ -51,69 +56,89 @@ func NewClient(
5156 }, nil
5257}
5358
54- func (ac * ClientImpl ) StartCascade (
59+ // StartCascade initiates a cascade operation
60+ func (c * ClientImpl ) StartCascade (
5561 ctx context.Context ,
56- fileHash string ,
57- actionID string ,
58- filePath string ,
59- signedData string ,
62+ fileHash string , // Hash of the file to process
63+ actionID string , // ID of the action to perform
64+ filePath string , // Path to the file on disk
65+ signedData string , // Optional signed authorization data
6066) (string , error ) {
61- ac .logger .Debug (ctx , "Starting cascade operation" ,
67+ c .logger .Debug (ctx , "Starting cascade operation" ,
6268 "fileHash" , fileHash ,
6369 "actionID" , actionID ,
6470 "filePath" , filePath ,
6571 )
6672
6773 if fileHash == "" {
68- ac .logger .Error (ctx , "Empty file hash provided" )
74+ c .logger .Error (ctx , "Empty file hash provided" )
6975 return "" , ErrEmptyFileHash
7076 }
7177 if actionID == "" {
72- ac .logger .Error (ctx , "Empty action ID provided" )
78+ c .logger .Error (ctx , "Empty action ID provided" )
7379 return "" , ErrEmptyActionID
7480 }
7581 if filePath == "" {
76- ac .logger .Error (ctx , "Empty file path provided" )
82+ c .logger .Error (ctx , "Empty file path provided" )
7783 return "" , ErrEmptyFilePath
7884 }
7985
80- taskID , err := ac .taskManager .CreateCascadeTask (ctx , fileHash , actionID , filePath , signedData )
86+ taskID , err := c .taskManager .CreateCascadeTask (ctx , fileHash , actionID , filePath , signedData )
8187 if err != nil {
82- ac .logger .Error (ctx , "Failed to create cascade task" , "error" , err )
88+ c .logger .Error (ctx , "Failed to create cascade task" , "error" , err )
8389 return "" , fmt .Errorf ("failed to create cascade task: %w" , err )
8490 }
8591
86- ac .logger .Info (ctx , "Cascade task created successfully" , "taskID" , taskID )
92+ c .logger .Info (ctx , "Cascade task created successfully" , "taskID" , taskID )
8793 return taskID , nil
8894}
8995
90- func (ac * ClientImpl ) GetTask (ctx context.Context , taskID string ) (* task.TaskEntry , bool ) {
91- ac .logger .Debug (ctx , "Getting task" , "taskID" , taskID )
92- task , found := ac .taskManager .GetTask (ctx , taskID )
96+ // GetTask retrieves a task by its ID
97+ func (c * ClientImpl ) GetTask (ctx context.Context , taskID string ) (* task.TaskEntry , bool ) {
98+ c .logger .Debug (ctx , "Getting task" , "taskID" , taskID )
99+ task , found := c .taskManager .GetTask (ctx , taskID )
93100 if ! found {
94- ac .logger .Debug (ctx , "Task not found" , "taskID" , taskID )
101+ c .logger .Debug (ctx , "Task not found" , "taskID" , taskID )
95102 } else {
96- ac .logger .Debug (ctx , "Task found" , "taskID" , taskID , "status" , task .Status )
103+ c .logger .Debug (ctx , "Task found" , "taskID" , taskID , "status" , task .Status )
97104 }
98105 return task , found
99106}
100107
108+ // DeleteTask removes a task by its ID
109+ func (c * ClientImpl ) DeleteTask (ctx context.Context , taskID string ) error {
110+ c .logger .Debug (ctx , "Deleting task" , "taskID" , taskID )
111+ if taskID == "" {
112+ c .logger .Error (ctx , "Empty task ID provided" )
113+ return fmt .Errorf ("task ID cannot be empty" )
114+ }
115+
116+ err := c .taskManager .DeleteTask (ctx , taskID )
117+ if err != nil {
118+ c .logger .Error (ctx , "Failed to delete task" , "taskID" , taskID , "error" , err )
119+ return fmt .Errorf ("failed to delete task: %w" , err )
120+ }
121+
122+ c .logger .Info (ctx , "Task deleted successfully" , "taskID" , taskID )
123+ return nil
124+ }
125+
101126// SubscribeToEvents registers a handler for specific event types
102- func (ac * ClientImpl ) SubscribeToEvents (eventType event.EventType , handler event.Handler ) {
103- ac .logger .Debug (context . Background () , "Subscribing to events via task manager" , "eventType" , eventType )
104- if ac .taskManager != nil {
105- ac .taskManager .SubscribeToEvents (eventType , handler )
127+ func (c * ClientImpl ) SubscribeToEvents (ctx context. Context , eventType event.EventType , handler event.Handler ) {
128+ c .logger .Debug (ctx , "Subscribing to events via task manager" , "eventType" , eventType )
129+ if c .taskManager != nil {
130+ c .taskManager .SubscribeToEvents (ctx , eventType , handler )
106131 } else {
107- ac .logger .Warn (context . Background () , "TaskManager is nil, cannot subscribe to events" )
132+ c .logger .Warn (ctx , "TaskManager is nil, cannot subscribe to events" )
108133 }
109134}
110135
111136// SubscribeToAllEvents registers a handler for all events
112- func (ac * ClientImpl ) SubscribeToAllEvents (handler event.Handler ) {
113- ac .logger .Debug (context . Background () , "Subscribing to all events via task manager" )
114- if ac .taskManager != nil {
115- ac .taskManager .SubscribeToAllEvents (handler )
137+ func (c * ClientImpl ) SubscribeToAllEvents (ctx context. Context , handler event.Handler ) {
138+ c .logger .Debug (ctx , "Subscribing to all events via task manager" )
139+ if c .taskManager != nil {
140+ c .taskManager .SubscribeToAllEvents (ctx , handler )
116141 } else {
117- ac .logger .Warn (context . Background () , "TaskManager is nil, cannot subscribe to all events" )
142+ c .logger .Warn (ctx , "TaskManager is nil, cannot subscribe to all events" )
118143 }
119144}
0 commit comments