diff options
Diffstat (limited to 'sql')
| -rw-r--r-- | sql/dawn.sql | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/sql/dawn.sql b/sql/dawn.sql index 8daeb159..86a3d64e 100644 --- a/sql/dawn.sql +++ b/sql/dawn.sql @@ -21,6 +21,9 @@ CREATE TYPE tenor AS ENUM('6mo', '1yr', '2yr', '3yr', '4yr', '5yr', '7yr', '10yr CREATE TYPE swap_type AS ENUM('CD_INDEX', 'CD_INDEX_TRANCHE', 'CD_BASKET_TRANCHE', 'ABS_CDS'); CREATE type isda AS ENUM('ISDA2014', 'ISDA2003Cred'); CREATE type protection AS ENUM('Buyer', 'Seller'); +CREATE TYPE repo_type AS ENUM('REPO', 'REVERSE REPO'); +CREATE TYPE call_notice AS ENUM('24H', '48H', '3D', '4D', '5D', '6D', +'1W', '8D', '9D', '10D', '2W', '1M', '2M'); CREATE TABLE counterparties(code varchar(12) primary key, name text, @@ -123,7 +126,50 @@ CREATE OR REPLACE FUNCTION auto_cds_dealid() $$ language plpgsql; CREATE TRIGGER cds_dealid AFTER INSERT ON cds -FOR EACH ROW EXECUTE PROCEDURE mydealid(); +FOR EACH ROW EXECUTE PROCEDURE auto_cds_dealid(); + +CREATE TABLE repo(id serial primary key, + dealid varchar(28), + lastupdate timestamp DEFAULT now(), + action action, + folder bond_strat NOT NULL, + custodian varchar(12) NOT NULL, + cashaccount varchar(10) NOT NULL, + cp_code varchar(12) NOT NULL REFERENCES counterparties(code), + trade_date date NOT NULL, + settle_date date NOT NULL, + cusip varchar(9), + isin varchar(12), + identifier varchar(12), + description varchar(32) NOT NULL, + transaction_indicator repo_type NOT NULL, + faceamount float NOT NULL, + price float NOT NULL, + currency currency NOT NULL, + expiration_date date, + weighted_amount float, + haircut float, + repo_rate float NOT NULL, + call_notice call_notice, + daycount day_count, + ticket text + CHECK ( (haircut is NOT NULL AND weighted_amount is NULL) OR + (haircut is NULL AND weighted_amount is NOT NULL) ); + CHECK (cusip is NOT NULL OR isin is NOT NULL) +); + +CREATE OR REPLACE FUNCTION auto_repo_dealid() + RETURNS TRIGGER AS $$ + BEGIN + UPDATE cds SET dealid = 'SC_REP' ||id WHERE cds.id = NEW.id AND dealid is Null; + RETURN NEW; + END; + $$ language plpgsql; + +CREATE TRIGGER repo_dealid AFTER INSERT ON repo +FOR EACH ROW EXECUTE PROCEDURE auto_repo_dealid(); + +ALTER TABLE repo OWNER TO dawn_user; CREATE TABLE securities(identifier varchar(12) PRIMARY KEY, cusip varchar(9), |
