summary refs log tree commit diff homepage
path: root/hybring.cr
diff options
context:
space:
mode:
Diffstat (limited to 'hybring.cr')
-rw-r--r--hybring.cr34
1 files changed, 34 insertions, 0 deletions
diff --git a/hybring.cr b/hybring.cr
new file mode 100644
index 0000000..220559f
--- /dev/null
+++ b/hybring.cr
@@ -0,0 +1,34 @@
+# Hybrid web ring
+# Copyright (C) 2023  Nguyễn Gia Phong
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+@[Link("sqlite3")]
+lib SQLite
+  type Database = Void*
+  type Statement = Void*
+  fun open = sqlite3_open(filename : LibC::Char*, db : Database*) : LibC::Int
+  fun prepare = sqlite3_prepare(db : Database, query : LibC::Char*,
+                                length : LibC::Int, stmt : Statement*,
+                                query_tail : LibC::Char*)
+  fun close = sqlite3_close(db : Database) : LibC::Int
+end
+
+DB_INIT = "CREATE TABLE IF NOT EXISTS foo (id INTEGER PRIMARY KEY);";
+
+SQLite.open "foo.db", out db
+begin
+ensure
+  SQLite.close db
+end