Attempt to clean up packageconf handling around system tasks

This commit is contained in:
Simon Quigley 2025-02-16 16:51:06 -06:00
parent ee26b576c4
commit b2958b72b6
2 changed files with 21 additions and 4 deletions

View File

@ -40,7 +40,7 @@ Release::Release(int id, int version, const std::string& codename, bool isDefaul
std::vector<Release> Release::get_releases() { std::vector<Release> Release::get_releases() {
std::vector<Release> result; std::vector<Release> result;
QString query_str = "SELECT id, version, codename, isDefault FROM release;"; QString query_str = "SELECT id, version, codename, isDefault FROM release WHERE codename != 'warty';";
QSqlQuery query(query_str, get_thread_connection()); QSqlQuery query(query_str, get_thread_connection());
while (query.next()) { while (query.next()) {
result.emplace_back(Release(query.value("id").toInt(), result.emplace_back(Release(query.value("id").toInt(),
@ -1247,6 +1247,7 @@ void Task::save(int _packageconf_id) {
if (_packageconf_id == 0 || _packageconf_id == 32767) { if (_packageconf_id == 0 || _packageconf_id == 32767) {
auto pkgconf = get_parent_packageconf(); auto pkgconf = get_parent_packageconf();
packageconf_id = pkgconf ? pkgconf->id : 0; packageconf_id = pkgconf ? pkgconf->id : 0;
packageconf_id = (packageconf_id == 0) ? 1 : packageconf_id;
} else { } else {
packageconf_id = _packageconf_id; packageconf_id = _packageconf_id;
} }
@ -1258,7 +1259,7 @@ void Task::save(int _packageconf_id) {
WHERE packageconf_id = :packageconf_id AND jobstatus_id = :jobstatus_id WHERE packageconf_id = :packageconf_id AND jobstatus_id = :jobstatus_id
)"); )");
link_query.bindValue(":task_id", id); link_query.bindValue(":task_id", id);
link_query.bindValue(":packageconf_id", (packageconf_id == 0) ? QVariant(QMetaType::fromType<int>()) : packageconf_id); link_query.bindValue(":packageconf_id", packageconf_id);
link_query.bindValue(":jobstatus_id", jobstatus->id); link_query.bindValue(":jobstatus_id", jobstatus->id);
if (!ci_query_exec(&link_query)) { if (!ci_query_exec(&link_query)) {
@ -1272,7 +1273,7 @@ void Task::save(int _packageconf_id) {
INSERT INTO packageconf_jobstatus_id (packageconf_id, jobstatus_id, task_id) INSERT INTO packageconf_jobstatus_id (packageconf_id, jobstatus_id, task_id)
VALUES (:packageconf_id, :jobstatus_id, :task_id) VALUES (:packageconf_id, :jobstatus_id, :task_id)
)"); )");
link_query.bindValue(":packageconf_id", (packageconf_id == 0) ? QVariant(QMetaType::fromType<int>()) : packageconf_id); link_query.bindValue(":packageconf_id", packageconf_id);
link_query.bindValue(":jobstatus_id", jobstatus->id); link_query.bindValue(":jobstatus_id", jobstatus->id);
link_query.bindValue(":task_id", id); link_query.bindValue(":task_id", id);

View File

@ -147,6 +147,10 @@ bool init_database(const QString& database_path) {
packaging_url TEXT NOT NULL packaging_url TEXT NOT NULL
); );
INSERT INTO package (id, name, large, upstream_url, packaging_branch, packaging_url)
SELECT 1, 'system', 0, '.', '.', '.'
WHERE NOT EXISTS (SELECT 1 FROM package WHERE id=1);
CREATE TABLE IF NOT EXISTS release ( CREATE TABLE IF NOT EXISTS release (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
version INTEGER NOT NULL UNIQUE, version INTEGER NOT NULL UNIQUE,
@ -154,6 +158,10 @@ bool init_database(const QString& database_path) {
isDefault INTEGER NOT NULL DEFAULT 0 isDefault INTEGER NOT NULL DEFAULT 0
); );
INSERT INTO release (id, version, codename, isDefault)
SELECT 1, 410, 'warty', 0
WHERE NOT EXISTS (SELECT 1 FROM release WHERE id=1);
CREATE TABLE IF NOT EXISTS branch ( CREATE TABLE IF NOT EXISTS branch (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
name TEXT NOT NULL, name TEXT NOT NULL,
@ -175,6 +183,10 @@ bool init_database(const QString& database_path) {
commit_committer TEXT NOT NULL commit_committer TEXT NOT NULL
); );
INSERT INTO git_commit (id, commit_hash, commit_summary, commit_message, commit_datetime, commit_author, commit_committer)
SELECT 1, '.', '.', '.', '2024-01-01T00:00:00', '', ''
WHERE NOT EXISTS (SELECT 1 FROM branch WHERE id=1);
CREATE TABLE IF NOT EXISTS packageconf ( CREATE TABLE IF NOT EXISTS packageconf (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
upstream_version TEXT, upstream_version TEXT,
@ -191,6 +203,10 @@ bool init_database(const QString& database_path) {
FOREIGN KEY (upstream_commit_id) REFERENCES git_commit(id) ON DELETE CASCADE FOREIGN KEY (upstream_commit_id) REFERENCES git_commit(id) ON DELETE CASCADE
); );
INSERT INTO packageconf (id, upstream_version, ppa_revision, package_id, release_id, branch_id, packaging_commit_id, upstream_commit_id)
SELECT 1, '', 0, 1, 1, 1, 1, 1
WHERE NOT EXISTS (SELECT 1 FROM branch WHERE id=1);
CREATE TABLE IF NOT EXISTS jobstatus ( CREATE TABLE IF NOT EXISTS jobstatus (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
build_score INTEGER NOT NULL, build_score INTEGER NOT NULL,
@ -212,7 +228,7 @@ bool init_database(const QString& database_path) {
CREATE TABLE IF NOT EXISTS task ( CREATE TABLE IF NOT EXISTS task (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
packageconf_id INTEGER DEFAULT NULL, packageconf_id INTEGER NOT NULL,
jobstatus_id INTEGER NOT NULL, jobstatus_id INTEGER NOT NULL,
queue_time INTEGER DEFAULT 0, queue_time INTEGER DEFAULT 0,
start_time INTEGER DEFAULT 0, start_time INTEGER DEFAULT 0,