diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/18-database/output/sqlite3/scripts/data/allAuthors.sql | 7 | ||||
| -rw-r--r-- | examples/18-database/output/sqlite3/test.py | 45 | ||||
| -rw-r--r-- | examples/18-database/src/data.hob | 18 |
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..1ef2ece 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) on Data { +// return Data.authors +// .where($(author) => author.name = name); +//} |
