@@ -11,6 +11,7 @@ pub struct RepositoryListParam {
1111 pub limit : Option < i64 > ,
1212 pub offset : Option < i64 > ,
1313 pub category : Option < String > ,
14+ pub id : Option < Uuid > ,
1415}
1516#[ derive( Deserialize , Serialize ) ]
1617pub struct RepositoryListResult {
@@ -88,11 +89,11 @@ impl AppModule {
8889 let rf = parma. r#type . to_lowercase ( ) ;
8990 if rf == "code" {
9091 Some ( "Code" . to_string ( ) )
91- } else if rf == "data" {
92+ } else if rf == "data" {
9293 Some ( "Data" . to_string ( ) )
93- } else if rf == "model" {
94+ } else if rf == "model" {
9495 Some ( "Model" . to_string ( ) )
95- } else {
96+ } else {
9697 return Err ( anyhow:: anyhow!( "invalid rtype" ) ) ;
9798 }
9899 } ;
@@ -101,6 +102,9 @@ impl AppModule {
101102 if let Some ( ref rtype) = rtype {
102103 condition = condition. add ( repository:: Column :: Rtype . eq ( rtype) ) ;
103104 } ;
105+ if let Some ( ref uid) = parma. id {
106+ condition = condition. add ( repository:: Column :: Uid . eq ( uid. clone ( ) ) ) ;
107+ }
104108 let repos = repository:: Entity :: find ( )
105109 . filter ( condition)
106110 . order_by_desc ( repository:: Column :: CreatedAt )
@@ -114,24 +118,24 @@ impl AppModule {
114118 . filter ( users:: Column :: Uid . eq ( i. owner_uid ) )
115119 . one ( & self . read )
116120 . await ? {
117- Some ( user) => RepositoryListAuthor {
118- name : Some ( user. username ) ,
119- avatar : user. avatar ,
121+ Some ( user) => RepositoryListAuthor {
122+ name : Some ( user. username ) ,
123+ avatar : user. avatar ,
124+ address : None ,
125+ } ,
126+ None => match self . org_by_uid ( i. owner_uid ) . await {
127+ Ok ( org) => RepositoryListAuthor {
128+ name : Some ( org. name ) ,
129+ avatar : org. avatar ,
120130 address : None ,
121131 } ,
122- None => match self . org_by_uid ( i. owner_uid ) . await {
123- Ok ( org) => RepositoryListAuthor {
124- name : Some ( org. name ) ,
125- avatar : org. avatar ,
126- address : None ,
127- } ,
128- Err ( _) => RepositoryListAuthor {
129- name : None ,
130- avatar : None ,
131- address : None ,
132- } ,
132+ Err ( _) => RepositoryListAuthor {
133+ name : None ,
134+ avatar : None ,
135+ address : None ,
133136 } ,
134- } ;
137+ } ,
138+ } ;
135139 let model_info = RepositoryModelInfo {
136140 name : i. name ,
137141 version : None ,
@@ -154,25 +158,28 @@ impl AppModule {
154158 } ,
155159 ) ;
156160 }
157- let cond = if let Some ( ref rtype) = rtype && rtype != "all" {
161+ let total = if let Some ( _) = parma. id {
162+ let cond = if let Some ( ref rtype) = rtype && rtype != "all" {
158163 Condition :: all ( )
159164 . add ( repository:: Column :: IsPrivate . eq ( false ) )
160165 . add ( repository:: Column :: Rtype . eq ( rtype) )
161166 } else {
162167 Condition :: all ( )
163168 . add ( repository:: Column :: IsPrivate . eq ( false ) )
164169 } ;
165- let total = repository:: Entity :: find ( )
170+ repository:: Entity :: find ( )
166171 . filter ( cond)
167172 . count ( & self . read )
168- . await ?;
169- Ok ( json ! ( {
173+ . await ?
174+ } else {
175+ 1
176+ } ;
177+ Ok ( json ! ( {
170178 "data" : result,
171179 "limit" : parma. limit,
172180 "offset" : parma. offset,
173181 "total" : total,
174182 "type" : rtype,
175183 } ) )
176-
177184 }
178185}
0 commit comments