-- -- This file is part of TALER -- Copyright (C) 2021 Taler Systems SA -- -- TALER is free software; you can redistribute it and/or modify it under the -- terms of the GNU General Public License as published by the Free Software -- Foundation; either version 3, or (at your option) any later version. -- -- TALER is distributed in the hope that it will be useful, but WITHOUT ANY -- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -- A PARTICULAR PURPOSE. See the GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License along with -- TALER; see the file COPYING. If not, see -- -- @file merchant-0004.sql -- @brief database helper functions for postgres used by the merchant and function for plugin_merchantdb_postgres.c -- @author Priscilla Huang BEGIN; -- Check patch versioning is in place. SELECT _v.register_patch('merchant-0004', NULL, NULL); SET search_path TO merchant; -- create table here! CREATE TABLE IF NOT EXISTS merchant_template (template_serial BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY ,merchant_serial BIGINT NOT NULL REFERENCES merchant_instances (merchant_serial) ON DELETE CASCADE ,template_id VARCHAR NOT NULL ,template_description VARCHAR NOT NULL ,image BYTEA ,template_contract VARCHAR NOT NULL -- in JSON format ,UNIQUE (merchant_serial, template_id) ); COMMENT ON TABLE merchant_template IS 'template used by the merchant (may be incomplete, frontend can override)'; COMMENT ON COLUMN merchant_template.template_description IS 'Human-readable template description'; COMMENT ON COLUMN merchant_template.image IS 'NOT NULL, but can be 0 bytes; must contain an ImageDataUrl'; COMMENT ON COLUMN merchant_template.template_contract IS 'The template contract will contains some additional information.'; /* CREATE TABLE IF NOT EXISTS merchant_using_template (template_serial BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY ,merchant_serial BIGINT NOT NULL REFERENCES merchant_instances (nerchant_serial) ON DELETE CASCADE ,summary VERCHAR NOT ,amount_val INT8 NOT NULL ,amount_frac INT4 NOT NULL ,UNIQUE (merchant_serial, template_id) COMMENT ON TABLE merchant_using_template IS 'template used by the curstomer (may be incomplete, frontend can override)'; COMMENT ON COLUMN merchant_usign_template.summary IS 'Human-readable summary'; COMMENT ON COLUMN merchant_using_template.amount_val IS 'Overall amoount that need to pay';*/ CREATE TABLE IF NOT EXISTS merchant_webhook (webhook_serial BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY ,merchant_serial BIGINT NOT NULL REFERENCES merchant_instances (merchant_serial) ON DELETE CASCADE ,webhook_id VARCHAR NOT NULL ,event_type VARCHAR NOT NULL ,url VARCHAR NOT NULL ,http_method VARCHAR NOT NULL ,header_template VARCHAR ,body_template VARCHAR ,UNIQUE (merchant_serial, webhook_id) ); COMMENT ON TABLE merchant_webhook IS 'webhook used by the merchant (may be incomplete, frontend can override)'; COMMENT ON COLUMN merchant_webhook.event_type IS 'Event of the webhook'; COMMENT ON COLUMN merchant_webhook.url IS 'URL to make the request to'; COMMENT ON COLUMN merchant_webhook.http_method IS 'http method use by the merchant'; COMMENT ON COLUMN merchant_webhook.header_template IS 'Template for the header of the webhook, to be modified based on trigger data'; COMMENT ON COLUMN merchant_webhook.body_template IS 'Template for the body of the webhook, to be modified based on trigger data'; /* CREATE TABLE IF NOT EXISTS merchant_pending_webhooks (webhook_pending_serial BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY ,merchant_serial BIGINT NOT NULL REFERENCES merchant_instances (merchant_serial) ON DELETE CASCADE ,webhook_serial BIGINT NOT NULL REFERENCES merchant_webhook (webhook_serial) ON DELETE CASCADE ,retries INT4 NOT NULL DEFAULT(0) ,next_attempt INT8 NOT NULL DEFAULT(0) ,url VARCHAR NOT NULL ,http_method VARCHAR NOT NULL ,header VARCHAR ,body VARCHAR ,UNIQUE (merchant_serial, webhook_pending_serial) ); COMMENT ON TABLE merchant_pending_webhooks IS 'webhooks that still need to be executed by the merchant'; COMMENT ON COLUMN merchant_pending_webhooks.url IS 'URL to make the request to'; COMMENT ON COLUMN merchant_pending_webhooks.webhook_serial IS 'Reference to the configured webhook template'; COMMENT ON COLUMN merchant_pending_webhooks.retries IS 'How often have we tried this request so far'; COMMENT ON COLUMN merchant_pending_webhooks.next_attempt IS 'Time when we should make the next request to the webhook'; COMMENT ON COLUMN merchant_pending_webhooks.http_method IS 'http method use for the webhook'; COMMENT ON COLUMN merchant_pending_webhooks.header IS 'Header of the webhook'; COMMENT ON COLUMN merchant_pending_webhooks.body IS 'Body of the webhook'; */ COMMIT;