@@ -71,33 +71,40 @@ impl MessageWithFields for WorkerCreateView {
7171}
7272
7373#[ derive( Debug , Clone , Serialize , Deserialize ) ]
74- pub struct WorkerGetView ( pub WorkerMetadataView ) ;
74+ pub struct WorkerGetView {
75+ pub metadata : WorkerMetadataView ,
76+ pub precise : bool ,
77+ }
7578
76- impl From < WorkerMetadata > for WorkerGetView {
77- fn from ( value : WorkerMetadata ) -> Self {
78- WorkerMetadataView :: from ( value) . into ( )
79+ impl WorkerGetView {
80+ pub fn from_metadata ( metadata : WorkerMetadata , precise : bool ) -> Self {
81+ Self {
82+ metadata : WorkerMetadataView :: from ( metadata) ,
83+ precise,
84+ }
7985 }
80- }
8186
82- impl From < WorkerMetadataView > for WorkerGetView {
83- fn from ( value : WorkerMetadataView ) -> Self {
84- Self ( value)
87+ pub fn from_metadata_view ( metadata : WorkerMetadataView ) -> Self {
88+ Self {
89+ metadata,
90+ precise : false ,
91+ }
8592 }
8693}
8794
8895impl MessageWithFields for WorkerGetView {
8996 fn message ( & self ) -> String {
9097 format ! (
9198 "Got metadata for worker {}" ,
92- format_message_highlight( & self . 0 . worker_name)
99+ format_message_highlight( & self . metadata . worker_name)
93100 )
94101 }
95102
96103 fn fields ( & self ) -> Vec < ( String , String ) > {
97104 let mut fields = FieldsBuilder :: new ( ) ;
98105
99106 let mut update_history = String :: new ( ) ;
100- for update in & self . 0 . updates {
107+ for update in & self . metadata . updates {
101108 match update {
102109 UpdateRecord :: PendingUpdate ( update) => {
103110 let _ = writeln ! (
@@ -143,38 +150,65 @@ impl MessageWithFields for WorkerGetView {
143150 }
144151
145152 fields
146- . fmt_field ( "Component name" , & self . 0 . component_name , format_id)
147- . fmt_field ( "Component version" , & self . 0 . component_version , format_id)
148- . fmt_field ( "Worker name" , & self . 0 . worker_name , format_main_id)
149- . field ( "Created at" , & self . 0 . created_at )
150- . fmt_field ( "Component size" , & self . 0 . component_size , format_binary_size)
153+ . fmt_field ( "Component name" , & self . metadata . component_name , format_id)
154+ . fmt_field (
155+ "Component version" ,
156+ & self . metadata . component_version ,
157+ format_id,
158+ )
159+ . fmt_field ( "Worker name" , & self . metadata . worker_name , format_main_id)
160+ . field ( "Created at" , & self . metadata . created_at )
161+ . fmt_field (
162+ "Component size" ,
163+ & self . metadata . component_size ,
164+ format_binary_size,
165+ )
151166 . fmt_field (
152167 "Total linear memory size" ,
153- & self . 0 . total_linear_memory_size ,
168+ & self . metadata . total_linear_memory_size ,
154169 format_binary_size,
155170 )
156- . fmt_field_optional ( "Arguments" , & self . 0 . args , !self . 0 . args . is_empty ( ) , |args| {
157- args. join ( " " )
158- } )
171+ . fmt_field_optional (
172+ "Arguments" ,
173+ & self . metadata . args ,
174+ !self . metadata . args . is_empty ( ) ,
175+ |args| args. join ( " " ) ,
176+ )
159177 . fmt_field_optional (
160178 "Environment variables" ,
161- & self . 0 . env ,
162- !self . 0 . env . is_empty ( ) ,
179+ & self . metadata . env ,
180+ !self . metadata . env . is_empty ( ) ,
163181 |env| {
164182 env. iter ( )
165183 . map ( |( k, v) | format ! ( "{}={}" , k, v. bold( ) ) )
166184 . join ( ";" )
167185 } ,
168186 )
169- . fmt_field ( "Status" , & self . 0 . status , format_status)
170- . fmt_field ( "Retry count" , & self . 0 . retry_count , format_retry_count)
187+ . fmt_field_optional ( "Status" , & self . metadata . status , self . precise , format_status)
188+ . fmt_field_optional (
189+ "Retry count" ,
190+ & self . metadata . retry_count ,
191+ self . precise ,
192+ format_retry_count,
193+ )
171194 . fmt_field_optional (
172195 "Pending invocation count" ,
173- & self . 0 . pending_invocation_count ,
174- self . 0 . pending_invocation_count > 0 ,
196+ & self . metadata . pending_invocation_count ,
197+ self . metadata . pending_invocation_count > 0 ,
175198 |n| n. to_string ( ) ,
176199 )
177- . fmt_field_option ( "Last error" , & self . 0 . last_error , |err| format_stack ( err) ) ;
200+ . fmt_field_optional (
201+ "Last error" ,
202+ & self . metadata . last_error ,
203+ self . metadata . last_error . is_some ( ) && self . precise ,
204+ |err| format_stack ( err. as_ref ( ) . unwrap ( ) ) ,
205+ )
206+ . fmt_field_optional (
207+ "WARNING" ,
208+ "The presented worker metadata may not be up-to-date" ,
209+ !self . precise ,
210+ format_warn,
211+ ) ;
178212
179213 fields. build ( )
180214 }
0 commit comments