aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'buildbot_gentoo_ci/db/packages.py')
-rw-r--r--buildbot_gentoo_ci/db/packages.py147
1 files changed, 146 insertions, 1 deletions
diff --git a/buildbot_gentoo_ci/db/packages.py b/buildbot_gentoo_ci/db/packages.py
index a22b9d8..79ae685 100644
--- a/buildbot_gentoo_ci/db/packages.py
+++ b/buildbot_gentoo_ci/db/packages.py
@@ -65,7 +65,10 @@ class PackagesConnectorComponent(base.DBConnectorComponent):
r = conn.execute(q, dict(name=name,
repository_uuid=repository_uuid,
category_uuid=category_uuid))
- except (sa.exc.IntegrityError, sa.exc.ProgrammingError):
+ except Exception as e:
+ print(type(e))
+ print(e.args)
+ print(e)
uuid = None
else:
uuid = r.inserted_primary_key[0]
@@ -80,3 +83,145 @@ class PackagesConnectorComponent(base.DBConnectorComponent):
repository_uuid=row.repository_uuid,
category_uuid=row.category_uuid
)
+
+ @defer.inlineCallbacks
+ def getPackageMetadataByPackageUuid(self, package_uuid):
+ def thd(conn):
+ tbl = self.db.model.packages_metadata
+ q = tbl.select()
+ q = q.where(tbl.c.package_uuid == package_uuid)
+ res = conn.execute(q)
+ row = res.fetchone()
+ if not row:
+ return None
+ return self._row2dict_metadata(conn, row)
+ res = yield self.db.pool.do(thd)
+ return res
+
+ @defer.inlineCallbacks
+ def addMetadata(self, package_uuid, sha256):
+ def thd(conn, no_recurse=False):
+ try:
+ tbl = self.db.model.packages_metadata
+ q = tbl.insert()
+ r = conn.execute(q, dict(package_uuid=package_uuid,
+ sha256=sha256
+ ))
+ except Exception as e:
+ print(type(e))
+ print(e.args)
+ print(e)
+ res = None
+ else:
+ res = r.inserted_primary_key[0]
+ return res
+ res = yield self.db.pool.do(thd)
+ return res
+
+ def _row2dict_metadata(self, conn, row):
+ return dict(
+ id=row.id,
+ package_uuid=row.package_uuid,
+ sha256=row.sha256,
+ )
+
+ @defer.inlineCallbacks
+ def addEmail(self, email):
+ def thd(conn, no_recurse=False):
+ try:
+ tbl = self.db.model.emails
+ q = tbl.insert()
+ r = conn.execute(q, dict(email=email))
+ except Exception as e:
+ print(type(e))
+ print(e.args)
+ print(e)
+ res = None
+ else:
+ res = r.inserted_primary_key[0]
+ return res
+ res = yield self.db.pool.do(thd)
+ return res
+
+ @defer.inlineCallbacks
+ def addPackageEmail(self, email_id, package_uuid, mail_type, proxied):
+ def thd(conn, no_recurse=False):
+ try:
+ tbl = self.db.model.packages_emails
+ q = tbl.insert()
+ r = conn.execute(q, dict(email_id=email_id,
+ package_uuid=package_uuid,
+ mail_type=mail_type,
+ proxied=proxied
+ ))
+ except Exception as e:
+ print(type(e))
+ print(e.args)
+ print(e)
+ res = None
+ else:
+ res = r.inserted_primary_key[0]
+ return res
+ res = yield self.db.pool.do(thd)
+ return res
+
+ @defer.inlineCallbacks
+ def getEmailIdByEmail(self, email):
+ def thd(conn):
+ tbl = self.db.model.emails
+ q = tbl.select()
+ q = q.where(tbl.c.email == email)
+ res = conn.execute(q)
+ row = res.fetchone()
+ if not row:
+ return None
+ return self._row2dict_email(conn, row)
+ res = yield self.db.pool.do(thd)
+ return res
+
+ @defer.inlineCallbacks
+ def getEmailByEmailId(self, email_id):
+ def thd(conn):
+ tbl = self.db.model.emails
+ q = tbl.select()
+ q = q.where(tbl.c.id == email_id)
+ res = conn.execute(q)
+ row = res.fetchone()
+ if not row:
+ return None
+ return self._row2dict_email(conn, row)
+ res = yield self.db.pool.do(thd)
+ return res
+
+ @defer.inlineCallbacks
+ def getEmailsIdsByPackageUuid(self, package_uuid):
+ def thd(conn):
+ tbl = self.db.model.packages_emails
+ q = tbl.select()
+ q = q.where(tbl.c.package_uuid == package_uuid)
+ return [self._row2dict_package_email(conn, row)
+ for row in conn.execute(q).fetchall()]
+ res = yield self.db.pool.do(thd)
+ return res
+
+ @defer.inlineCallbacks
+ def delPackageEmail(self, package_uuid):
+ def thd(conn, no_recurse=False):
+ tbl = self.db.model.packages_emails
+ conn.execute(tbl.delete(
+ whereclause=((tbl.c.package_uuid == package_uuid))))
+ return self.db.pool.do(thd)
+
+ def _row2dict_email(self, conn, row):
+ return dict(
+ id=row.id,
+ email=row.email,
+ )
+ def _row2dict_package_email(self, conn, row):
+ return dict(
+ id=row.id,
+ email_id=row.email_id,
+ package_uuid=row.package_uuid,
+ type=row.type,
+ proxied=row.proxied,
+ )