Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Add NOT NULL constraints to the db.
jlaffaye committed 14 years ago
commit 6a4c3649dcd9645da7a5bfc7d86b29a13642ef3c
parent e9a0d08
2 files changed +30 -17
modified libpkg/pkg_manifest.c
@@ -161,8 +161,12 @@ parse_mapping(struct pkg *pkg, yaml_node_pair_t *pair, yaml_document_t *document
								   val->data.scalar.value);
				} else if (type == PKG_FLATSIZE)
					pkg_setflatsize(pkg, strtoimax(val->data.scalar.value, NULL, 10));
-
				else
+
				else {
+
					if (val->data.scalar.value[val->data.scalar.length - 1] == '\n')
+
						val->data.scalar.value[val->data.scalar.length - 1] = '\0';
+

					pkg_set(pkg, type, val->data.scalar.value);
+
				}
			} else {
				parse_node(pkg, val, document, type);
			}
modified libpkg/pkgdb.c
@@ -124,23 +124,32 @@ pkgdb_init(sqlite3 *sdb)
	const char sql[] = ""
	"CREATE TABLE packages ("
		"id INTEGER PRIMARY KEY,"
-
		"origin TEXT UNIQUE,"
-
		"name TEXT,"
-
		"version TEXT,"
-
		"comment TEXT,"
-
		"desc TEXT,"
+
		"origin TEXT UNIQUE NOT NULL,"
+
		"name TEXT NOT NULL,"
+
		"version TEXT NOT NULL,"
+
		"category_id INTEGER REFERENCES categories(id) ON DELETE RESTRICT"
+
			" ON UPDATE CASCADE,"
+
		"comment TEXT NOT NULL,"
+
		"desc TEXT NOT NULL,"
		"mtree_id INTEGER REFERENCES mtree(id) ON DELETE RESTRICT"
			" ON UPDATE CASCADE,"
		"message TEXT,"
-
		"arch TEXT,"
-
		"osversion TEXT,"
-
		"maintainer TEXT,"
+
		"arch TEXT NOT NULL,"
+
		"osversion TEXT NOT NULL,"
+
		"maintainer TEXT NOT NULL,"
		"www TEXT,"
-
		"prefix TEXT,"
-
		"flatsize INTEGER,"
-
		"automatic INTEGER,"
+
		"prefix TEXT NOT NULL,"
+
		"flatsize INTEGER NOT NULL,"
+
		"automatic INTEGER NOT NULL,"
		"pkg_format_version INTEGER"
	");"
+
	"CREATE TABLE categories ("
+
		"id INTEGER PRIMARY KEY,"
+
		"name TEXT UNIQUE"
+
	");"
+
	"CREATE TRIGGER clean_categories AFTER DELETE ON packages BEGIN "
+
		"DELETE FROM categories WHERE id NOT IN (SELECT DISTINCT category_id FROM packages);"
+
	"END;"
	"CREATE TABLE mtree ("
		"id INTEGER PRIMARY KEY,"
		"content TEXT UNIQUE"
@@ -179,9 +188,9 @@ pkgdb_init(sqlite3 *sdb)
	");"
	"CREATE INDEX options_package ON options(package_id);"
	"CREATE TABLE deps ("
-
		"origin TEXT,"
-
		"name TEXT,"
-
		"version TEXT,"
+
		"origin TEXT NOT NULL,"
+
		"name TEXT NOT NULL,"
+
		"version TEXT NOT NULL,"
		"package_id INTEGER REFERENCES packages(id) ON DELETE CASCADE"
			" ON UPDATE CASCADE,"
		"PRIMARY KEY (package_id,origin)"
@@ -196,7 +205,7 @@ pkgdb_init(sqlite3 *sdb)
	");"
	"CREATE INDEX files_package ON files(package_id);"
	"CREATE TABLE conflicts ("
-
		"name TEXT,"
+
		"name TEXT NOT NULL,"
		"package_id INTEGER REFERENCES packages(id) ON DELETE CASCADE"
			" ON UPDATE CASCADE,"
		"PRIMARY KEY (package_id,name)"
@@ -204,7 +213,7 @@ pkgdb_init(sqlite3 *sdb)
	"CREATE INDEX conflicts_package ON conflicts(package_id);"
	"CREATE TABLE directories ("
		"id INTEGER PRIMARY KEY, "
-
		"path TEXT "
+
		"path TEXT NOT NULL"
	");"
	"CREATE TABLE pkg_dirs_assoc ("
		"package_id INTEGER REFERENCES packages(id) ON DELETE CASCADE"