summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2019-12-02 02:05:53 -0500
committerJune McEnroe <june@causal.agency>2019-12-02 02:06:10 -0500
commit926138b463fff770cf5fbb4438853d535205da2b (patch)
treeb55ab230c7c033a9033c1dffcbb19dbb197c6b24
parentImplement DB initialization and migration (diff)
downloadlitterbox-926138b463fff770cf5fbb4438853d535205da2b.tar.gz
litterbox-926138b463fff770cf5fbb4438853d535205da2b.zip
Enable foreign key enforcement
Diffstat (limited to '')
-rw-r--r--database.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/database.h b/database.h
index 290564e..b98721b 100644
--- a/database.h
+++ b/database.h
@@ -47,14 +47,19 @@ static inline sqlite3 *dbOpen(char *path, int flags) {
 		if (error && errno != EEXIST) err(EX_CANTCREAT, "%s", path);
 		*base = '/';
 	}
+
 	sqlite3 *db;
 	int error = sqlite3_open_v2(path, &db, flags, NULL);
-	if (!error) return db;
 	if (error == SQLITE_CANTOPEN) {
 		sqlite3_close(db);
 		return NULL;
 	}
-	errx(EX_NOINPUT, "%s: %s", path, sqlite3_errmsg(db));
+	if (error) errx(EX_NOINPUT, "%s: %s", path, sqlite3_errmsg(db));
+
+	error = sqlite3_exec(db, "PRAGMA foreign_keys = true;", NULL, NULL, NULL);
+	if (error) errx(EX_SOFTWARE, "sqlite3_exec: %s", sqlite3_errmsg(db));
+
+	return db;
 }
 
 static inline sqlite3 *dbFind(int flags) {
/books.txt?id=c55b3ef5b89b23869d14aece3e7147b74a82bd93&follow=1'>Add The Book of EttaJune McEnroe 2019-12-21Revert "Add first working version of imbox"June McEnroe Moved to <https://git.causal.agency/imbox>. This reverts commit 7ff5f3fd826e313ce8353a532bdfa4989dc946dc. 2019-12-21Add first working version of imboxJune McEnroe 2019-12-20Respect mailmap in gl pretty formatJune McEnroe 2019-12-20Set LANG in cgit filtersJune McEnroe ttpre needs to know about UTF-8 too so it can bold/italic non-ASCII chars. 2019-12-20Source .editrc before applying -v or -eJune McEnroe Otherwise a bind -v in .editrc will take precedence and overwrite the ^I binding for sh-complete. 2019-12-20Disable signing commitsJune McEnroe Why did I ever turn this on? This gets me nothing but inconvenience. RIP to all the wasted bytes in my git repos. 2019-12-19Ignore about-filterJune McEnroe 2019-12-19Fix matching make tags with no sourcesJune McEnroe 2019-12-19Avoid matching := assignments as tagsJune McEnroe 2019-12-18Hide line numbers when rendering mdocJune McEnroe Hack: output an extra <td> after rendering mdoc so that line numbers can be hidden based on there being three. This required splitting source-filter and about-filter since on about pages there is no table. 2019-12-18Customize cgit CSSJune McEnroe 2019-12-18Use :target rather than :focus pseudo-classJune McEnroe :target persists after you click on something else. 2019-12-18Copy cgit auxiliary binaries properlyJune McEnroe 2019-12-18Add git.causal.agency cgit configJune McEnroe 2019-12-18Bail from hi if input is binaryJune McEnroe NULs in the input cause an infinite loop in htmlEscape, not to mention regexes obviously not working, etc. 2019-12-16Post "cgit setup"June McEnroe