| | 247 | Тригер 2: При креирање на trade_request се креира broker_order |
| | 248 | |
| | 249 | {{{ |
| | 250 | CREATE OR REPLACE FUNCTION create_broker_order_from_trade_request() |
| | 251 | RETURNS TRIGGER AS $$ |
| | 252 | BEGIN |
| | 253 | INSERT INTO broker_order ( |
| | 254 | order_type, |
| | 255 | limit_price, |
| | 256 | quantity, |
| | 257 | status, |
| | 258 | executed_price, |
| | 259 | broker_fee, |
| | 260 | mse_reference_number, |
| | 261 | submitted_at, |
| | 262 | trade_request_id |
| | 263 | ) |
| | 264 | VALUES ( |
| | 265 | NEW.type, |
| | 266 | NEW.price_per_unit, |
| | 267 | NEW.quantity, |
| | 268 | 'PENDING', |
| | 269 | NULL, |
| | 270 | ROUND((NEW.price_per_unit * NEW.quantity * 0.005)::numeric, 2), -- 0.5% fee |
| | 271 | 'MSE-' || NEW.id || '-' || EXTRACT(EPOCH FROM NOW())::BIGINT, |
| | 272 | NOW(), |
| | 273 | NEW.id |
| | 274 | ); |
| | 275 | |
| | 276 | RETURN NEW; |
| | 277 | END; |
| | 278 | $$ LANGUAGE plpgsql; |
| | 279 | |
| | 280 | |
| | 281 | CREATE TRIGGER trg_create_broker_order |
| | 282 | AFTER INSERT ON trade_request |
| | 283 | FOR EACH ROW |
| | 284 | EXECUTE FUNCTION create_broker_order_from_trade_request(); |
| | 285 | }}} |