xref: /plugin/sqlite/QuerySaver.php (revision 3a56750b42e05745f84fd97217f7133805e622eb)
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