@@ -172,3 +172,63 @@ impl TaskMessage {
172172 }
173173 }
174174}
175+
176+ #[ derive( Debug , Clone , PartialEq ) ]
177+ pub struct TaskState {
178+ pub is_succeeded : bool ,
179+ }
180+
181+ #[ derive( Debug , Clone , Copy , PartialEq ) ]
182+ pub enum DependentType {
183+ After = 0 ,
184+ Before = 1 ,
185+ }
186+
187+ #[ derive( Debug , Clone , PartialEq ) ]
188+ pub struct TaskDependent {
189+ pub ty : DependentType ,
190+ pub source : String ,
191+ pub target : String ,
192+ }
193+
194+ impl TaskDependent {
195+ pub fn new ( ty : DependentType , source : String , target : String ) -> Self {
196+ Self { ty, source, target }
197+ }
198+ }
199+
200+ mod kvapi_key_impl {
201+ use databend_common_meta_kvapi:: kvapi;
202+ use databend_common_meta_kvapi:: kvapi:: KeyError ;
203+
204+ use crate :: principal:: DependentType ;
205+ use crate :: principal:: TaskDependent ;
206+
207+ impl kvapi:: KeyCodec for TaskDependent {
208+ fn encode_key ( & self , b : kvapi:: KeyBuilder ) -> kvapi:: KeyBuilder {
209+ match self . ty {
210+ DependentType :: After => b. push_str ( "After" ) ,
211+ DependentType :: Before => b. push_str ( "Before" ) ,
212+ }
213+ . push_str ( self . source . as_str ( ) )
214+ . push_str ( self . target . as_str ( ) )
215+ }
216+
217+ fn decode_key ( parser : & mut kvapi:: KeyParser ) -> Result < Self , kvapi:: KeyError > {
218+ let ty = match parser. next_str ( ) ?. as_str ( ) {
219+ "After" => DependentType :: After ,
220+ "Before" => DependentType :: Before ,
221+ str => {
222+ return Err ( KeyError :: InvalidId {
223+ s : str. to_string ( ) ,
224+ reason : "Invalid Dependent Type" . to_string ( ) ,
225+ } )
226+ }
227+ } ;
228+ let source = parser. next_str ( ) ?;
229+ let target = parser. next_str ( ) ?;
230+
231+ Ok ( Self { ty, source, target } )
232+ }
233+ }
234+ }
0 commit comments