diff options
Diffstat (limited to 'sql/dawn.sql')
| -rw-r--r-- | sql/dawn.sql | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/sql/dawn.sql b/sql/dawn.sql index 67faa28c..e54ec115 100644 --- a/sql/dawn.sql +++ b/sql/dawn.sql @@ -340,8 +340,17 @@ UPDATE CREATE OR REPLACE FUNCTION cds_enrich() RETURNS TRIGGER AS $$ -from serenitas.analytics.api import CreditIndex -trade = TD["new"] +BEGIN +IF NEW.swap_type = "BESPOKE" THEN +RETURN NEW; +ELSE +IF TG_OP = "INSERT" AND (NEW.upfront IS NOT NULL AND NEW.traded_level IS NOT NULL) THEN + RETURN NEW; +IF NEW.traded_level IS NOT NULL THEN + NEW.upfront = upfront_from_level(NEW.security_id, NEW.maturity, NEW.traded_level, NEW.trade_date, NEW.currency); +$$ LANGUAGE plpgsql; + +END IF; if trade["swap_type"] == "BESPOKE": return if TD["event"] == "INSERT" and all([trade["upfront"], trade["traded_level"]]): @@ -1933,9 +1942,12 @@ return imm_date(p_date) $$ LANGUAGE plpython3u; CREATE OR REPLACE FUNCTION cds_accrued(date, double precision, bool, text DEFAULT 'USD') RETURNS double precision -AS '$libdir/serenitas_date', 'cds_accrued' +AS '$libdir/serenitas', 'cds_accrued' LANGUAGE C STRICT; +CREATE OR REPLACE FUNCTION upfront_from_level(text. date, double precision, date, text) RETURNS double precision +AS '$libdir/serenitas', 'upfron_from_level' +LANGUAGE C STRICT; CREATE MATERIALIZED VIEW factors_history AS WITH temp AS ( |
