-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstatement.phel
82 lines (75 loc) · 3.36 KB
/
statement.phel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
(ns phel\tests\statement
(:require phel\test :refer [deftest is])
(:require phel\pdo)
(:require phel\pdo\statement))
(deftest test-fetch-all
(let [conn (pdo/connect "sqlite::memory:")]
(is (= 0 (pdo/exec
conn
"create table t1 (id integer primary key autoincrement, name varchr(10))")))
(is (= 1 (pdo/exec
conn
"insert into t1 (name) values ('phel')")))
(is (= 1 (pdo/exec
conn
"insert into t1 (name) values ('php')")))
(let [stmt (pdo/query conn "select * from t1")]
(is (= [{:id 1 :name "phel"} {:id 2 :name "php"}] (statement/fetch-all stmt))))))
(deftest test-column-count
(let [conn (pdo/connect "sqlite::memory:")]
(is (= 0 (pdo/exec
conn
"create table t1 (id integer primary key autoincrement, name varchr(10))")))
(is (= 1 (pdo/exec
conn
"insert into t1 (name) values ('phel')")))
(let [stmt (pdo/query conn "select * from t1")]
(is (= 2 (statement/column-count stmt))))))
(deftest test-row-count
(let [conn (pdo/connect "sqlite::memory:")]
(is (= 0 (pdo/exec
conn
"create table t1 (id integer primary key autoincrement, name varchr(10))")))
(let [stmt (pdo/query conn "insert into t1 (name) values ('phel'), ('php')")]
(is (= 2 (statement/row-count stmt))))))
(deftest test-bind-value
(let [conn (pdo/connect "sqlite::memory:")]
(is (= 0 (pdo/exec
conn
"create table t1 (id integer primary key autoincrement, name varchr(10))")))
(is (= 1 (pdo/exec
conn
"insert into t1 (name) values ('phel')")))
(let [stmt (pdo/prepare conn "select * from t1 where id = :id")
stmt (statement/bind-value stmt :id 1)
stmt (statement/execute stmt)]
(is (= {:id 1 :name "phel"} (statement/fetch stmt))))))
(deftest test-bind-value-with-type
(let [conn (pdo/connect "sqlite::memory:")]
(is (= 0 (pdo/exec
conn
"create table t1 (id integer primary key autoincrement, name varchr(10))")))
(is (= 1 (pdo/exec
conn
"insert into t1 (name) values ('phel')")))
(let [stmt (pdo/prepare conn "select * from t1 where id = :id")
stmt (statement/bind-value stmt :id 1 (php/:: \PDO PARAM_INT))
stmt (statement/execute stmt)]
(is (= {:id 1 :name "phel"} (statement/fetch stmt))))
(let [stmt (pdo/prepare conn "select * from t1 where name = :name")
stmt (statement/bind-value stmt :name "phel" (php/:: \PDO PARAM_STR))
stmt (statement/execute stmt)]
(is (= {:id 1 :name "phel"} (statement/fetch stmt))))))
(deftest test-debug-dump-params
(let [conn (pdo/connect "sqlite::memory:")]
(is (= 0 (pdo/exec
conn
"create table t1 (id integer primary key autoincrement, name varchr(10))")))
(is (= 1 (pdo/exec
conn
"insert into t1 (name) values ('phel')")))
(let [stmt (pdo/prepare conn "select * from t1 where name = :name")
stmt (statement/bind-value stmt :name "phel" (php/:: \PDO PARAM_STR))
info (statement/debug-dump-params stmt)
lines (values (php-array-to-map (php/preg_split "/\r\n|\r|\n/" info)))]
(is (= "SQL: [35] select * from t1 where name = :name" (lines 0))))))