11//! Collections are dynamic resources that refer to multiple resources.
22//! They are constructed using a [Query]
33use crate :: {
4+ agents:: ForAgent ,
45 errors:: AtomicResult ,
56 storelike:: { Query , ResourceCollection } ,
67 urls, Resource , Storelike , Value ,
@@ -108,7 +109,7 @@ impl CollectionBuilder {
108109 pub fn into_collection (
109110 self ,
110111 store : & impl Storelike ,
111- for_agent : Option < & str > ,
112+ for_agent : & ForAgent ,
112113 ) -> AtomicResult < Collection > {
113114 Collection :: collect_members ( store, self , for_agent)
114115 }
@@ -185,7 +186,7 @@ impl Collection {
185186 pub fn collect_members (
186187 store : & impl Storelike ,
187188 collection_builder : crate :: collections:: CollectionBuilder ,
188- for_agent : Option < & str > ,
189+ for_agent : & ForAgent ,
189190 ) -> AtomicResult < Collection > {
190191 if collection_builder. page_size < 1 {
191192 return Err ( "Page size must be greater than 0" . into ( ) ) ;
@@ -210,7 +211,7 @@ impl Collection {
210211 sort_desc : collection_builder. sort_desc ,
211212 include_external : collection_builder. include_external ,
212213 include_nested : collection_builder. include_nested ,
213- for_agent : for_agent. map ( |a| a . to_string ( ) ) ,
214+ for_agent : for_agent. clone ( ) ,
214215 } ;
215216
216217 let query_result = store. query ( & q) ?;
@@ -325,7 +326,7 @@ pub fn construct_collection_from_params(
325326 store : & impl Storelike ,
326327 query_params : url:: form_urlencoded:: Parse ,
327328 resource : & mut Resource ,
328- for_agent : Option < & str > ,
329+ for_agent : & ForAgent ,
329330) -> AtomicResult < Resource > {
330331 let mut sort_by = None ;
331332 let mut sort_desc = false ;
@@ -458,7 +459,8 @@ mod test {
458459 include_nested : false ,
459460 include_external : false ,
460461 } ;
461- let collection = Collection :: collect_members ( & store, collection_builder, None ) . unwrap ( ) ;
462+ let collection =
463+ Collection :: collect_members ( & store, collection_builder, & ForAgent :: Sudo ) . unwrap ( ) ;
462464 assert ! ( collection. members. contains( & urls:: PROPERTY . into( ) ) ) ;
463465 }
464466
@@ -478,7 +480,8 @@ mod test {
478480 include_nested : false ,
479481 include_external : false ,
480482 } ;
481- let collection = Collection :: collect_members ( & store, collection_builder, None ) . unwrap ( ) ;
483+ let collection =
484+ Collection :: collect_members ( & store, collection_builder, & ForAgent :: Sudo ) . unwrap ( ) ;
482485 assert ! ( collection. members. contains( & urls:: PROPERTY . into( ) ) ) ;
483486
484487 let resource_collection = & collection. to_resource ( & store) . unwrap ( ) ;
@@ -504,7 +507,8 @@ mod test {
504507 include_nested : true ,
505508 include_external : false ,
506509 } ;
507- let collection = Collection :: collect_members ( & store, collection_builder, None ) . unwrap ( ) ;
510+ let collection =
511+ Collection :: collect_members ( & store, collection_builder, & ForAgent :: Sudo ) . unwrap ( ) ;
508512 let first_resource = & collection. members_nested . clone ( ) . unwrap ( ) [ 0 ] ;
509513 assert ! ( first_resource. get_subject( ) . contains( "Agent" ) ) ;
510514
@@ -531,7 +535,7 @@ mod test {
531535 . get_resource_extended (
532536 & format ! ( "{}/collections" , store. get_server_url( ) ) ,
533537 false ,
534- None ,
538+ & ForAgent :: Public ,
535539 )
536540 . unwrap ( ) ;
537541 assert ! (
@@ -559,7 +563,11 @@ mod test {
559563 store. populate ( ) . unwrap ( ) ;
560564
561565 let collection_page_size = store
562- . get_resource_extended ( "https://atomicdata.dev/classes?page_size=1" , false , None )
566+ . get_resource_extended (
567+ "https://atomicdata.dev/classes?page_size=1" ,
568+ false ,
569+ & ForAgent :: Public ,
570+ )
563571 . unwrap ( ) ;
564572 assert ! (
565573 collection_page_size
@@ -572,7 +580,7 @@ mod test {
572580 . get_resource_extended (
573581 "https://atomicdata.dev/classes?current_page=2&page_size=1" ,
574582 false ,
575- None ,
583+ & ForAgent :: Public ,
576584 )
577585 . unwrap ( ) ;
578586 assert ! (
0 commit comments