Skip to content

Commit 897bcd8

Browse files
author
Alexandra Shubenko
committed
cleanup sqlite variables
1 parent 4edf404 commit 897bcd8

4 files changed

Lines changed: 201 additions & 209 deletions

File tree

Lines changed: 198 additions & 196 deletions
Original file line numberDiff line numberDiff line change
@@ -1,196 +1,198 @@
1-
//<?php
2-
// ToDO: Remove this file
3-
//namespace headstart\persistence;
4-
//
5-
///**
6-
// * Description of SQLitePersistence
7-
// *
8-
// * @author pkraker
9-
// */
10-
//require_once 'Persistence.php';
11-
//
12-
//class SQLitePersistence implements Persistence
13-
//{
14-
//
15-
// protected $db;
16-
//
17-
// public function __construct($db) {
18-
// try {
19-
// $this->db = new \PDO('sqlite:' . $db);
20-
// $this->db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
21-
// } catch (PDOException $e) {
22-
// echo 'Connection failed: ' . $e->getMessage();
23-
// }
24-
// }
25-
//
26-
// public function createTables() {
27-
// $this->db->exec("CREATE TABLE IF NOT EXISTS 'revisions' (
28-
// 'rev_id' INTEGER NOT NULL,
29-
// 'rev_vis' TEXT NOT NULL,
30-
// 'vis_query' TEXT,
31-
// 'rev_user' TEXT,
32-
// 'rev_timestamp' NUMERIC,
33-
// 'rev_comment' TEXT,
34-
// 'rev_data' TEXT,
35-
// PRIMARY KEY(rev_id, rev_vis),
36-
// FOREIGN KEY('vis_query') REFERENCES visualizations (vis_clean_query),
37-
// FOREIGN KEY('rev_id') REFERENCES revisions (vis_latest)
38-
// )");
39-
//
40-
// $this->db->exec("CREATE TABLE IF NOT EXISTS 'visualizations' (
41-
// 'vis_id' TEXT NOT NULL UNIQUE,
42-
// 'vis_query' TEXT,
43-
// 'vis_clean_query' TEXT,
44-
// 'vis_title' TEXT,
45-
// 'vis_latest' INTEGER,
46-
// 'vis_params' TEXT,
47-
// PRIMARY KEY(vis_id)
48-
// )");
49-
// }
50-
//
51-
// public function createVisualization($vis_id, $vis_title, $data, $vis_clean_query = null, $vis_query = null, $params = null): void
52-
// {
53-
// //create entry in visualization and first revision
54-
//
55-
// $this->prepareAndExecute("INSERT INTO visualizations (vis_id, vis_query, vis_clean_query, vis_title, vis_params) "
56-
// . "VALUES (?, ?, ?, ?, ?)"
57-
// , array($vis_id, $vis_query, $vis_clean_query, $vis_title, $params));
58-
//
59-
// $this->writeRevision($vis_id, $data, $rev_id = 1);
60-
// }
61-
//
62-
// public function existsVisualization($vis_id): array|bool
63-
// {
64-
// $result = $this->prepareExecuteAndReturnResult(
65-
// "SELECT EXISTS(SELECT 1 FROM visualizations WHERE vis_id=?)"
66-
// , array($vis_id)
67-
// , $first = true);
68-
//
69-
// return $result[0];
70-
// }
71-
//
72-
// public function getLastVersion($vis_id, $details = false, $context = false): array|bool
73-
// {
74-
// return $this->getRevision($vis_id, null, $details, $context);
75-
// }
76-
//
77-
// public function getRevision($vis_id, $rev_id, $details = false, $context = false): array|bool
78-
// {
79-
//
80-
// $id = ($rev_id == null)?("revisions.rev_id"):("?");
81-
// $array = ($rev_id == null)?(array(addslashes($vis_id))):(array(addslashes($vis_id), $rev_id));
82-
// $return_fields = "";
83-
// if($context === false) {
84-
// $return_fields = ($details==true)?("revisions.*"):("revisions.rev_data");
85-
// } else {
86-
// $return_fields = "revisions.rev_vis, revisions.vis_query, visualizations.vis_title, "
87-
// . "revisions.rev_timestamp, visualizations.vis_params, revisions.rev_data";
88-
// }
89-
//
90-
// $result = $this->prepareExecuteAndReturnResult("SELECT $return_fields FROM revisions, visualizations
91-
// WHERE visualizations.vis_id = ?
92-
// AND visualizations.vis_id = revisions.rev_vis
93-
// AND visualizations.vis_latest =" . $id
94-
// , $array, (!$details && !$context));
95-
//
96-
// return $result;
97-
// }
98-
//
99-
// public function getContext($vis_id): array
100-
// {
101-
// $return_fields = "revisions.rev_vis, revisions.vis_query, visualizations.vis_title, "
102-
// . "revisions.rev_timestamp, visualizations.vis_params";
103-
//
104-
// $result = $this->prepareExecuteAndReturnResult("SELECT $return_fields FROM revisions, visualizations
105-
// WHERE visualizations.vis_id = ?
106-
// AND visualizations.vis_id = revisions.rev_vis
107-
// AND visualizations.vis_latest = revisions.rev_id"
108-
// , array($vis_id));
109-
//
110-
// return $result;
111-
// }
112-
//
113-
// public function getLatestRevisions($limit = 30, $details = false): array
114-
// {
115-
//
116-
// $count_query = $this->prepareExecuteAndReturnResult("SELECT Count(*) FROM revisions", array(), $first = true);
117-
// $count = $count_query[0];
118-
// $start_index = $count - $limit;
119-
//
120-
// $return_fields = "revisions.rev_vis, revisions.rev_timestamp, revisions.vis_query, visualizations.vis_title";
121-
// $return_fields .= ($details==true)?(", revisions.rev_data"):("");
122-
//
123-
// $result = $this->prepareExecuteAndReturnResult("SELECT $return_fields FROM revisions, visualizations
124-
// WHERE visualizations.vis_id = revisions.rev_vis
125-
// LIMIT ?, ?"
126-
// , array($start_index, $limit), $first = false);
127-
//
128-
// return $result;
129-
// }
130-
//
131-
// public function writeRevision($vis_id, $data, $rev_id = null): void
132-
// {
133-
//
134-
// $rev = $rev_id;
135-
//
136-
// if($rev == null) {
137-
// $ver = $this->prepareExecuteAndReturnResult("SELECT vis_latest FROM visualizations WHERE vis_id=?",
138-
// array($vis_id),
139-
// $first = true);
140-
// $rev = $ver[0] + 1;
141-
// }
142-
//
143-
// $query = $this->prepareExecuteAndReturnResult("SELECT vis_clean_query FROM visualizations WHERE vis_id=?",
144-
// array($vis_id),
145-
// $first = true);
146-
//
147-
// $this->prepareAndExecute("INSERT INTO revisions (rev_id, rev_vis, rev_user, rev_timestamp, rev_comment, rev_data, vis_query)
148-
// VALUES (:rev_id, :rev_vis, :rev_user, :rev_timestamp, :rev_comment, :rev_data, :vis_query)"
149-
// , array(
150-
// ":rev_id" => $rev
151-
// ,":rev_vis" => $vis_id
152-
// ,":rev_user" => "System"
153-
// ,":rev_timestamp" => date("Y-m-d H:i:s", time())
154-
// ,":rev_comment" => "Visualization created"
155-
// ,":rev_data" => $data
156-
// ,":vis_query" => $query[0]
157-
// ));
158-
//
159-
// $this->prepareAndExecute("UPDATE visualizations SET vis_latest=? WHERE vis_id=?"
160-
// , array($rev, $vis_id));
161-
//
162-
// }
163-
//
164-
// protected function prepareAndExecute($stmt, $array) {
165-
// try {
166-
// $query = $this->db->prepare($stmt);
167-
// $result = $query->execute($array);
168-
// return array("status" => $result, "query" => $query);
169-
// } catch (PDOException $err) {
170-
// var_dump($err->getMessage());
171-
// die("..");
172-
// }
173-
// }
174-
//
175-
// private function prepareExecuteAndReturnResult($stmt, $array, $first = false) {
176-
// $result = $this->prepareAndExecute($stmt, $array);
177-
// $fetch_result = $result["query"]->fetchAll();
178-
//
179-
// if ($fetch_result == false) {
180-
// return false;
181-
// } else if ($first == true) {
182-
// return $fetch_result[0];
183-
// } else {
184-
// return $fetch_result;
185-
// }
186-
// }
187-
//
188-
// public function createID($string_array, $payload): string
189-
// {
190-
// $string_to_hash = implode(" ", $string_array);
191-
// $unique_id = md5($string_to_hash);
192-
//
193-
// return $unique_id;
194-
// }
195-
//
196-
//}
1+
<?php
2+
3+
namespace headstart\persistence;
4+
5+
// ToDo: Remove this file after cleunuping all references to it
6+
7+
/**
8+
* Description of SQLitePersistence
9+
*
10+
* @author pkraker
11+
*/
12+
require_once 'Persistence.php';
13+
14+
class SQLitePersistence implements Persistence
15+
{
16+
17+
protected $db;
18+
19+
public function __construct($db) {
20+
try {
21+
$this->db = new \PDO('sqlite:' . $db);
22+
$this->db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
23+
} catch (PDOException $e) {
24+
echo 'Connection failed: ' . $e->getMessage();
25+
}
26+
}
27+
28+
public function createTables() {
29+
$this->db->exec("CREATE TABLE IF NOT EXISTS 'revisions' (
30+
'rev_id' INTEGER NOT NULL,
31+
'rev_vis' TEXT NOT NULL,
32+
'vis_query' TEXT,
33+
'rev_user' TEXT,
34+
'rev_timestamp' NUMERIC,
35+
'rev_comment' TEXT,
36+
'rev_data' TEXT,
37+
PRIMARY KEY(rev_id, rev_vis),
38+
FOREIGN KEY('vis_query') REFERENCES visualizations (vis_clean_query),
39+
FOREIGN KEY('rev_id') REFERENCES revisions (vis_latest)
40+
)");
41+
42+
$this->db->exec("CREATE TABLE IF NOT EXISTS 'visualizations' (
43+
'vis_id' TEXT NOT NULL UNIQUE,
44+
'vis_query' TEXT,
45+
'vis_clean_query' TEXT,
46+
'vis_title' TEXT,
47+
'vis_latest' INTEGER,
48+
'vis_params' TEXT,
49+
PRIMARY KEY(vis_id)
50+
)");
51+
}
52+
53+
public function createVisualization($vis_id, $vis_title, $data, $vis_clean_query = null, $vis_query = null, $params = null): void
54+
{
55+
//create entry in visualization and first revision
56+
57+
$this->prepareAndExecute("INSERT INTO visualizations (vis_id, vis_query, vis_clean_query, vis_title, vis_params) "
58+
. "VALUES (?, ?, ?, ?, ?)"
59+
, array($vis_id, $vis_query, $vis_clean_query, $vis_title, $params));
60+
61+
$this->writeRevision($vis_id, $data, $rev_id = 1);
62+
}
63+
64+
public function existsVisualization($vis_id): array|bool
65+
{
66+
$result = $this->prepareExecuteAndReturnResult(
67+
"SELECT EXISTS(SELECT 1 FROM visualizations WHERE vis_id=?)"
68+
, array($vis_id)
69+
, $first = true);
70+
71+
return $result[0];
72+
}
73+
74+
public function getLastVersion($vis_id, $details = false, $context = false): array|bool
75+
{
76+
return $this->getRevision($vis_id, null, $details, $context);
77+
}
78+
79+
public function getRevision($vis_id, $rev_id, $details = false, $context = false): array|bool
80+
{
81+
82+
$id = ($rev_id == null)?("revisions.rev_id"):("?");
83+
$array = ($rev_id == null)?(array(addslashes($vis_id))):(array(addslashes($vis_id), $rev_id));
84+
$return_fields = "";
85+
if($context === false) {
86+
$return_fields = ($details==true)?("revisions.*"):("revisions.rev_data");
87+
} else {
88+
$return_fields = "revisions.rev_vis, revisions.vis_query, visualizations.vis_title, "
89+
. "revisions.rev_timestamp, visualizations.vis_params, revisions.rev_data";
90+
}
91+
92+
$result = $this->prepareExecuteAndReturnResult("SELECT $return_fields FROM revisions, visualizations
93+
WHERE visualizations.vis_id = ?
94+
AND visualizations.vis_id = revisions.rev_vis
95+
AND visualizations.vis_latest =" . $id
96+
, $array, (!$details && !$context));
97+
98+
return $result;
99+
}
100+
101+
public function getContext($vis_id): array
102+
{
103+
$return_fields = "revisions.rev_vis, revisions.vis_query, visualizations.vis_title, "
104+
. "revisions.rev_timestamp, visualizations.vis_params";
105+
106+
$result = $this->prepareExecuteAndReturnResult("SELECT $return_fields FROM revisions, visualizations
107+
WHERE visualizations.vis_id = ?
108+
AND visualizations.vis_id = revisions.rev_vis
109+
AND visualizations.vis_latest = revisions.rev_id"
110+
, array($vis_id));
111+
112+
return $result;
113+
}
114+
115+
public function getLatestRevisions($limit = 30, $details = false): array
116+
{
117+
118+
$count_query = $this->prepareExecuteAndReturnResult("SELECT Count(*) FROM revisions", array(), $first = true);
119+
$count = $count_query[0];
120+
$start_index = $count - $limit;
121+
122+
$return_fields = "revisions.rev_vis, revisions.rev_timestamp, revisions.vis_query, visualizations.vis_title";
123+
$return_fields .= ($details==true)?(", revisions.rev_data"):("");
124+
125+
$result = $this->prepareExecuteAndReturnResult("SELECT $return_fields FROM revisions, visualizations
126+
WHERE visualizations.vis_id = revisions.rev_vis
127+
LIMIT ?, ?"
128+
, array($start_index, $limit), $first = false);
129+
130+
return $result;
131+
}
132+
133+
public function writeRevision($vis_id, $data, $rev_id = null): void
134+
{
135+
136+
$rev = $rev_id;
137+
138+
if($rev == null) {
139+
$ver = $this->prepareExecuteAndReturnResult("SELECT vis_latest FROM visualizations WHERE vis_id=?",
140+
array($vis_id),
141+
$first = true);
142+
$rev = $ver[0] + 1;
143+
}
144+
145+
$query = $this->prepareExecuteAndReturnResult("SELECT vis_clean_query FROM visualizations WHERE vis_id=?",
146+
array($vis_id),
147+
$first = true);
148+
149+
$this->prepareAndExecute("INSERT INTO revisions (rev_id, rev_vis, rev_user, rev_timestamp, rev_comment, rev_data, vis_query)
150+
VALUES (:rev_id, :rev_vis, :rev_user, :rev_timestamp, :rev_comment, :rev_data, :vis_query)"
151+
, array(
152+
":rev_id" => $rev
153+
,":rev_vis" => $vis_id
154+
,":rev_user" => "System"
155+
,":rev_timestamp" => date("Y-m-d H:i:s", time())
156+
,":rev_comment" => "Visualization created"
157+
,":rev_data" => $data
158+
,":vis_query" => $query[0]
159+
));
160+
161+
$this->prepareAndExecute("UPDATE visualizations SET vis_latest=? WHERE vis_id=?"
162+
, array($rev, $vis_id));
163+
164+
}
165+
166+
protected function prepareAndExecute($stmt, $array) {
167+
try {
168+
$query = $this->db->prepare($stmt);
169+
$result = $query->execute($array);
170+
return array("status" => $result, "query" => $query);
171+
} catch (PDOException $err) {
172+
var_dump($err->getMessage());
173+
die("..");
174+
}
175+
}
176+
177+
private function prepareExecuteAndReturnResult($stmt, $array, $first = false) {
178+
$result = $this->prepareAndExecute($stmt, $array);
179+
$fetch_result = $result["query"]->fetchAll();
180+
181+
if ($fetch_result == false) {
182+
return false;
183+
} else if ($first == true) {
184+
return $fetch_result[0];
185+
} else {
186+
return $fetch_result;
187+
}
188+
}
189+
190+
public function createID($string_array, $payload): string
191+
{
192+
$string_to_hash = implode(" ", $string_array);
193+
$unique_id = md5($string_to_hash);
194+
195+
return $unique_id;
196+
}
197+
198+
}

0 commit comments

Comments
 (0)