1<?php 2 3namespace dokuwiki\plugin\sqlite; 4 5class QuerySaver 6{ 7 8 protected $db; 9 protected $upstream; 10 11 /** 12 * @param string $dbname The database the queries are saved for 13 */ 14 public function __construct($dbname) 15 { 16 $this->db = new SQLiteDB('sqlite', DOKU_PLUGIN . 'sqlite/db/'); 17 $this->upstream = $dbname; 18 } 19 20 /** 21 * Save a query 22 * 23 * @param string $name 24 * @param string $query 25 */ 26 public function saveQuery($name, $query) 27 { 28 $sql = 'INSERT INTO queries (db, name, sql) VALUES (?, ?, ?)'; 29 $this->db->exec($sql, [$this->upstream, $name, $query]); 30 } 31 32 /** 33 * Get a saved query 34 * 35 * @param string $name 36 * @return string The SQL query 37 */ 38 public function getQuery($name) 39 { 40 $sql = 'SELECT sql FROM queries WHERE db = ? AND name = ?'; 41 return $this->db->queryValue($sql, [$this->upstream, $name]); 42 } 43 44 /** 45 * Delete a saved query 46 * 47 * @param string $name 48 */ 49 public function deleteQuery($name) 50 { 51 $sql = 'DELETE FROM queries WHERE db = ? AND name = ?'; 52 $this->db->exec($sql, [$this->upstream, $name]); 53 } 54 55 /** 56 * Get all saved queries 57 * 58 * @return array 59 */ 60 public function getQueries() 61 { 62 $sql = 'SELECT name, sql FROM queries WHERE db = ?'; 63 return $this->db->queryAll($sql, [$this->upstream]); 64 } 65} 66