]> git.nbdom.net Git - nb.git/commitdiff
out handle limit
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Thu, 10 Nov 2016 22:03:39 +0000 (22:03 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Thu, 10 Nov 2016 22:03:39 +0000 (22:03 +0000)
lib/php/db.php

index 89c772ab9705b4992a68825a2ed25f9eef7541c2..6e122fdf0cf4069866cf695d5ef7e20437170b1c 100644 (file)
@@ -84,6 +84,21 @@ class Db extends nb {
     'delete' => 'table.delete',
   ];
 
+  const action_help = [
+    ['(db.)?help','This help'],
+    ['(db.)?ls','List databases from conf'],
+    ['(db.)?tables','List tables (name=* type=* count=1 engine=*)'],
+
+    ['(table.)?rows','Dump one table, use format='],
+    ['(table.)?fields','List fields'],
+    ['table.infos','Table infos (count(*). Type, ...)'],
+    ['table.sql','Get the sql source'],
+
+    ['(table.)?insert','Insert a record'],
+    ['(table.)?update','Update a record'],
+    ['(table.)?delete','Delete a record'],
+
+  ];
   # Web
   public $default_table;
   public $sort;
@@ -506,27 +521,27 @@ class Db extends nb {
   }
 
   public function out($rows,$head=[]) {
+
+    // Handle limit
+    if ($this->p('limit')) {
+
+      $limit = (int)$this->p('limit');
+      $i = empty($head) ? 1 : 0;
+
+      foreach ($rows as $k=>$v) {
+        if ($i>$limit) unset($rows[$k]);
+        $i++;
+      }
+
+    }
+
     $this->out->rows($this->p('format',$this->out->php_cli() ? 'csv' : 'table'),$rows,$head);
     return true;
   }
 
   public function action($action,$table=null) {
     #debug(($this->tables));
-    $available = [
-      ['(db.)?help','This help'],
-      ['(db.)?ls','List databases from conf'],
-      ['(db.)?tables','List tables (name=* type=* count=1 engine=*)'],
-
-      ['(table.)?rows','Dump one table, use format='],
-      ['(table.)?fields','List fields'],
-      ['table.infos','Table infos (count(*). Type, ...)'],
-      ['table.sql','Get the sql source'],
-
-      ['(table.)?insert','Insert a record'],
-      ['(table.)?update','Update a record'],
-      ['(table.)?delete','Delete a record'],
-
-    ];
+    $available = self::action_help;
     $actions = explode(',',$action);
     $this->pdef('format',($this->php_cli() ? 'csv' : ''));
     $rows = [];
@@ -571,6 +586,7 @@ class Db extends nb {
           $type = $this->p('type','');
           $name = $this->p('name','');
           $engine = $this->p('engine','');
+          $database = $this->p('database','');
 
           #var_dump ($this->tables());
 #foreach($this->tables as $t) debug($t->name.'='.$t->type);
@@ -582,6 +598,7 @@ class Db extends nb {
             if (!empty($type) and !$this->str_match($t->type,$type)) continue;
             if (!empty($count) and !$this->str_match($t->count,$count)) continue;
             if (!empty($engine) and !$this->str_match($t->engine,$engine)) continue;
+            if (!empty($database) and isset($t->database) and !$this->str_match($t->database,$database)) continue;
 
             $row = $t->status();
             if ($this->p('count')) $row['count'] = $t->status('count');