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