aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/markit/rates.py68
1 files changed, 49 insertions, 19 deletions
diff --git a/python/markit/rates.py b/python/markit/rates.py
index 945650ec..95be7f98 100644
--- a/python/markit/rates.py
+++ b/python/markit/rates.py
@@ -82,27 +82,57 @@ def update_bbg_members(conn, session, curve_type, download_date):
except TypeError:
with conn.cursor() as c:
c.execute(
- "INSERT INTO bbg_curves VALUES(%s, %s, %s)",
- (curve_type.value, new_members, DateRange(download_date)),
- )
- conn.commit()
- return
- if new_members != members:
- with conn.cursor() as c:
- c.execute(
- "UPDATE bbg_curves SET in_effect=%s "
- "WHERE curve_type=%s AND in_effect @> %s",
- (
- DateRange(in_effect.lower, download_date),
- curve_type.value,
- download_date,
- ),
- )
- c.execute(
- "INSERT INTO bbg_curves VALUES(%s, %s, %s)",
- (curve_type.value, new_members, DateRange(download_date)),
+ "SELECT in_effect, members FROM bbg_curves "
+ "WHERE curve_type=%s ORDER BY lower(in_effect) LIMIT 1",
+ (curve_type.value,),
)
+ (
+ in_effect,
+ members,
+ ) = c.fetchone()
+ if new_members == members:
+ with conn.cursor() as c:
+ c.execute(
+ "UPDATE bbg_curves SET in_effect=%s "
+ "WHERE in_effect=%s AND curve_type=%s",
+ (
+ DateRange(download_date, in_effect.upper),
+ in_effect,
+ curve_type.value,
+ ),
+ )
+ else:
+ with conn.cursor() as c:
+ c.execute(
+ "INSERT INTO bbg_curves VALUES(%s, %s, %s)",
+ (
+ curve_type.value,
+ new_members,
+ DateRange(download_date, in_effect.lower),
+ ),
+ )
conn.commit()
+ else:
+ if new_members != members:
+ with conn.cursor() as c:
+ c.execute(
+ "UPDATE bbg_curves SET in_effect=%s "
+ "WHERE curve_type=%s AND in_effect @> %s",
+ (
+ DateRange(in_effect.lower, download_date),
+ curve_type.value,
+ download_date,
+ ),
+ )
+ c.execute(
+ "INSERT INTO bbg_curves VALUES(%s, %s, %s)",
+ (
+ curve_type.value,
+ new_members,
+ DateRange(download_date, in_effect.upper),
+ ),
+ )
+ conn.commit()
def update_bbg_desc(conn, session, download_date):