[aur-dev] [RFC] aurjson: add result count to JSON result
Dave Reisner
d at falconindy.com
Wed Nov 2 16:52:02 EDT 2011
On Wed, Nov 02, 2011 at 09:17:47PM +0100, Lukas Fleischer wrote:
> On Tue, Oct 25, 2011 at 06:39:52PM -0400, Dave Reisner wrote:
> > We already ask for the result count, but only use it as a basis for testing
> > query success or failure. Add the value to the JSON reply.
> >
> > Signed-off-by: Dave Reisner <dreisner at archlinux.org>
> > ---
> > I call this an RFC because:
> >
> > a) I don't have a test environment setup
> > b) I don't know PHP
> >
> > ...but I really like the idea of knowing ahead of time how many results you're
> > about to receive.
>
> Just tested it, seems to work! Looks fine to me, also :)
>
> Is there any use case for this yet? Just out of curiosity...
>
Not yet. I guess I had 2 thoughts:
1) folks like me who enjoy pain (C) can use this for a little
optimization and "plan head" in terms of memory allocation.
2) I think its a bit strange that 0 results is considered an error. If
we had a result count in the JSON reply, we'd be able to change this.
d
> >
> > web/lib/aurjson.class.php | 11 ++++++-----
> > 1 files changed, 6 insertions(+), 5 deletions(-)
> >
> > diff --git a/web/lib/aurjson.class.php b/web/lib/aurjson.class.php
> > index 234a3c4..23eb854 100644
> > --- a/web/lib/aurjson.class.php
> > +++ b/web/lib/aurjson.class.php
> > @@ -103,7 +103,7 @@ class AurJSON {
> > private function json_error($msg) {
> > // set content type header to app/json
> > header('content-type: application/json');
> > - return $this->json_results('error', $msg);
> > + return $this->json_results('error', 0, $msg);
> > }
> >
> > /**
> > @@ -112,8 +112,8 @@ class AurJSON {
> > * @param $data The result data to return
> > * @return mixed A json formatted result response.
> > **/
> > - private function json_results($type, $data) {
> > - return json_encode( array('type' => $type, 'results' => $data) );
> > + private function json_results($type, $count, $data) {
> > + return json_encode( array('type' => $type, 'resultcount' => $count, 'results' => $data) );
> > }
> >
> > private function process_query($type, $where_condition) {
> > @@ -124,7 +124,8 @@ class AurJSON {
> > "WHERE ${where_condition}";
> > $result = db_query($query, $this->dbh);
> >
> > - if ( $result && (mysql_num_rows($result) > 0) ) {
> > + $resultcount = mysql_num_rows($result);
> > + if ( $result && $resultcount > 0 ) {
> > $search_data = array();
> > while ( $row = mysql_fetch_assoc($result) ) {
> > $name = $row['Name'];
> > @@ -148,7 +149,7 @@ class AurJSON {
> > }
> >
> > mysql_free_result($result);
> > - return $this->json_results($type, $search_data);
> > + return $this->json_results($type, $resultcount, $search_data);
> > }
> > else {
> > return $this->json_error('No results found');
> > --
> > 1.7.7.1
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://mailman.archlinux.org/pipermail/aur-dev/attachments/20111102/f1b6900a/attachment-0001.asc>
More information about the aur-dev
mailing list