Insert data if not exist 77/165377/1
authorhyokeun <hyokeun.jeon@samsung.com>
Thu, 28 Dec 2017 11:21:40 +0000 (20:21 +0900)
committerhyokeun <hyokeun.jeon@samsung.com>
Thu, 28 Dec 2017 11:21:40 +0000 (20:21 +0900)
Change-Id: If84f239baafdba8f9a9829299f51d5e7ea0c27a2

abs/job_update_abs_rbs_status_for_dashboard.py
job_buildmonitor.py

index 30658f0..7cc1e4e 100644 (file)
@@ -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'
index 91e306e..8fe4c78 100644 (file)
@@ -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