summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/18-database/output/sqlite3/scripts/data/allAuthors.sql7
-rw-r--r--examples/18-database/output/sqlite3/test.py45
-rw-r--r--examples/18-database/src/data.hob18
3 files changed, 61 insertions, 9 deletions
diff --git a/examples/18-database/output/sqlite3/scripts/data/allAuthors.sql b/examples/18-database/output/sqlite3/scripts/data/allAuthors.sql
new file mode 100644
index 0000000..07aed9a
--- /dev/null
+++ b/examples/18-database/output/sqlite3/scripts/data/allAuthors.sql
@@ -0,0 +1,7 @@
+-- Generated by hobgoblin.
+
+SELECT
+ id AS id,
+ name AS name
+FROM authors
+ORDER BY id;
diff --git a/examples/18-database/output/sqlite3/test.py b/examples/18-database/output/sqlite3/test.py
new file mode 100644
index 0000000..b3c76c3
--- /dev/null
+++ b/examples/18-database/output/sqlite3/test.py
@@ -0,0 +1,45 @@
+import os.path
+import sqlite3
+import unittest
+
+
+class DataTestCase(unittest.TestCase):
+ def test_create(self):
+ sql_script = self._read_script("Data")
+
+ connection = sqlite3.connect(":memory:", autocommit=False)
+ cursor = connection.cursor()
+ cursor.executescript(sql_script)
+ connection.commit()
+
+ cursor.execute("INSERT INTO authors VALUES (1, 'Alice')")
+ cursor.execute("INSERT INTO authors VALUES (2, 'Bob')")
+ cursor.execute("INSERT INTO authors VALUES (3, 'Carol')")
+
+ cursor.execute("SELECT id, name FROM authors WHERE id > 1 ORDER BY id")
+ rows = cursor.fetchall()
+
+ self.assertEqual(rows, [(2, "Bob"), (3, "Carol")])
+
+ def test_query_all_authors(self):
+ create_script = self._read_script("Data")
+
+ connection = sqlite3.connect(":memory:", autocommit=False)
+ cursor = connection.cursor()
+ cursor.executescript(create_script)
+ connection.commit()
+
+ cursor.execute("INSERT INTO authors VALUES (1, 'Alice')")
+ cursor.execute("INSERT INTO authors VALUES (2, 'Bob')")
+ cursor.execute("INSERT INTO authors VALUES (3, 'Carol')")
+
+ select_query = self._read_script("allAuthors")
+ cursor.execute(select_query)
+ rows = cursor.fetchall()
+
+ self.assertEqual(rows, [(1, "Alice"), (2, "Bob"), (3, "Carol")])
+
+ def _read_script(self, name):
+ sql_script_path = os.path.join(os.path.dirname(__file__), "scripts/data", name + ".sql")
+ with open(sql_script_path, "rt", encoding="utf-8") as sql_script_file:
+ return sql_script_file.read()
diff --git a/examples/18-database/src/data.hob b/examples/18-database/src/data.hob
index a168821..f9910c1 100644
--- a/examples/18-database/src/data.hob
+++ b/examples/18-database/src/data.hob
@@ -8,13 +8,13 @@ databaseSchema Data {
row Author;
primaryKey id;
}
-//
-// query fetchAllStructs() {
-// select(structs)
-// }
-//
-// query fetchStructsByA(a: Int32) {
-// select(structs)
-// .where(structs.a = a)
-// }
}
+
+query allAuthors() {
+ return Data.authors;
+}
+
+//query authorsByName(name: String) {
+// return Data.authors
+// .where($(author) => author.name == name);
+//}