From 0ce07b2def66e5fb131c52d4a884273d203e4347 Mon Sep 17 00:00:00 2001 From: hyokeun Date: Thu, 28 Dec 2017 20:21:40 +0900 Subject: [PATCH] Insert data if not exist Change-Id: If84f239baafdba8f9a9829299f51d5e7ea0c27a2 --- abs/job_update_abs_rbs_status_for_dashboard.py | 21 ++++++++++++++------- job_buildmonitor.py | 6 +++--- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/abs/job_update_abs_rbs_status_for_dashboard.py b/abs/job_update_abs_rbs_status_for_dashboard.py index 30658f0..7cc1e4e 100644 --- a/abs/job_update_abs_rbs_status_for_dashboard.py +++ b/abs/job_update_abs_rbs_status_for_dashboard.py @@ -89,19 +89,26 @@ def update_rootstrap_status(param): buildmonitor_db.do_query(query, (status, reason, existing_id)) def update_repository(repo_name): + query = "INSERT INTO git_repository (name) SELECT * FROM (SELECT %s) AS tmp \ + WHERE NOT EXISTS (SELECT name FROM git_repository WHERE name = %s) LIMIT 1" + buildmonitor_db.do_query(query, (repo_name, repo_name)) - query = 'INSERT INTO git_repository (name) VALUES(%s)' - buildmonitor_db.do_query(query, (repo_name,)) def update_commit(git_path_id, commit_id, commit_date, committer, commit_message): - query = 'INSERT INTO git_commit (git_repository_id, commit_id, committer, commit_date, commit_message) \ - VALUES(%s, %s, %s, %s, %s)' - buildmonitor_db.do_query(query, ('%d' % git_path_id, commit_id, committer, commit_date, commit_message)) + query = "INSERT INTO git_commit (git_repository_id, commit_id, committer, commit_date, commit_message) \ + SELECT * FROM (SELECT %s, %s, %s, %s, %s) AS tmp \ + WHERE NOT EXISTS (SELECT git_repository_id, commit_id \ + FROM git_commit WHERE git_repository_id = %s AND commit_id = %s) \ + LIMIT 1" + buildmonitor_db.do_query(query, ('%d' % git_path_id, commit_id, committer, commit_date, commit_message, '%d' % git_path_id, commit_id)) def update_tag(git_commit_id, tag_name, tag_revision, tagger, tag_date, tag_message): - query = 'INSERT INTO git_tag (git_commit_id, tag_name, tag_revision, tagger, tag_date, tag_message) \ - VALUES(%s, %s, %s, %s, %s, %s)' buildmonitor_db.do_query(query, ('%d' % git_commit_id, tag_name, tag_revision, tagger, tag_date, tag_message)) + query = "INSERT INTO git_tag (git_commit_id, tag_name, tag_revision, tagger, tag_date, tag_message) \ + SELECT * FROM (SELECT %s, %s, %s, %s, %s, %s) AS tmp \ + WHERE NOT EXISTS (SELECT git_commit_id, tag_revision \ + FROM git_tag WHERE git_commit_id = %s AND tag_revision = %s) LIMIT 1" + buildmonitor_db.do_query(query, ('%d' % git_commit_id, tag_name, tag_revision, tagger, tag_date, tag_message, '%d' % git_commit_id, tag_revision)) def get_git_path_id(git_path): query = 'SELECT id FROM git_repository WHERE name=%s' diff --git a/job_buildmonitor.py b/job_buildmonitor.py index 91e306e..8fe4c78 100644 --- a/job_buildmonitor.py +++ b/job_buildmonitor.py @@ -1393,9 +1393,9 @@ def update_duplicated_package_warning(bm_snapshot_name, duplicated): if duplicated is not None and len(duplicated) > 0: # Add git repository for git_repo in duplicated: - query = "INSERT INTO git_repository (name) VALUES (%s)" - buildmonitor_db.do_query(query, (git_repo, )) - + query = "INSERT INTO git_repository (name) SELECT * FROM (SELECT %s) AS tmp WHERE NOT EXISTS (SELECT name FROM git_repository WHERE name = %s) LIMIT 1" + buildmonitor_db.do_query(query, (git_repo, git_repo)) + git_repo_str = "%s" % "','".join(duplicated) param_count_str = ','.join(["%s"] * len(duplicated)) query = "SELECT id FROM git_repository WHERE name IN (%s)" % param_count_str -- 2.7.4