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