Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Add backwards compatibility view and triggers to local.sqlite schema.
Matthew Seaman committed 12 years ago
commit bca663a85d33f8f19a349cdf7009940b707c7e01
parent b5a535e93d7e28d15eb90ec7655417863e043682
2 files changed +42 -7
modified libpkg/pkgdb.c
@@ -648,6 +648,41 @@ pkgdb_init(sqlite3 *sdb)
		"AND package_id = old.package_id; "
	"END;"

+
	"CREATE VIEW scripts AS SELECT package_id, script, type"
+
                " FROM pkg_script ps JOIN script s"
+
                " ON (ps.script_id = s.script_id);"
+
        "CREATE TRIGGER scripts_update"
+
                " INSTEAD OF UPDATE ON scripts "
+
        "FOR EACH ROW BEGIN"
+
                " INSERT OR IGNORE INTO script(script)"
+
                " VALUES(new.script);"
+
	        " UPDATE pkg_script"
+
                " SET package_id = new.package_id,"
+
                        " type = new.type,"
+
	                " script_id = ( SELECT script_id"
+
	                " FROM script WHERE script = new.script )"
+
                " WHERE package_id = old.package_id"
+
                        " AND type = old.type;"
+
        "END;"
+
        "CREATE TRIGGER scripts_insert"
+
                " INSTEAD OR INSERT ON scripts "
+
        "FOR EACH ROW BEGIN"
+
                " INSERT OR IGNORE INTO script(script)"
+
                " VALUES(new.script);"
+
	        " INSERT INTO pkg_script(package_id, type, script_id) "
+
	        " SELECT new.package_id, new.type, s.script_id"
+
                " FROM script s WHERE new.script = s.script;"
+
	"END;"
+
	"CREATE TRIGGER scripts_delete"
+
	        " INSTEAD OF DELETE ON scripts "
+
        "FOR EACH ROW BEGIN"
+
                " DELETE FROM pkg_script"
+
                " WHERE package_id = old.package_id"
+
                " AND type = old.type;"
+
                " DELETE FROM script"
+
                " WHERE script_id NOT IN"
+
                         " (SELECT DISTINCT script_id FROM pkg_script);"
+
	"END;"

	"PRAGMA user_version = %d;"
	"COMMIT;"
modified libpkg/private/db_upgrades.h
@@ -436,26 +436,26 @@ static struct db_upgrades {
	                " FROM script WHERE script = new.script )"
                " WHERE package_id = old.package_id"
                        " AND type = old.type;"
-
         "END;"
-
         "CREATE TRIGGER scripts_insert"
+
        "END;"
+
        "CREATE TRIGGER scripts_insert"
                " INSTEAD OR INSERT ON scripts "
-
         "FOR EACH ROW BEGIN"
+
        "FOR EACH ROW BEGIN"
                " INSERT OR IGNORE INTO script(script)"
                " VALUES(new.script);"
	        " INSERT INTO pkg_script(package_id, type, script_id) "
	        " SELECT new.package_id, new.type, s.script_id"
                " FROM script s WHERE new.script = s.script;"
-
	 "END;"
-
	 "CREATE TRIGGER scripts_delete"
+
	"END;"
+
	"CREATE TRIGGER scripts_delete"
	        " INSTEAD OF DELETE ON scripts "
-
         "FOR EACH ROW BEGIN"
+
        "FOR EACH ROW BEGIN"
                " DELETE FROM pkg_script"
                " WHERE package_id = old.package_id"
                " AND type = old.type;"
                " DELETE FROM script"
                " WHERE script_id NOT IN"
                         " (SELECT DISTINCT script_id FROM pkg_script);"
-
	 "END;"
+
	"END;"
	},

	/* Mark the end of the array */