cashless2ecash

cashless2ecash: pay with cards for digital cash (experimental)
Log | Files | Refs | README

commit 7deac97ad58329565fc5fe7c9f3f600620f1d6c4
parent adf7f62068e5560cb5ce6748582d1354f06f26a9
Author: Joel-Haeberli <haebu@rubigen.ch>
Date:   Sat, 11 May 2024 22:34:30 +0200

fix: wallee authentication

Diffstat:
Mc2ec/http-util.go | 15++++++++++++++-
Mc2ec/wallee-client.go | 36++++++++++++++++++++++++++----------
Mdocs/content/implementation/e-security.tex | 29+++++++++++++++++++++++++++++
Mdocs/project.bib | 8++++++++
Mdocs/thesis.pdf | 0
Mdocs/thesis.tex | 4++++
Mschemaspy/c2ec-erd/columns.html | 352++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------
Mschemaspy/c2ec-erd/constraints.html | 7+------
Mschemaspy/c2ec-erd/deletionOrder.txt | 3++-
Mschemaspy/c2ec-erd/diagrams/orphans/orphans.dot | 20+++++++++++++++++++-
Mschemaspy/c2ec-erd/diagrams/summary/relationships.real.compact.dot | 19+++++++++++--------
Mschemaspy/c2ec-erd/diagrams/summary/relationships.real.large.dot | 27+++++++++++++++------------
Aschemaspy/c2ec-erd/diagrams/tables/provider.1degree.dot | 32++++++++++++++++++++++++++++++++
Aschemaspy/c2ec-erd/diagrams/tables/provider.2degrees.dot | 44++++++++++++++++++++++++++++++++++++++++++++
Mschemaspy/c2ec-erd/diagrams/tables/terminal.1degree.dot | 35+++++++++++++++++++----------------
Dschemaspy/c2ec-erd/diagrams/tables/terminal_provider.1degree.dot | 31-------------------------------
Dschemaspy/c2ec-erd/diagrams/tables/terminal_provider.2degrees.dot | 43-------------------------------------------
Aschemaspy/c2ec-erd/diagrams/tables/transfer.1degree.dot | 22++++++++++++++++++++++
Mschemaspy/c2ec-erd/diagrams/tables/withdrawal.1degree.dot | 8+++++---
Mschemaspy/c2ec-erd/diagrams/tables/withdrawal.2degrees.dot | 32+++++++++++++++++---------------
Mschemaspy/c2ec-erd/index.html | 23++++++++++++++++-------
Mschemaspy/c2ec-erd/info-html.txt | 4++--
Mschemaspy/c2ec-erd/insertionOrder.txt | 3++-
Mschemaspy/c2ec-erd/orphans.html | 1+
Mschemaspy/c2ec-erd/postgres.c2ec.xml | 153+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------
Mschemaspy/c2ec-erd/relationships.html | 12++++++------
Mschemaspy/c2ec-erd/routines.html | 36++++++++++++++++++++++++++++++++++++
Aschemaspy/c2ec-erd/routines/emit_payment_notification___f8fd6071.html | 187+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aschemaspy/c2ec-erd/routines/emit_retry_notification___f0cf628f.html | 187+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aschemaspy/c2ec-erd/routines/emit_transfer_notification___ed278d94.html | 187+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aschemaspy/c2ec-erd/routines/emit_withdrawal_status___b48bc651.html | 187+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aschemaspy/c2ec-erd/tables/provider.html | 358+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mschemaspy/c2ec-erd/tables/terminal.html | 44++++++--------------------------------------
Aschemaspy/c2ec-erd/tables/transfer.html | 399+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mschemaspy/c2ec-erd/tables/withdrawal.html | 86+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------
Aspecs/logical_model_relations.odg | 0
36 files changed, 2294 insertions(+), 340 deletions(-)

diff --git a/c2ec/http-util.go b/c2ec/http-util.go @@ -3,6 +3,7 @@ package main import ( "bytes" "errors" + "fmt" "io" "net/http" "strings" @@ -137,10 +138,20 @@ func HttpGet[T any]( if codec == nil { return nil, res.StatusCode, err } else { + b, err := io.ReadAll(res.Body) + if err != nil { + LogError("http-util", err) + if res.StatusCode > 299 { + return nil, res.StatusCode, nil + } + return nil, -1, err + } if res.StatusCode > 299 { + LogInfo("http-util", fmt.Sprintf("response: %s", string(b))) + fmt.Println(fmt.Sprintf("response: %s", string(b))) return nil, res.StatusCode, nil } - resBody, err := codec.Decode(res.Body) + resBody, err := codec.Decode(bytes.NewReader(b)) return resBody, res.StatusCode, err } } @@ -160,6 +171,8 @@ func HttpPost[T any, R any]( return nil, -1, err } + fmt.Println(string(bodyEncoded)) + req, err := http.NewRequest(HTTP_POST, url, bytes.NewBuffer(bodyEncoded)) if err != nil { return nil, -1, err diff --git a/c2ec/wallee-client.go b/c2ec/wallee-client.go @@ -8,6 +8,7 @@ import ( "errors" "fmt" "io" + "regexp" "strconv" "strings" "time" @@ -102,7 +103,7 @@ func (w *WalleeClient) GetTransaction(transactionId string) (ProviderTransaction } url := FormatUrl(call, map[string]string{}, queryParams) - hdrs, err := w.prepareWalleeHeaders(url, HTTP_GET) + hdrs, err := prepareWalleeHeaders(url, HTTP_GET, w.credentials.UserId, w.credentials.ApplicationUserKey) if err != nil { return nil, err } @@ -130,7 +131,7 @@ func (w *WalleeClient) Refund(transactionId string) error { } url := FormatUrl(call, map[string]string{}, queryParams) - hdrs, err := w.prepareWalleeHeaders(url, HTTP_GET) + hdrs, err := prepareWalleeHeaders(url, HTTP_GET, w.credentials.UserId, w.credentials.ApplicationUserKey) if err != nil { return err } @@ -157,16 +158,21 @@ func (w *WalleeClient) Refund(transactionId string) error { return nil } -func (w *WalleeClient) prepareWalleeHeaders(url string, method string) (map[string]string, error) { +func prepareWalleeHeaders( + url string, + method string, + userId int, + applicationUserKey string, +) (map[string]string, error) { timestamp := time.Time.Unix(time.Now()) base64Mac, err := calculateWalleeAuthToken( - w.credentials.UserId, + userId, timestamp, method, url, - w.credentials.ApplicationUserKey, + applicationUserKey, ) if err != nil { return nil, err @@ -174,7 +180,7 @@ func (w *WalleeClient) prepareWalleeHeaders(url string, method string) (map[stri headers := map[string]string{ WALLEE_AUTH_HEADER_VERSION: "1", - WALLEE_AUTH_HEADER_USERID: strconv.Itoa(w.credentials.UserId), + WALLEE_AUTH_HEADER_USERID: strconv.Itoa(userId), WALLEE_AUTH_HEADER_TIMESTAMP: strconv.Itoa(int(timestamp)), WALLEE_AUTH_HEADER_MAC: base64Mac, } @@ -223,7 +229,7 @@ func calculateWalleeAuthToken( userId, unixTimestamp, httpMethod, - pathWithParams, + cutSchemeAndHost(pathWithParams), ) authMsg := make([]byte, 0) @@ -235,9 +241,14 @@ func calculateWalleeAuthToken( utf8.EncodeRune(rbytes, r) authMsg = append(authMsg, rbytes...) } + } else { + authMsg = bytes.NewBufferString(authMsgStr).Bytes() } - key := make([]byte, base64.StdEncoding.DecodedLen(len(userKeyBase64))) + LogInfo("wallee-client", fmt.Sprintf("authMsg (utf-8 encoded): %s", string(authMsg))) + fmt.Println("wallee-client", fmt.Sprintf("authMsg (utf-8 encoded): %s", string(authMsg))) + + key := make([]byte, 32) _, err := base64.StdEncoding.Decode(key, []byte(userKeyBase64)) if err != nil { LogError("wallee-client", err) @@ -254,8 +265,13 @@ func calculateWalleeAuthToken( LogError("wallee-client", err) return "", err } - mac := make([]byte, 64) - mac = macer.Sum(mac) + mac := macer.Sum(make([]byte, 0)) return base64.StdEncoding.EncodeToString(mac), nil } + +func cutSchemeAndHost(url string) string { + + reg := regexp.MustCompile(`https?:\/\/[\w-\.]{1,}`) + return reg.ReplaceAllString(url, "") +} diff --git a/docs/content/implementation/e-security.tex b/docs/content/implementation/e-security.tex @@ -5,6 +5,35 @@ The \textit{WOPID} is the achiles heel of the withdrawal operation and therefore needs great care when generated. When the \textit{WOPID} becomes somehow foreseeable, it opens the door for attackers allowing them to hijack the withdrawal from a remote location. Therefore the \textit{WOPID} needs to leverage high entropy sources to be generated. This is achieved by using the crypto random library of Go. The library is part of the standard library and gains entropy through the entropy sources of the device running the application (in case of linux it is \textit{getrandom(2)} which takes its entropy from \textit{/dev/urandom}, according to the documentation \cite{golang-crypto-rand}). +\subsection{Database Security} + +The database is very important as it decides wether to allow a withdrawal or not and it manages terminals and providers which hold sensitive credentials. Therefore two important aspects need to be considered. + +\subsubsection{Storing credentials} + +Even if a database leak occurs, it shall be very hard for the attacker to access the API using the credentials stored in the database. This is why credentials are stored using PBKDF \textit{argon2}. \textit{Argon2} is the winner of the password hashing competition initiated by the cryptographer Jean-Philippe Aumasson \cite{argon2}. It is a widely adopted best practice approach for hashing passwords. Storing the hash of the credentials makes stealing credentials very hard and therefore prevents the abuse of credentials gathered through a database leak. The CLI described in \autoref{sec-implementation-cli} implements operations which will register providers and terminals also hashing the credentials using \textit{argon2}. + +\subsubsection{Access data through correct user} + +The database user executing a database query must have enough rights to execute its duties but not more. Therefore different database users are created for different tasks within the database. + +\begin{table}[H] + \centering + \caption{Database users} + \label{sec-implementation-security-database-users} + \begin{tabularx}{\textwidth}{|p{0.2\textwidth}|p{0.2\textwidth}|p{0.6\textwidth}|} + \hline + \textbf{Username} & \textbf{Component} & \textbf{Description} \\ + \hline + c2ec\_admin & None & This user is possibly never to be used but during maintenance of the database itself (adding database users\, doing backups\, adding and granting users or others) \\ + \hline + c2ec\_api & C2EC & This user has all rights it needs to manage a withdrawal \\ + \hline + c2ec\_operator & CLI & This user shall be used by an operator of the C2EC component to add providers and terminals. It has no access to withdrawals \\ + \hline + \end{tabularx} +\end{table} + \subsection{Authenticating at the Wallee ReST API} \label{sec-security-auth-wallee} diff --git a/docs/project.bib b/docs/project.bib @@ -385,3 +385,10 @@ url = {https://developer.android.com/guide/navigation}, howpublished = {\url{https://developer.android.com/guide/navigation}}, } + +@misc{password-competition-argon2, + author = {Jean-Philippe Aumasson}, + title = {Password Hashing Competition}, + url = {https://www.password-hashing.net}, + howpublished = {\url{https://www.password-hashing.net}}, +} +\ No newline at end of file diff --git a/docs/thesis.pdf b/docs/thesis.pdf Binary files differ. diff --git a/docs/thesis.tex b/docs/thesis.tex @@ -47,6 +47,10 @@ \usepackage{longtable} +\usepackage{graphicx} +\usepackage{float} +\usepackage{tabularx} + \usepackage{parskip} %--------------------------------------------------------------------------- diff --git a/schemaspy/c2ec-erd/columns.html b/schemaspy/c2ec-erd/columns.html @@ -114,29 +114,29 @@ "tableName": "terminal", "tableFileName": "terminal", "tableType": "Table", - "keyClass": "foreignKey", - "keyTitle": "Foreign Key", - "name": "<i class='icon ion-key iconkey' style='padding-left: 5px;'><\/i>provider_id", - "type": "int8", - "length": 19, + "keyClass": "", + "keyTitle": "", + "name": "active", + "type": "bool", + "length": 1, "nullable": "", "autoUpdated": "", - "defaultValue": "null", - "comments": "<p>Indicates the terminal provider to which the terminal belongs<\/p>" + "defaultValue": "true", + "comments": "<p>Indicates if the terminal is active or deactivated<\/p>" }, { - "tableName": "terminal_provider", - "tableFileName": "terminal_provider", + "tableName": "transfer", + "tableFileName": "transfer", "tableType": "Table", "keyClass": "", "keyTitle": "", - "name": "backend_base_url", + "name": "wtid", "type": "text", "length": 2147483647, "nullable": "", "autoUpdated": "", "defaultValue": "null", - "comments": "<p>URL of the provider backend for transaction proofing<\/p>" + "comments": "<p>The id of the transaction<\/p>" }, { "tableName": "withdrawal", @@ -144,27 +144,41 @@ "tableType": "Table", "keyClass": "", "keyTitle": "", - "name": "provider_transaction_id", + "name": "retry_counter", + "type": "int4", + "length": 10, + "nullable": "", + "autoUpdated": "", + "defaultValue": "0", + "comments": "<p>Number of retry attempts<\/p>" + }, + { + "tableName": "transfer", + "tableFileName": "transfer", + "tableType": "Table", + "keyClass": "", + "keyTitle": "", + "name": "credit_account", "type": "text", "length": 2147483647, - "nullable": "√", + "nullable": "", "autoUpdated": "", "defaultValue": "null", - "comments": "<p>Transaction identifier supplied by the provider for backend request<\/p>" + "comments": "<p>The payto address of the transfer target<\/p>" }, { - "tableName": "withdrawal", - "tableFileName": "withdrawal", + "tableName": "provider", + "tableFileName": "provider", "tableType": "Table", "keyClass": "", "keyTitle": "", - "name": "reserve_pub_key", - "type": "bytea", + "name": "backend_credentials", + "type": "text", "length": 2147483647, "nullable": "", "autoUpdated": "", "defaultValue": "null", - "comments": "<p>Reserve public key for the reserve which will hold the withdrawal amount after completion<\/p>" + "comments": "<p>Credentials used to access the backend of the provider<\/p>" }, { "tableName": "withdrawal", @@ -172,13 +186,13 @@ "tableType": "Table", "keyClass": "", "keyTitle": "", - "name": "withdrawal_status", - "type": "\"c2ec\".\"withdrawal_operation_status\"", + "name": "provider_transaction_id", + "type": "text", "length": 2147483647, - "nullable": "", + "nullable": "√", "autoUpdated": "", - "defaultValue": "'pending'::c2ec.withdrawal_operation_status", - "comments": "<p>Status of the withdrawal process<\/p>" + "defaultValue": "null", + "comments": "<p>Transaction identifier supplied by the provider for backend request<\/p>" }, { "tableName": "withdrawal", @@ -203,38 +217,122 @@ "name": "<i class='icon ion-key iconkey' style='padding-left: 5px;'><\/i>terminal_id", "type": "int8", "length": 19, - "nullable": "", + "nullable": "√", "autoUpdated": "", "defaultValue": "null", "comments": "<p>ID of the terminal that initiated the withdrawal<\/p>" }, { - "tableName": "withdrawal", - "tableFileName": "withdrawal", + "tableName": "terminal", + "tableFileName": "terminal", "tableType": "Table", - "keyClass": "", - "keyTitle": "", - "name": "last_retry_ts", + "keyClass": "primaryKey", + "keyTitle": "Primary Key", + "name": "<i class='icon ion-key iconkey' style='padding-left: 5px;'><\/i>terminal_id", "type": "int8", "length": 19, - "nullable": "√", + "nullable": "", + "autoUpdated": "√", + "defaultValue": "null", + "comments": "<p>Uniquely identifies a terminal<\/p>" + }, + { + "tableName": "provider", + "tableFileName": "provider", + "tableType": "Table", + "keyClass": "", + "keyTitle": "", + "name": "backend_base_url", + "type": "text", + "length": 2147483647, + "nullable": "", "autoUpdated": "", "defaultValue": "null", - "comments": "<p>Timestamp of the last retry attempt<\/p>" + "comments": "<p>URL of the provider backend for transaction proofing<\/p>" }, { "tableName": "terminal", "tableFileName": "terminal", "tableType": "Table", + "keyClass": "foreignKey", + "keyTitle": "Foreign Key", + "name": "<i class='icon ion-key iconkey' style='padding-left: 5px;'><\/i>provider_id", + "type": "int8", + "length": 19, + "nullable": "", + "autoUpdated": "", + "defaultValue": "null", + "comments": "<p>Indicates the terminal provider to which the terminal belongs<\/p>" + }, + { + "tableName": "transfer", + "tableFileName": "transfer", + "tableType": "Table", "keyClass": "primaryKey", "keyTitle": "Primary Key", - "name": "<i class='icon ion-key iconkey' style='padding-left: 5px;'><\/i>terminal_id", + "name": "<i class='icon ion-key iconkey' style='padding-left: 5px;'><\/i>request_uid", + "type": "bytea", + "length": 2147483647, + "nullable": "", + "autoUpdated": "", + "defaultValue": "null", + "comments": "<p>A unique identifier for the transfer.<\/p>" + }, + { + "tableName": "transfer", + "tableFileName": "transfer", + "tableType": "Table", + "keyClass": "", + "keyTitle": "", + "name": "amount", + "type": "\"c2ec\".\"taler_amount_currency\"", + "length": 2147483647, + "nullable": "", + "autoUpdated": "", + "defaultValue": "null", + "comments": "<p>The amount to be transferred<\/p>" + }, + { + "tableName": "provider", + "tableFileName": "provider", + "tableType": "Table", + "keyClass": "indexedColumn", + "keyTitle": "Indexed", + "name": "<i class='fa fa-sitemap fa-rotate-120' style='padding-right: 5px;'><\/i>payto_target_type", + "type": "text", + "length": 2147483647, + "nullable": "", + "autoUpdated": "", + "defaultValue": "null", + "comments": "<p>The Payto target type associated with the provider. Each payto target type has exctly one provider. This is needed so that the attestor client can be dynamically selected by C2EC.<\/p>" + }, + { + "tableName": "transfer", + "tableFileName": "transfer", + "tableType": "Table", + "keyClass": "", + "keyTitle": "", + "name": "transfer_ts", "type": "int8", "length": 19, "nullable": "", - "autoUpdated": "√", + "autoUpdated": "", "defaultValue": "null", - "comments": "<p>Uniquely identifies a terminal<\/p>" + "comments": "<p>Timestamp when the transfer was last processesd<\/p>" + }, + { + "tableName": "withdrawal", + "tableFileName": "withdrawal", + "tableType": "Table", + "keyClass": "", + "keyTitle": "", + "name": "completion_proof", + "type": "bytea", + "length": 2147483647, + "nullable": "√", + "autoUpdated": "", + "defaultValue": "null", + "comments": "<p>Proof of transaction upon final completion delivered by the providers system<\/p>" }, { "tableName": "withdrawal", @@ -242,27 +340,69 @@ "tableType": "Table", "keyClass": "", "keyTitle": "", - "name": "fees", + "name": "suggested_amount", "type": "\"c2ec\".\"taler_amount_currency\"", "length": 2147483647, "nullable": "√", "autoUpdated": "", "defaultValue": "null", - "comments": "<p>Fees associated with the withdrawal, including exchange and provider fees<\/p>" + "comments": "<p>The suggested amount is given by the entity initializing the wihdrawal. If the suggested amount is given, the wallet may still change the amount.<\/p>" }, { - "tableName": "terminal_provider", - "tableFileName": "terminal_provider", + "tableName": "withdrawal", + "tableFileName": "withdrawal", + "tableType": "Table", + "keyClass": "primaryKey", + "keyTitle": "Primary Key", + "name": "<i class='icon ion-key iconkey' style='padding-left: 5px;'><\/i>withdrawal_row_id", + "type": "int8", + "length": 19, + "nullable": "", + "autoUpdated": "√", + "defaultValue": "null", + "comments": "<p>The withdrawal id is used a technical id used by the wire gateway to sequentially select new transactions<\/p>" + }, + { + "tableName": "transfer", + "tableFileName": "transfer", + "tableType": "Table", + "keyClass": "", + "keyTitle": "", + "name": "transfer_status", + "type": "int2", + "length": 5, + "nullable": "", + "autoUpdated": "", + "defaultValue": "1", + "comments": "<p>Non-zero when the transfer failed at the last retry. Zero if transfer succeeded. Negative, when max amount of retries was exceeded. Because the transfer was not yet triggered when it is added, the status is set to 1 by default.<\/p>" + }, + { + "tableName": "withdrawal", + "tableFileName": "withdrawal", "tableType": "Table", "keyClass": "indexedColumn", "keyTitle": "Indexed", - "name": "<i class='fa fa-sitemap fa-rotate-120' style='padding-right: 5px;'><\/i>name", + "name": "<i class='fa fa-sitemap fa-rotate-120' style='padding-right: 5px;'><\/i>wopid", + "type": "bytea", + "length": 2147483647, + "nullable": "", + "autoUpdated": "", + "defaultValue": "null", + "comments": "<p>The wopid (withdrawal operation id) is a nonce generated by the terminal requesting a withdrawal. The wopid identifies a specific withdrawal spawning all involved systems.<\/p>" + }, + { + "tableName": "terminal", + "tableFileName": "terminal", + "tableType": "Table", + "keyClass": "", + "keyTitle": "", + "name": "access_token", "type": "text", "length": 2147483647, "nullable": "", "autoUpdated": "", "defaultValue": "null", - "comments": "<p>Name of the provider, used for selection in transaction proofing<\/p>" + "comments": "<p>The access token of the terminal used for authentication against the c2ec API. It is hashed using a PBKDF.<\/p>" }, { "tableName": "withdrawal", @@ -270,13 +410,13 @@ "tableType": "Table", "keyClass": "", "keyTitle": "", - "name": "wopid", - "type": "bytea", + "name": "amount", + "type": "\"c2ec\".\"taler_amount_currency\"", "length": 2147483647, - "nullable": "", + "nullable": "√", "autoUpdated": "", "defaultValue": "null", - "comments": "<p>The wopid (withdrawal operation id) is a nonce generated by the terminal requesting a withdrawal. The wopid identifies a specific withdrawal spawning all involved systems.<\/p>" + "comments": "<p>Effective amount to be put into the reserve after completion<\/p>" }, { "tableName": "withdrawal", @@ -284,49 +424,77 @@ "tableType": "Table", "keyClass": "", "keyTitle": "", - "name": "retry_counter", - "type": "int4", - "length": 10, + "name": "terminal_fees", + "type": "\"c2ec\".\"taler_amount_currency\"", + "length": 2147483647, + "nullable": "√", + "autoUpdated": "", + "defaultValue": "null", + "comments": "<p>Fees associated with the withdrawal but not related to the taler payment system.<\/p>" + }, + { + "tableName": "withdrawal", + "tableFileName": "withdrawal", + "tableType": "Table", + "keyClass": "indexedColumn", + "keyTitle": "Indexed", + "name": "<i class='fa fa-sitemap fa-rotate-120' style='padding-right: 5px;'><\/i>request_uid", + "type": "text", + "length": 2147483647, "nullable": "", "autoUpdated": "", - "defaultValue": "0", - "comments": "<p>Number of retry attempts<\/p>" + "defaultValue": "null", + "comments": "<p>The request uid identifies each request and is stored to make the API interacting with withdrawals idempotent.<\/p>" }, { - "tableName": "terminal", - "tableFileName": "terminal", + "tableName": "withdrawal", + "tableFileName": "withdrawal", "tableType": "Table", "keyClass": "", "keyTitle": "", - "name": "access_token", + "name": "reserve_pub_key", "type": "bytea", "length": 2147483647, - "nullable": "", + "nullable": "√", "autoUpdated": "", "defaultValue": "null", - "comments": "<p>The access token of the terminal used for authentication against the c2ec API<\/p>" + "comments": "<p>Reserve public key for the reserve which will hold the withdrawal amount after completion<\/p>" }, { - "tableName": "terminal", - "tableFileName": "terminal", + "tableName": "transfer", + "tableFileName": "transfer", "tableType": "Table", "keyClass": "", "keyTitle": "", - "name": "active", - "type": "bool", - "length": 1, + "name": "row_id", + "type": "int8", + "length": 19, + "nullable": "", + "autoUpdated": "√", + "defaultValue": "null", + "comments": "<p>The row id is used to support the history outgoing<\/p>" + }, + { + "tableName": "withdrawal", + "tableFileName": "withdrawal", + "tableType": "Table", + "keyClass": "", + "keyTitle": "", + "name": "withdrawal_status", + "type": "\"c2ec\".\"withdrawal_operation_status\"", + "length": 2147483647, "nullable": "", "autoUpdated": "", - "defaultValue": "true", - "comments": "<p>Indicates if the terminal is active or deactivated<\/p>" + "defaultValue": "'pending'::c2ec.withdrawal_operation_status", + "comments": "<p>Status of the withdrawal process<\/p>" }, { - "tableName": "terminal_provider", - "tableFileName": "terminal_provider", + "tableName": "provider", + "tableFileName": "provider", "tableType": "Table", "keyClass": "primaryKey", "keyTitle": "Primary Key", - "name": "<i class='icon ion-key iconkey' style='padding-left: 5px;'><\/i>provider_terminal_id", + "name": "<i class='icon ion-key iconkey' style='padding-left: 5px;'><\/i>provider_id", "type": "int8", "length": 19, "nullable": "", @@ -335,18 +503,18 @@ "comments": "<p>Uniquely identifies a provider<\/p>" }, { - "tableName": "terminal_provider", - "tableFileName": "terminal_provider", + "tableName": "provider", + "tableFileName": "provider", "tableType": "Table", - "keyClass": "", - "keyTitle": "", - "name": "backend_credentials", + "keyClass": "indexedColumn", + "keyTitle": "Indexed", + "name": "<i class='fa fa-sitemap fa-rotate-120' style='padding-right: 5px;'><\/i>name", "type": "text", "length": 2147483647, "nullable": "", "autoUpdated": "", "defaultValue": "null", - "comments": "<p>Credentials used to access the backend of the provider<\/p>" + "comments": "<p>Name of the provider, used for selection in transaction proofing<\/p>" }, { "tableName": "terminal", @@ -363,32 +531,32 @@ "comments": "<p>Description to help identify the terminal. This may include the location and an identifier of the terminal.<\/p>" }, { - "tableName": "withdrawal", - "tableFileName": "withdrawal", + "tableName": "transfer", + "tableFileName": "transfer", "tableType": "Table", "keyClass": "", "keyTitle": "", - "name": "completion_proof", - "type": "bytea", + "name": "exchange_base_url", + "type": "text", "length": 2147483647, - "nullable": "√", + "nullable": "", "autoUpdated": "", "defaultValue": "null", - "comments": "<p>Proof of transaction upon final completion delivered by the providers system<\/p>" + "comments": "<p>The base url of the exchange, sending the transfer request<\/p>" }, { - "tableName": "withdrawal", - "tableFileName": "withdrawal", + "tableName": "transfer", + "tableFileName": "transfer", "tableType": "Table", - "keyClass": "primaryKey", - "keyTitle": "Primary Key", - "name": "<i class='icon ion-key iconkey' style='padding-left: 5px;'><\/i>withdrawal_id", - "type": "int8", - "length": 19, + "keyClass": "", + "keyTitle": "", + "name": "retries", + "type": "int2", + "length": 5, "nullable": "", - "autoUpdated": "√", - "defaultValue": "null", - "comments": "<p>The withdrawal id is used a technical id used by the wire gateway to sequentially select new transactions<\/p>" + "autoUpdated": "", + "defaultValue": "0", + "comments": "<p>Number of retries<\/p>" }, { "tableName": "withdrawal", @@ -396,13 +564,13 @@ "tableType": "Table", "keyClass": "", "keyTitle": "", - "name": "amount", - "type": "\"c2ec\".\"taler_amount_currency\"", - "length": 2147483647, - "nullable": "", + "name": "last_retry_ts", + "type": "int8", + "length": 19, + "nullable": "√", "autoUpdated": "", "defaultValue": "null", - "comments": "<p>Effective amount to be put into the reserve after completion<\/p>" + "comments": "<p>Timestamp of the last retry attempt<\/p>" } ]; var config = { diff --git a/schemaspy/c2ec-erd/constraints.html b/schemaspy/c2ec-erd/constraints.html @@ -115,7 +115,7 @@ <td> <table border='0' cellspacing='0' cellpadding='0'> <tr> - <td><a href='tables/terminal_provider.html'>terminal_provider</a><span>.provider_terminal_id</span></td> + <td><a href='tables/provider.html'>provider</a><span>.provider_id</span></td> </tr> </table> </td> @@ -169,11 +169,6 @@ </thead> <tbody> <tr> - <td><a href='tables/terminal.html'>terminal</a></td> - <td>terminal_access_token_check</td> - <td>((length(access_token) &#61; 32))</td> - </tr> - <tr> <td><a href='tables/withdrawal.html'>withdrawal</a></td> <td>withdrawal_reserve_pub_key_check</td> <td>((length(reserve_pub_key) &#61; 32))</td> diff --git a/schemaspy/c2ec-erd/deletionOrder.txt b/schemaspy/c2ec-erd/deletionOrder.txt @@ -1,3 +1,4 @@ +transfer withdrawal terminal -terminal_provider +provider diff --git a/schemaspy/c2ec-erd/diagrams/orphans/orphans.dot b/schemaspy/c2ec-erd/diagrams/orphans/orphans.dot @@ -1,4 +1,22 @@ digraph "orphans" { graph [ rankdir="RL" bgcolor="#ffffff" nodesep="0.18" ranksep="0.46" fontname="Helvetica" fontsize="11" ration="compress" ]; node [ fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [ arrowsize="0.8" ]; - + "transfer" [ + label=< + <TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> + <TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="54" HEIGHT="16"><B>transfer</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> + <TR><TD PORT="request_uid" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">request_uid</TD></TR></TABLE></TD><TD PORT="request_uid.type" ALIGN="LEFT">bytea[2147483647]</TD></TR> + <TR><TD PORT="row_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">row_id</TD></TR></TABLE></TD><TD PORT="row_id.type" ALIGN="LEFT">int8[19]</TD></TR> + <TR><TD PORT="amount" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">amount</TD></TR></TABLE></TD><TD PORT="amount.type" ALIGN="LEFT">&quot;c2ec&quot;.&quot;taler_amount_currency&quot;[2147483647]</TD></TR> + <TR><TD PORT="exchange_base_url" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">exchange_base_url</TD></TR></TABLE></TD><TD PORT="exchange_base_url.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="wtid" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">wtid</TD></TR></TABLE></TD><TD PORT="wtid.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="credit_account" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">credit_account</TD></TR></TABLE></TD><TD PORT="credit_account.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="transfer_ts" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">transfer_ts</TD></TR></TABLE></TD><TD PORT="transfer_ts.type" ALIGN="LEFT">int8[19]</TD></TR> + <TR><TD PORT="transfer_status" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">transfer_status</TD></TR></TABLE></TD><TD PORT="transfer_status.type" ALIGN="LEFT">int2[5]</TD></TR> + <TR><TD PORT="retries" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">retries</TD></TR></TABLE></TD><TD PORT="retries.type" ALIGN="LEFT">int2[5]</TD></TR> + <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 0</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">0 &gt;</TD></TR> + </TABLE>> + URL="tables/transfer.html" + target="_top" + tooltip="transfer" + ]; } diff --git a/schemaspy/c2ec-erd/diagrams/summary/relationships.real.compact.dot b/schemaspy/c2ec-erd/diagrams/summary/relationships.real.compact.dot @@ -13,24 +13,27 @@ digraph "compactRelationshipsDiagram" { target="_top" tooltip="terminal" ]; - "terminal_provider" [ + "provider" [ label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> - <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120" HEIGHT="16"><B>terminal_provider</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="provider_terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">provider_terminal_id</TD></TR></TABLE></TD></TR> - <TR><TD PORT="name" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">name</TD></TR></TABLE></TD></TR> + <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57" HEIGHT="16"><B>provider</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> + <TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR> + <TR><TD PORT="name" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">name</TD></TR></TABLE></TD></TR> + <TR><TD PORT="payto_target_type" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">payto_target_type</TD></TR></TABLE></TD></TR> <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> </TABLE>> - URL="tables/terminal_provider.html" + URL="tables/provider.html" target="_top" - tooltip="terminal_provider" + tooltip="provider" ]; "withdrawal" [ label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="75" HEIGHT="16"><B>withdrawal</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="withdrawal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD></TR> + <TR><TD PORT="withdrawal_row_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_row_id</TD></TR></TABLE></TD></TR> + <TR><TD PORT="request_uid" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">request_uid</TD></TR></TABLE></TD></TR> + <TR><TD PORT="wopid" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">wopid</TD></TR></TABLE></TD></TR> <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR> <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 1</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD></TR> @@ -39,6 +42,6 @@ digraph "compactRelationshipsDiagram" { target="_top" tooltip="withdrawal" ]; - "terminal":"provider_id":w -> "terminal_provider":"provider_terminal_id":e [arrowhead=none dir=back arrowtail=crowodot]; + "terminal":"provider_id":w -> "provider":"provider_id":e [arrowhead=none dir=back arrowtail=crowodot]; "withdrawal":"terminal_id":w -> "terminal":"terminal_id":e [arrowhead=none dir=back arrowtail=crowodot]; } diff --git a/schemaspy/c2ec-erd/diagrams/summary/relationships.real.large.dot b/schemaspy/c2ec-erd/diagrams/summary/relationships.real.large.dot @@ -15,30 +15,33 @@ digraph "largeRelationshipsDiagram" { target="_top" tooltip="terminal" ]; - "terminal_provider" [ + "provider" [ label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> - <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120" HEIGHT="16"><B>terminal_provider</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="provider_terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">provider_terminal_id</TD></TR></TABLE></TD></TR> - <TR><TD PORT="name" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">name</TD></TR></TABLE></TD></TR> - <TR><TD PORT="backend_base_url" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">backend_base_url</TD></TR></TABLE></TD></TR> - <TR><TD PORT="backend_credentials" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">backend_credentials</TD></TR></TABLE></TD></TR> + <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57" HEIGHT="16"><B>provider</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> + <TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR> + <TR><TD PORT="name" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">name</TD></TR></TABLE></TD></TR> + <TR><TD PORT="payto_target_type" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">payto_target_type</TD></TR></TABLE></TD></TR> + <TR><TD PORT="backend_base_url" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">backend_base_url</TD></TR></TABLE></TD></TR> + <TR><TD PORT="backend_credentials" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">backend_credentials</TD></TR></TABLE></TD></TR> <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> </TABLE>> - URL="tables/terminal_provider.html" + URL="tables/provider.html" target="_top" - tooltip="terminal_provider" + tooltip="provider" ]; "withdrawal" [ label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="75" HEIGHT="16"><B>withdrawal</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="withdrawal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD></TR> - <TR><TD PORT="wopid" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">wopid</TD></TR></TABLE></TD></TR> + <TR><TD PORT="withdrawal_row_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_row_id</TD></TR></TABLE></TD></TR> + <TR><TD PORT="request_uid" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">request_uid</TD></TR></TABLE></TD></TR> + <TR><TD PORT="wopid" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">wopid</TD></TR></TABLE></TD></TR> <TR><TD PORT="reserve_pub_key" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">reserve_pub_key</TD></TR></TABLE></TD></TR> <TR><TD PORT="registration_ts" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">registration_ts</TD></TR></TABLE></TD></TR> <TR><TD PORT="amount" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">amount</TD></TR></TABLE></TD></TR> - <TR><TD PORT="fees" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">fees</TD></TR></TABLE></TD></TR> + <TR><TD PORT="suggested_amount" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">suggested_amount</TD></TR></TABLE></TD></TR> + <TR><TD PORT="terminal_fees" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">terminal_fees</TD></TR></TABLE></TD></TR> <TR><TD PORT="withdrawal_status" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_status</TD></TR></TABLE></TD></TR> <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR> <TR><TD PORT="provider_transaction_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">provider_transaction_id</TD></TR></TABLE></TD></TR> @@ -51,6 +54,6 @@ digraph "largeRelationshipsDiagram" { target="_top" tooltip="withdrawal" ]; - "terminal":"provider_id":w -> "terminal_provider":"provider_terminal_id":e [arrowhead=none dir=back arrowtail=crowodot]; + "terminal":"provider_id":w -> "provider":"provider_id":e [arrowhead=none dir=back arrowtail=crowodot]; "withdrawal":"terminal_id":w -> "terminal":"terminal_id":e [arrowhead=none dir=back arrowtail=crowodot]; } diff --git a/schemaspy/c2ec-erd/diagrams/tables/provider.1degree.dot b/schemaspy/c2ec-erd/diagrams/tables/provider.1degree.dot @@ -0,0 +1,32 @@ +digraph "oneDegreeRelationshipsDiagram" { + graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46" fontname="Helvetica" fontsize="11" ration="compress" ]; node [ fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [ arrowsize="0.8" ]; + "terminal":"provider_id":w -> "provider":"provider_id.type":e [arrowhead=none dir=back arrowtail=crowodot]; + "provider" [ + label=< + <TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> + <TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57" HEIGHT="16"><B>provider</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> + <TR><TD PORT="provider_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">provider_id</TD></TR></TABLE></TD><TD PORT="provider_id.type" ALIGN="LEFT">int8[19]</TD></TR> + <TR><TD PORT="name" COLSPAN="2" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">name</TD></TR></TABLE></TD><TD PORT="name.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="payto_target_type" COLSPAN="2" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">payto_target_type</TD></TR></TABLE></TD><TD PORT="payto_target_type.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="backend_base_url" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">backend_base_url</TD></TR></TABLE></TD><TD PORT="backend_base_url.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="backend_credentials" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">backend_credentials</TD></TR></TABLE></TD><TD PORT="backend_credentials.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 0</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> + </TABLE>> + URL="provider.html" + target="_top" + tooltip="provider" + ]; + "terminal" [ + label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> + <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57" HEIGHT="16"><B>terminal</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> + <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR> + <TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR> + <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> + <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 1</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> + </TABLE>> + URL="terminal.html" + target="_top" + tooltip="terminal" + ]; +} diff --git a/schemaspy/c2ec-erd/diagrams/tables/provider.2degrees.dot b/schemaspy/c2ec-erd/diagrams/tables/provider.2degrees.dot @@ -0,0 +1,44 @@ +digraph "twoDegreesRelationshipsDiagram" { + graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46" fontname="Helvetica" fontsize="11" ration="compress" ]; node [ fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [ arrowsize="0.8" ]; + "terminal":"provider_id":w -> "provider":"provider_id.type":e [arrowhead=none dir=back arrowtail=crowodot]; + "withdrawal":"elipses":w -> "terminal":"terminal_id":e [arrowhead=none dir=back arrowtail=crowodot]; + "provider" [ + label=< + <TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> + <TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57" HEIGHT="16"><B>provider</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> + <TR><TD PORT="provider_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">provider_id</TD></TR></TABLE></TD><TD PORT="provider_id.type" ALIGN="LEFT">int8[19]</TD></TR> + <TR><TD PORT="name" COLSPAN="2" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">name</TD></TR></TABLE></TD><TD PORT="name.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="payto_target_type" COLSPAN="2" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">payto_target_type</TD></TR></TABLE></TD><TD PORT="payto_target_type.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="backend_base_url" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">backend_base_url</TD></TR></TABLE></TD><TD PORT="backend_base_url.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="backend_credentials" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">backend_credentials</TD></TR></TABLE></TD><TD PORT="backend_credentials.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 0</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> + </TABLE>> + URL="provider.html" + target="_top" + tooltip="provider" + ]; + "terminal" [ + label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> + <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57" HEIGHT="16"><B>terminal</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> + <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR> + <TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR> + <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> + <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 1</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> + </TABLE>> + URL="terminal.html" + target="_top" + tooltip="terminal" + ]; + "withdrawal" [ + label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> + <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="75" HEIGHT="16"><B>withdrawal</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> + <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> + <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 1</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD></TR> + </TABLE>> + URL="withdrawal.html" + target="_top" + tooltip="withdrawal" + ]; +} diff --git a/schemaspy/c2ec-erd/diagrams/tables/terminal.1degree.dot b/schemaspy/c2ec-erd/diagrams/tables/terminal.1degree.dot @@ -1,13 +1,27 @@ digraph "oneDegreeRelationshipsDiagram" { graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46" fontname="Helvetica" fontsize="11" ration="compress" ]; node [ fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [ arrowsize="0.8" ]; - "terminal":"provider_id":w -> "terminal_provider":"provider_terminal_id":e [arrowhead=none dir=back arrowtail=crowodot]; + "terminal":"provider_id":w -> "provider":"provider_id":e [arrowhead=none dir=back arrowtail=crowodot]; "withdrawal":"terminal_id":w -> "terminal":"terminal_id.type":e [arrowhead=none dir=back arrowtail=crowodot]; + "provider" [ + label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> + <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57" HEIGHT="16"><B>provider</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> + <TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR> + <TR><TD PORT="name" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">name</TD></TR></TABLE></TD></TR> + <TR><TD PORT="payto_target_type" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="138" HEIGHT="16">payto_target_type</TD></TR></TABLE></TD></TR> + <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> + <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> + </TABLE>> + URL="provider.html" + target="_top" + tooltip="provider" + ]; "terminal" [ label=< <TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> <TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57" HEIGHT="16"><B>terminal</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> <TR><TD PORT="terminal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">terminal_id</TD></TR></TABLE></TD><TD PORT="terminal_id.type" ALIGN="LEFT">int8[19]</TD></TR> - <TR><TD PORT="access_token" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">access_token</TD></TR></TABLE></TD><TD PORT="access_token.type" ALIGN="LEFT">bytea[2147483647]</TD></TR> + <TR><TD PORT="access_token" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">access_token</TD></TR></TABLE></TD><TD PORT="access_token.type" ALIGN="LEFT">text[2147483647]</TD></TR> <TR><TD PORT="active" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">active</TD></TR></TABLE></TD><TD PORT="active.type" ALIGN="LEFT">bool[1]</TD></TR> <TR><TD PORT="description" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">description</TD></TR></TABLE></TD><TD PORT="description.type" ALIGN="LEFT">text[2147483647]</TD></TR> <TR><TD PORT="provider_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">provider_id</TD></TR></TABLE></TD><TD PORT="provider_id.type" ALIGN="LEFT">int8[19]</TD></TR> @@ -17,24 +31,13 @@ digraph "oneDegreeRelationshipsDiagram" { target="_top" tooltip="terminal" ]; - "terminal_provider" [ - label=< - <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> - <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120" HEIGHT="16"><B>terminal_provider</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="provider_terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">provider_terminal_id</TD></TR></TABLE></TD></TR> - <TR><TD PORT="name" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">name</TD></TR></TABLE></TD></TR> - <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> - <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> - </TABLE>> - URL="terminal_provider.html" - target="_top" - tooltip="terminal_provider" - ]; "withdrawal" [ label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="75" HEIGHT="16"><B>withdrawal</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="withdrawal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD></TR> + <TR><TD PORT="withdrawal_row_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_row_id</TD></TR></TABLE></TD></TR> + <TR><TD PORT="request_uid" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">request_uid</TD></TR></TABLE></TD></TR> + <TR><TD PORT="wopid" COLSPAN="3" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">wopid</TD></TR></TABLE></TD></TR> <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR> <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 1</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD></TR> diff --git a/schemaspy/c2ec-erd/diagrams/tables/terminal_provider.1degree.dot b/schemaspy/c2ec-erd/diagrams/tables/terminal_provider.1degree.dot @@ -1,31 +0,0 @@ -digraph "oneDegreeRelationshipsDiagram" { - graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46" fontname="Helvetica" fontsize="11" ration="compress" ]; node [ fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [ arrowsize="0.8" ]; - "terminal":"provider_id":w -> "terminal_provider":"provider_terminal_id.type":e [arrowhead=none dir=back arrowtail=crowodot]; - "terminal" [ - label=< - <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> - <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57" HEIGHT="16"><B>terminal</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR> - <TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR> - <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> - <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 1</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> - </TABLE>> - URL="terminal.html" - target="_top" - tooltip="terminal" - ]; - "terminal_provider" [ - label=< - <TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> - <TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120" HEIGHT="16"><B>terminal_provider</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="provider_terminal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">provider_terminal_id</TD></TR></TABLE></TD><TD PORT="provider_terminal_id.type" ALIGN="LEFT">int8[19]</TD></TR> - <TR><TD PORT="name" COLSPAN="2" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">name</TD></TR></TABLE></TD><TD PORT="name.type" ALIGN="LEFT">text[2147483647]</TD></TR> - <TR><TD PORT="backend_base_url" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">backend_base_url</TD></TR></TABLE></TD><TD PORT="backend_base_url.type" ALIGN="LEFT">text[2147483647]</TD></TR> - <TR><TD PORT="backend_credentials" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">backend_credentials</TD></TR></TABLE></TD><TD PORT="backend_credentials.type" ALIGN="LEFT">text[2147483647]</TD></TR> - <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 0</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> - </TABLE>> - URL="terminal_provider.html" - target="_top" - tooltip="terminal_provider" - ]; -} diff --git a/schemaspy/c2ec-erd/diagrams/tables/terminal_provider.2degrees.dot b/schemaspy/c2ec-erd/diagrams/tables/terminal_provider.2degrees.dot @@ -1,43 +0,0 @@ -digraph "twoDegreesRelationshipsDiagram" { - graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46" fontname="Helvetica" fontsize="11" ration="compress" ]; node [ fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [ arrowsize="0.8" ]; - "terminal":"provider_id":w -> "terminal_provider":"provider_terminal_id.type":e [arrowhead=none dir=back arrowtail=crowodot]; - "withdrawal":"elipses":w -> "terminal":"terminal_id":e [arrowhead=none dir=back arrowtail=crowodot]; - "terminal" [ - label=< - <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> - <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57" HEIGHT="16"><B>terminal</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="terminal_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">terminal_id</TD></TR></TABLE></TD></TR> - <TR><TD PORT="provider_id" COLSPAN="3" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="89" HEIGHT="16">provider_id</TD></TR></TABLE></TD></TR> - <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> - <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 1</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> - </TABLE>> - URL="terminal.html" - target="_top" - tooltip="terminal" - ]; - "terminal_provider" [ - label=< - <TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> - <TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120" HEIGHT="16"><B>terminal_provider</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="provider_terminal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">provider_terminal_id</TD></TR></TABLE></TD><TD PORT="provider_terminal_id.type" ALIGN="LEFT">int8[19]</TD></TR> - <TR><TD PORT="name" COLSPAN="2" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">name</TD></TR></TABLE></TD><TD PORT="name.type" ALIGN="LEFT">text[2147483647]</TD></TR> - <TR><TD PORT="backend_base_url" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">backend_base_url</TD></TR></TABLE></TD><TD PORT="backend_base_url.type" ALIGN="LEFT">text[2147483647]</TD></TR> - <TR><TD PORT="backend_credentials" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="139" HEIGHT="16">backend_credentials</TD></TR></TABLE></TD><TD PORT="backend_credentials.type" ALIGN="LEFT">text[2147483647]</TD></TR> - <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 0</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> - </TABLE>> - URL="terminal_provider.html" - target="_top" - tooltip="terminal_provider" - ]; - "withdrawal" [ - label=< - <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> - <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="75" HEIGHT="16"><B>withdrawal</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> - <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 1</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD></TR> - </TABLE>> - URL="withdrawal.html" - target="_top" - tooltip="withdrawal" - ]; -} diff --git a/schemaspy/c2ec-erd/diagrams/tables/transfer.1degree.dot b/schemaspy/c2ec-erd/diagrams/tables/transfer.1degree.dot @@ -0,0 +1,22 @@ +digraph "oneDegreeRelationshipsDiagram" { + graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46" fontname="Helvetica" fontsize="11" ration="compress" ]; node [ fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [ arrowsize="0.8" ]; + "transfer" [ + label=< + <TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> + <TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="54" HEIGHT="16"><B>transfer</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> + <TR><TD PORT="request_uid" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">request_uid</TD></TR></TABLE></TD><TD PORT="request_uid.type" ALIGN="LEFT">bytea[2147483647]</TD></TR> + <TR><TD PORT="row_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">row_id</TD></TR></TABLE></TD><TD PORT="row_id.type" ALIGN="LEFT">int8[19]</TD></TR> + <TR><TD PORT="amount" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">amount</TD></TR></TABLE></TD><TD PORT="amount.type" ALIGN="LEFT">&quot;c2ec&quot;.&quot;taler_amount_currency&quot;[2147483647]</TD></TR> + <TR><TD PORT="exchange_base_url" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">exchange_base_url</TD></TR></TABLE></TD><TD PORT="exchange_base_url.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="wtid" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">wtid</TD></TR></TABLE></TD><TD PORT="wtid.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="credit_account" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">credit_account</TD></TR></TABLE></TD><TD PORT="credit_account.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="transfer_ts" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">transfer_ts</TD></TR></TABLE></TD><TD PORT="transfer_ts.type" ALIGN="LEFT">int8[19]</TD></TR> + <TR><TD PORT="transfer_status" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">transfer_status</TD></TR></TABLE></TD><TD PORT="transfer_status.type" ALIGN="LEFT">int2[5]</TD></TR> + <TR><TD PORT="retries" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="127" HEIGHT="16">retries</TD></TR></TABLE></TD><TD PORT="retries.type" ALIGN="LEFT">int2[5]</TD></TR> + <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff">&lt; 0</TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">0 &gt;</TD></TR> + </TABLE>> + URL="transfer.html" + target="_top" + tooltip="transfer" + ]; +} diff --git a/schemaspy/c2ec-erd/diagrams/tables/withdrawal.1degree.dot b/schemaspy/c2ec-erd/diagrams/tables/withdrawal.1degree.dot @@ -18,12 +18,14 @@ digraph "oneDegreeRelationshipsDiagram" { label=< <TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> <TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="75" HEIGHT="16"><B>withdrawal</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="withdrawal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD><TD PORT="withdrawal_id.type" ALIGN="LEFT">int8[19]</TD></TR> - <TR><TD PORT="wopid" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">wopid</TD></TR></TABLE></TD><TD PORT="wopid.type" ALIGN="LEFT">bytea[2147483647]</TD></TR> + <TR><TD PORT="withdrawal_row_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_row_id</TD></TR></TABLE></TD><TD PORT="withdrawal_row_id.type" ALIGN="LEFT">int8[19]</TD></TR> + <TR><TD PORT="request_uid" COLSPAN="2" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">request_uid</TD></TR></TABLE></TD><TD PORT="request_uid.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="wopid" COLSPAN="2" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">wopid</TD></TR></TABLE></TD><TD PORT="wopid.type" ALIGN="LEFT">bytea[2147483647]</TD></TR> <TR><TD PORT="reserve_pub_key" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">reserve_pub_key</TD></TR></TABLE></TD><TD PORT="reserve_pub_key.type" ALIGN="LEFT">bytea[2147483647]</TD></TR> <TR><TD PORT="registration_ts" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">registration_ts</TD></TR></TABLE></TD><TD PORT="registration_ts.type" ALIGN="LEFT">int8[19]</TD></TR> <TR><TD PORT="amount" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">amount</TD></TR></TABLE></TD><TD PORT="amount.type" ALIGN="LEFT">&quot;c2ec&quot;.&quot;taler_amount_currency&quot;[2147483647]</TD></TR> - <TR><TD PORT="fees" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">fees</TD></TR></TABLE></TD><TD PORT="fees.type" ALIGN="LEFT">&quot;c2ec&quot;.&quot;taler_amount_currency&quot;[2147483647]</TD></TR> + <TR><TD PORT="suggested_amount" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">suggested_amount</TD></TR></TABLE></TD><TD PORT="suggested_amount.type" ALIGN="LEFT">&quot;c2ec&quot;.&quot;taler_amount_currency&quot;[2147483647]</TD></TR> + <TR><TD PORT="terminal_fees" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">terminal_fees</TD></TR></TABLE></TD><TD PORT="terminal_fees.type" ALIGN="LEFT">&quot;c2ec&quot;.&quot;taler_amount_currency&quot;[2147483647]</TD></TR> <TR><TD PORT="withdrawal_status" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_status</TD></TR></TABLE></TD><TD PORT="withdrawal_status.type" ALIGN="LEFT">&quot;c2ec&quot;.&quot;withdrawal_operation_status&quot;[2147483647]</TD></TR> <TR><TD PORT="terminal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">terminal_id</TD></TR></TABLE></TD><TD PORT="terminal_id.type" ALIGN="LEFT">int8[19]</TD></TR> <TR><TD PORT="provider_transaction_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">provider_transaction_id</TD></TR></TABLE></TD><TD PORT="provider_transaction_id.type" ALIGN="LEFT">text[2147483647]</TD></TR> diff --git a/schemaspy/c2ec-erd/diagrams/tables/withdrawal.2degrees.dot b/schemaspy/c2ec-erd/diagrams/tables/withdrawal.2degrees.dot @@ -1,7 +1,18 @@ digraph "twoDegreesRelationshipsDiagram" { graph [ rankdir="RL" bgcolor="#ffffff" label="\nGenerated by SchemaSpy" labeljust="l" nodesep="0.18" ranksep="0.46" fontname="Helvetica" fontsize="11" ration="compress" ]; node [ fontname="Helvetica" fontsize="11" shape="plaintext" ]; edge [ arrowsize="0.8" ]; - "terminal":"provider_id":w -> "terminal_provider":"elipses":e [arrowhead=none dir=back arrowtail=crowodot]; + "terminal":"provider_id":w -> "provider":"elipses":e [arrowhead=none dir=back arrowtail=crowodot]; "withdrawal":"terminal_id":w -> "terminal":"terminal_id":e [arrowhead=none dir=back arrowtail=crowodot]; + "provider" [ + label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> + <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="57" HEIGHT="16"><B>provider</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> + <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> + <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> + </TABLE>> + URL="provider.html" + target="_top" + tooltip="provider" + ]; "terminal" [ label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> @@ -15,27 +26,18 @@ digraph "twoDegreesRelationshipsDiagram" { target="_top" tooltip="terminal" ]; - "terminal_provider" [ - label=< - <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> - <TR><TD COLSPAN="3" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="120" HEIGHT="16"><B>terminal_provider</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="elipses" COLSPAN="3" ALIGN="LEFT">...</TD></TR> - <TR><TD ALIGN="LEFT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff"> </TD><TD ALIGN="RIGHT" BGCOLOR="#ffffff">1 &gt;</TD></TR> - </TABLE>> - URL="terminal_provider.html" - target="_top" - tooltip="terminal_provider" - ]; "withdrawal" [ label=< <TABLE BORDER="2" CELLBORDER="1" CELLSPACING="0" BGCOLOR="#ffffff"> <TR><TD COLSPAN="4" BGCOLOR="#f5f5f5"><TABLE BORDER="0" CELLSPACING="0"><TR><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="75" HEIGHT="16"><B>withdrawal</B></TD><TD ALIGN="RIGHT">[table]</TD></TR></TABLE></TD></TR> - <TR><TD PORT="withdrawal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_id</TD></TR></TABLE></TD><TD PORT="withdrawal_id.type" ALIGN="LEFT">int8[19]</TD></TR> - <TR><TD PORT="wopid" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">wopid</TD></TR></TABLE></TD><TD PORT="wopid.type" ALIGN="LEFT">bytea[2147483647]</TD></TR> + <TR><TD PORT="withdrawal_row_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/primaryKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_row_id</TD></TR></TABLE></TD><TD PORT="withdrawal_row_id.type" ALIGN="LEFT">int8[19]</TD></TR> + <TR><TD PORT="request_uid" COLSPAN="2" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">request_uid</TD></TR></TABLE></TD><TD PORT="request_uid.type" ALIGN="LEFT">text[2147483647]</TD></TR> + <TR><TD PORT="wopid" COLSPAN="2" BGCOLOR="#ffffff" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">wopid</TD></TR></TABLE></TD><TD PORT="wopid.type" ALIGN="LEFT">bytea[2147483647]</TD></TR> <TR><TD PORT="reserve_pub_key" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">reserve_pub_key</TD></TR></TABLE></TD><TD PORT="reserve_pub_key.type" ALIGN="LEFT">bytea[2147483647]</TD></TR> <TR><TD PORT="registration_ts" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">registration_ts</TD></TR></TABLE></TD><TD PORT="registration_ts.type" ALIGN="LEFT">int8[19]</TD></TR> <TR><TD PORT="amount" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">amount</TD></TR></TABLE></TD><TD PORT="amount.type" ALIGN="LEFT">&quot;c2ec&quot;.&quot;taler_amount_currency&quot;[2147483647]</TD></TR> - <TR><TD PORT="fees" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">fees</TD></TR></TABLE></TD><TD PORT="fees.type" ALIGN="LEFT">&quot;c2ec&quot;.&quot;taler_amount_currency&quot;[2147483647]</TD></TR> + <TR><TD PORT="suggested_amount" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">suggested_amount</TD></TR></TABLE></TD><TD PORT="suggested_amount.type" ALIGN="LEFT">&quot;c2ec&quot;.&quot;taler_amount_currency&quot;[2147483647]</TD></TR> + <TR><TD PORT="terminal_fees" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">terminal_fees</TD></TR></TABLE></TD><TD PORT="terminal_fees.type" ALIGN="LEFT">&quot;c2ec&quot;.&quot;taler_amount_currency&quot;[2147483647]</TD></TR> <TR><TD PORT="withdrawal_status" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">withdrawal_status</TD></TR></TABLE></TD><TD PORT="withdrawal_status.type" ALIGN="LEFT">&quot;c2ec&quot;.&quot;withdrawal_operation_status&quot;[2147483647]</TD></TR> <TR><TD PORT="terminal_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"><IMG SRC="../../images/foreignKeys.png"/></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">terminal_id</TD></TR></TABLE></TD><TD PORT="terminal_id.type" ALIGN="LEFT">int8[19]</TD></TR> <TR><TD PORT="provider_transaction_id" COLSPAN="2" ALIGN="LEFT"><TABLE BORDER="0" CELLSPACING="0" ALIGN="LEFT"><TR ALIGN="LEFT"><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="15" HEIGHT="16"></TD><TD ALIGN="LEFT" FIXEDSIZE="TRUE" WIDTH="159" HEIGHT="16">provider_transaction_id</TD></TR></TABLE></TD><TD PORT="provider_transaction_id.type" ALIGN="LEFT">text[2147483647]</TD></TR> diff --git a/schemaspy/c2ec-erd/index.html b/schemaspy/c2ec-erd/index.html @@ -78,7 +78,7 @@ <div class="col-md-12"> <div class="callout callout-info"> <h4>SchemaSpy Analysis of postgres.c2ec</h4> - <p>Generated on Sun Mar 24 12:44 CET 2024</p> + <p>Generated on Mon May 06 18:41 CEST 2024</p> </div> </div> </div> @@ -94,7 +94,7 @@ <span class="info-box-icon bg-aqua"><i class="fa fa-table"></i></span> <div class="info-box-content"> <span class="info-box-text">TABLES</span> - <span class="info-box-number">3</span> + <span class="info-box-number">4</span> </div> <!-- /.info-box-content --> </div> @@ -118,7 +118,7 @@ <span class="info-box-icon bg-green"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span></span> <div class="info-box-content"> <span class="info-box-text">COLUMNS</span> - <span class="info-box-number">21</span> + <span class="info-box-number">33</span> </div> <!-- /.info-box-content --> </div> @@ -154,7 +154,7 @@ <span class="info-box-icon bg-navy"><i class="fa fa-file-code-o" aria-hidden="true"></i></span> <div class="info-box-content"> <span class="info-box-text">Routines</span> - <span class="info-box-number">0</span> + <span class="info-box-number">4</span> </div> <!-- /.info-box-content --> </div> @@ -224,10 +224,19 @@ <td class="comment detail" style="display: table-cell;"><p>Table containing information about terminals of providers</p></td> </tr> <tr class="tbl even" valign="top"> - <td class="detail"><a href="tables/terminal_provider.html">terminal_provider</a></td> + <td class="detail"><a href="tables/transfer.html">transfer</a></td> + <td class="detail" align="right">0</td> + <td class="detail" align="right">0</td> + <td class="detail" align="right">9</td> + <td class="detail" align="right">-1</td> + <td class="detail" align="right">Table</td> + <td class="comment detail" style="display: table-cell;"><p>Table storing transfers which are sent by the exchange.</p></td> + </tr> + <tr class="tbl even" valign="top"> + <td class="detail"><a href="tables/provider.html">provider</a></td> <td class="detail" align="right">1</td> <td class="detail" align="right">0</td> - <td class="detail" align="right">4</td> + <td class="detail" align="right">5</td> <td class="detail" align="right">-1</td> <td class="detail" align="right">Table</td> <td class="comment detail" style="display: table-cell;"><p>Table describing providers of c2ec terminal</p></td> @@ -236,7 +245,7 @@ <td class="detail"><a href="tables/withdrawal.html">withdrawal</a></td> <td class="detail" align="right">0</td> <td class="detail" align="right">1</td> - <td class="detail" align="right">12</td> + <td class="detail" align="right">14</td> <td class="detail" align="right">-1</td> <td class="detail" align="right">Table</td> <td class="comment detail" style="display: table-cell;"><p>Table representing withdrawal processes initiated by terminals</p></td> diff --git a/schemaspy/c2ec-erd/info-html.txt b/schemaspy/c2ec-erd/info-html.txt @@ -1,5 +1,5 @@ -date=2024-03-24 12:44:39+0100 -os=Linux 6.5.0-26-generic +date=2024-05-06 18:41:50+0200 +os=Linux 6.5.0-28-generic schemaspy-version=6.2.4 schemaspy-build=6.2.4.41 2023-07-21 11:15:12 renderer=Graphviz dot 2.43.0 diff --git a/schemaspy/c2ec-erd/insertionOrder.txt b/schemaspy/c2ec-erd/insertionOrder.txt @@ -1,3 +1,4 @@ -terminal_provider +provider terminal withdrawal +transfer diff --git a/schemaspy/c2ec-erd/orphans.html b/schemaspy/c2ec-erd/orphans.html @@ -87,6 +87,7 @@ <div class="item"> <img id="orphans" src="diagrams/orphans/orphans.png" usemap="#orphans" style="max-width:100%;" border="0" align="top"> <map id="orphans" name="orphans"> +<area shape="rect" id="node1" href="tables/transfer.html" target="_top" title="transfer" alt="" coords="5,5,575,339"> </map> </div> </div> diff --git a/schemaspy/c2ec-erd/postgres.c2ec.xml b/schemaspy/c2ec-erd/postgres.c2ec.xml @@ -1,57 +1,150 @@ <?xml version="1.0" encoding="UTF-8"?><database name="postgres" schema="c2ec" type="PostgreSQL - 15.2 (Debian 15.2-1.pgdg110+1)"> <tables> + <table name="provider" remarks="Table describing providers of c2ec terminal" schema="c2ec" type="TABLE"> + <column autoUpdated="true" defaultValue="null" digits="0" id="0" name="provider_id" nullable="false" remarks="Uniquely identifies a provider" size="19" type="int8" typeCode="-5"> + <child column="provider_id" foreignKey="terminal_provider_id_fkey" implied="false" onDeleteCascade="false" schema="c2ec" table="terminal"/> + </column> + <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="name" nullable="false" remarks="Name of the provider, used for selection in transaction proofing" size="2147483647" type="text" typeCode="12"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="payto_target_type" nullable="false" remarks="The Payto target type associated with the provider. Each payto target type&#10; has exctly one provider. This is needed so that the attestor client can be dynamically&#10; selected by C2EC." size="2147483647" type="text" typeCode="12"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="backend_base_url" nullable="false" remarks="URL of the provider backend for transaction proofing" size="2147483647" type="text" typeCode="12"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="backend_credentials" nullable="false" remarks="Credentials used to access the backend of the provider" size="2147483647" type="text" typeCode="12"/> + <primaryKey column="provider_id" sequenceNumberInPK="1"/> + <index name="provider_pkey" unique="true"> + <column ascending="true" name="provider_id"/> + </index> + <index name="provider_name_key" unique="true"> + <column ascending="true" name="name"/> + </index> + <index name="provider_payto_target_type_key" unique="true"> + <column ascending="true" name="payto_target_type"/> + </index> + </table> <table name="terminal" remarks="Table containing information about terminals of providers" schema="c2ec" type="TABLE"> <column autoUpdated="true" defaultValue="null" digits="0" id="0" name="terminal_id" nullable="false" remarks="Uniquely identifies a terminal" size="19" type="int8" typeCode="-5"> <child column="terminal_id" foreignKey="withdrawal_terminal_id_fkey" implied="false" onDeleteCascade="false" schema="c2ec" table="withdrawal"/> </column> - <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="access_token" nullable="false" remarks="The access token of the terminal used for authentication against the c2ec API" size="2147483647" type="bytea" typeCode="-2"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="access_token" nullable="false" remarks="The access token of the terminal used for authentication against the c2ec API. It is hashed using a PBKDF." size="2147483647" type="text" typeCode="12"/> <column autoUpdated="false" defaultValue="true" digits="0" id="2" name="active" nullable="false" remarks="Indicates if the terminal is active or deactivated" size="1" type="bool" typeCode="-7"/> <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="description" nullable="true" remarks="Description to help identify the terminal. This may include the location and an identifier of the terminal." size="2147483647" type="text" typeCode="12"/> <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="provider_id" nullable="false" remarks="Indicates the terminal provider to which the terminal belongs" size="19" type="int8" typeCode="-5"> - <parent column="provider_terminal_id" foreignKey="terminal_provider_id_fkey" implied="false" onDeleteCascade="false" schema="c2ec" table="terminal_provider"/> + <parent column="provider_id" foreignKey="terminal_provider_id_fkey" implied="false" onDeleteCascade="false" schema="c2ec" table="provider"/> </column> <primaryKey column="terminal_id" sequenceNumberInPK="1"/> <index name="terminal_pkey" unique="true"> <column ascending="true" name="terminal_id"/> </index> - <checkConstraint constraint="((length(access_token) = 32))" name="terminal_access_token_check"/> </table> - <table name="terminal_provider" remarks="Table describing providers of c2ec terminal" schema="c2ec" type="TABLE"> - <column autoUpdated="true" defaultValue="null" digits="0" id="0" name="provider_terminal_id" nullable="false" remarks="Uniquely identifies a provider" size="19" type="int8" typeCode="-5"> - <child column="provider_id" foreignKey="terminal_provider_id_fkey" implied="false" onDeleteCascade="false" schema="c2ec" table="terminal"/> - </column> - <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="name" nullable="false" remarks="Name of the provider, used for selection in transaction proofing" size="2147483647" type="text" typeCode="12"/> - <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="backend_base_url" nullable="false" remarks="URL of the provider backend for transaction proofing" size="2147483647" type="text" typeCode="12"/> - <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="backend_credentials" nullable="false" remarks="Credentials used to access the backend of the provider" size="2147483647" type="text" typeCode="12"/> - <primaryKey column="provider_terminal_id" sequenceNumberInPK="1"/> - <index name="terminal_provider_pkey" unique="true"> - <column ascending="true" name="provider_terminal_id"/> - </index> - <index name="terminal_provider_name_key" unique="true"> - <column ascending="true" name="name"/> + <table name="transfer" remarks="Table storing transfers which are sent by the exchange." schema="c2ec" type="TABLE"> + <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="request_uid" nullable="false" remarks="A unique identifier for the transfer." size="2147483647" type="bytea" typeCode="-2"/> + <column autoUpdated="true" defaultValue="null" digits="0" id="1" name="row_id" nullable="false" remarks="The row id is used to support the history outgoing" size="19" type="int8" typeCode="-5"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="amount" nullable="false" remarks="The amount to be transferred" size="2147483647" type="&quot;c2ec&quot;.&quot;taler_amount_currency&quot;" typeCode="2002"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="exchange_base_url" nullable="false" remarks="The base url of the exchange, sending the transfer request" size="2147483647" type="text" typeCode="12"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="wtid" nullable="false" remarks="The id of the transaction" size="2147483647" type="text" typeCode="12"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="credit_account" nullable="false" remarks="The payto address of the transfer target" size="2147483647" type="text" typeCode="12"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="transfer_ts" nullable="false" remarks="Timestamp when the transfer was last processesd" size="19" type="int8" typeCode="-5"/> + <column autoUpdated="false" defaultValue="1" digits="0" id="7" name="transfer_status" nullable="false" remarks="Non-zero when the transfer failed at the last retry. &#10; Zero if transfer succeeded. Negative, when max amount of &#10; retries was exceeded. Because the transfer was not yet triggered&#10; when it is added, the status is set to 1 by default." size="5" type="int2" typeCode="5"/> + <column autoUpdated="false" defaultValue="0" digits="0" id="8" name="retries" nullable="false" remarks="Number of retries" size="5" type="int2" typeCode="5"/> + <primaryKey column="request_uid" sequenceNumberInPK="1"/> + <index name="transfer_pkey" unique="true"> + <column ascending="true" name="request_uid"/> </index> </table> <table name="withdrawal" remarks="Table representing withdrawal processes initiated by terminals" schema="c2ec" type="TABLE"> - <column autoUpdated="true" defaultValue="null" digits="0" id="0" name="withdrawal_id" nullable="false" remarks="The withdrawal id is used a technical id used by the wire gateway to sequentially select new transactions" size="19" type="int8" typeCode="-5"/> - <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="wopid" nullable="false" remarks="The wopid (withdrawal operation id) is a nonce generated by the terminal requesting a withdrawal.&#10;&#9;The wopid identifies a specific withdrawal spawning all involved systems." size="2147483647" type="bytea" typeCode="-2"/> - <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="reserve_pub_key" nullable="false" remarks="Reserve public key for the reserve which will hold the withdrawal amount after completion" size="2147483647" type="bytea" typeCode="-2"/> - <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="registration_ts" nullable="false" remarks="Timestamp of when the withdrawal request was registered" size="19" type="int8" typeCode="-5"/> - <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="amount" nullable="false" remarks="Effective amount to be put into the reserve after completion" size="2147483647" type="&quot;c2ec&quot;.&quot;taler_amount_currency&quot;" typeCode="2002"/> - <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="fees" nullable="true" remarks="Fees associated with the withdrawal, including exchange and provider fees" size="2147483647" type="&quot;c2ec&quot;.&quot;taler_amount_currency&quot;" typeCode="2002"/> - <column autoUpdated="false" defaultValue="'pending'::c2ec.withdrawal_operation_status" digits="0" id="6" name="withdrawal_status" nullable="false" remarks="Status of the withdrawal process" size="2147483647" type="&quot;c2ec&quot;.&quot;withdrawal_operation_status&quot;" typeCode="12"/> - <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="terminal_id" nullable="false" remarks="ID of the terminal that initiated the withdrawal" size="19" type="int8" typeCode="-5"> + <column autoUpdated="true" defaultValue="null" digits="0" id="0" name="withdrawal_row_id" nullable="false" remarks="The withdrawal id is used a technical id used by the wire gateway to sequentially select new transactions" size="19" type="int8" typeCode="-5"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="request_uid" nullable="false" remarks="The request uid identifies each request and is stored to make the API interacting&#10; with withdrawals idempotent." size="2147483647" type="text" typeCode="12"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="wopid" nullable="false" remarks="The wopid (withdrawal operation id) is a nonce generated by the terminal requesting a withdrawal.&#10;&#9;The wopid identifies a specific withdrawal spawning all involved systems." size="2147483647" type="bytea" typeCode="-2"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="reserve_pub_key" nullable="true" remarks="Reserve public key for the reserve which will hold the withdrawal amount after completion" size="2147483647" type="bytea" typeCode="-2"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="registration_ts" nullable="false" remarks="Timestamp of when the withdrawal request was registered" size="19" type="int8" typeCode="-5"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="amount" nullable="true" remarks="Effective amount to be put into the reserve after completion" size="2147483647" type="&quot;c2ec&quot;.&quot;taler_amount_currency&quot;" typeCode="2002"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="suggested_amount" nullable="true" remarks="The suggested amount is given by the entity initializing the wihdrawal.&#10; If the suggested amount is given, the wallet may still change the amount." size="2147483647" type="&quot;c2ec&quot;.&quot;taler_amount_currency&quot;" typeCode="2002"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="terminal_fees" nullable="true" remarks="Fees associated with the withdrawal but not related to the taler payment system." size="2147483647" type="&quot;c2ec&quot;.&quot;taler_amount_currency&quot;" typeCode="2002"/> + <column autoUpdated="false" defaultValue="'pending'::c2ec.withdrawal_operation_status" digits="0" id="8" name="withdrawal_status" nullable="false" remarks="Status of the withdrawal process" size="2147483647" type="&quot;c2ec&quot;.&quot;withdrawal_operation_status&quot;" typeCode="12"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="terminal_id" nullable="true" remarks="ID of the terminal that initiated the withdrawal" size="19" type="int8" typeCode="-5"> <parent column="terminal_id" foreignKey="withdrawal_terminal_id_fkey" implied="false" onDeleteCascade="false" schema="c2ec" table="terminal"/> </column> - <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="provider_transaction_id" nullable="true" remarks="Transaction identifier supplied by the provider for backend request" size="2147483647" type="text" typeCode="12"/> - <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="last_retry_ts" nullable="true" remarks="Timestamp of the last retry attempt" size="19" type="int8" typeCode="-5"/> - <column autoUpdated="false" defaultValue="0" digits="0" id="10" name="retry_counter" nullable="false" remarks="Number of retry attempts" size="10" type="int4" typeCode="4"/> - <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="completion_proof" nullable="true" remarks="Proof of transaction upon final completion delivered by the providers system" size="2147483647" type="bytea" typeCode="-2"/> - <primaryKey column="withdrawal_id" sequenceNumberInPK="1"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="provider_transaction_id" nullable="true" remarks="Transaction identifier supplied by the provider for backend request" size="2147483647" type="text" typeCode="12"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="last_retry_ts" nullable="true" remarks="Timestamp of the last retry attempt" size="19" type="int8" typeCode="-5"/> + <column autoUpdated="false" defaultValue="0" digits="0" id="12" name="retry_counter" nullable="false" remarks="Number of retry attempts" size="10" type="int4" typeCode="4"/> + <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="completion_proof" nullable="true" remarks="Proof of transaction upon final completion delivered by the providers system" size="2147483647" type="bytea" typeCode="-2"/> + <primaryKey column="withdrawal_row_id" sequenceNumberInPK="1"/> <index name="withdrawal_pkey" unique="true"> - <column ascending="true" name="withdrawal_id"/> + <column ascending="true" name="withdrawal_row_id"/> + </index> + <index name="withdrawal_request_uid_key" unique="true"> + <column ascending="true" name="request_uid"/> + </index> + <index name="withdrawal_wopid_key" unique="true"> + <column ascending="true" name="wopid"/> + </index> + <index name="wopid_index" unique="false"> + <column ascending="true" name="wopid"/> </index> <checkConstraint constraint="((length(reserve_pub_key) = 32))" name="withdrawal_reserve_pub_key_check"/> <checkConstraint constraint="((length(wopid) = 32))" name="withdrawal_wopid_check"/> </table> </tables> + <routines> + <routine dataAccess="MODIFIES" deterministic="false" name="emit_payment_notification()" returnType="trigger" securityType="INVOKER" type="FUNCTION"> + <comment><![CDATA[The function emits the name of the provider, row id of the withdrawal + and the provider_transaction_id, on the channel "payment_notification". + The format of the payload is as follows: + "{PROVIDER_NAME}|{WITHDRAWAL_ID}|{PROVIDER_TRANSACTION_ID}". The subscriber + shall decide which attestation process to use, based on the name of + the provider.]]></comment> + <definition language="plpgsql"><![CDATA[DECLARE + provider_name TEXT; +BEGIN + SELECT p.name INTO provider_name FROM c2ec.provider AS p + LEFT JOIN c2ec.terminal AS t + ON t.provider_id = p.provider_id + LEFT JOIN c2ec.withdrawal AS w + ON t.terminal_id = NEW.terminal_id + WHERE w.withdrawal_row_id = NEW.withdrawal_row_id; + PERFORM pg_notify('payment_notification', + provider_name || '|' || + NEW.withdrawal_row_id || '|' || + NEW.provider_transaction_id + ); + RETURN NULL; +END;]]></definition> + <parameters> + <parameter mode="IN"/> + </parameters> + </routine> + <routine dataAccess="MODIFIES" deterministic="false" name="emit_retry_notification()" returnType="trigger" securityType="INVOKER" type="FUNCTION"> + <comment><![CDATA[The function emits the id of the withdrawal for which the last + retry timestamp was updated. This shall trigger a retry operation. + How many retries are attempted is specified and handled by the application]]></comment> + <definition language="plpgsql"><![CDATA[BEGIN + PERFORM pg_notify('retry', '' || NEW.withdrawal_row_id); + RETURN NULL; +END;]]></definition> + <parameters> + <parameter mode="IN"/> + </parameters> + </routine> + <routine dataAccess="MODIFIES" deterministic="false" name="emit_transfer_notification()" returnType="trigger" securityType="INVOKER" type="FUNCTION"> + <comment><![CDATA[The function emits the request_uid of a transfer which shall trigger a transfer + by the receiver of the notification.]]></comment> + <definition language="plpgsql"><![CDATA[BEGIN + PERFORM pg_notify('transfer', encode(NEW.request_uid::BYTEA, 'base64')); + RETURN NULL; +END;]]></definition> + <parameters> + <parameter mode="IN"/> + </parameters> + </routine> + <routine dataAccess="MODIFIES" deterministic="false" name="emit_withdrawal_status()" returnType="trigger" securityType="INVOKER" type="FUNCTION"> + <comment><![CDATA[The function encodes the wopid in base64 and + sends a notification on the channel "w_{wopid}" + with the status in the payload.]]></comment> + <definition language="plpgsql"><![CDATA[BEGIN + PERFORM pg_notify('w_' || encode(NEW.wopid::BYTEA, 'base64'), NEW.withdrawal_status::TEXT); + RETURN NULL; +END;]]></definition> + <parameters> + <parameter mode="IN"/> + </parameters> + </routine> + </routines> </database> diff --git a/schemaspy/c2ec-erd/relationships.html b/schemaspy/c2ec-erd/relationships.html @@ -93,17 +93,17 @@ <div class="tab-content no-padding"> <div class="chart tab-pane active" id="compactDegreeImg-chart" style="position: relative; overflow-x:auto;"> <map id="compactRelationshipsDiagram" name="compactRelationshipsDiagram"> -<area shape="rect" id="node1" href="tables/terminal.html" target="_top" title="terminal" alt="" coords="293,35,461,181"> -<area shape="rect" id="node2" href="tables/terminal_provider.html" target="_top" title="terminal_provider" alt="" coords="5,64,249,211"> -<area shape="rect" id="node3" href="tables/withdrawal.html" target="_top" title="withdrawal" alt="" coords="505,5,767,152"> +<area shape="rect" id="node1" href="tables/terminal.html" target="_top" title="terminal" alt="" coords="283,93,451,240"> +<area shape="rect" id="node2" href="tables/provider.html" target="_top" title="provider" alt="" coords="5,123,239,299"> +<area shape="rect" id="node3" href="tables/withdrawal.html" target="_top" title="withdrawal" alt="" coords="495,5,756,211"> </map> <a name='diagram'><img id="compactDegreeImg" src="diagrams/summary/relationships.real.compact.png" usemap="#compactRelationshipsDiagram" class="diagram" border="0" align="left"></a> </div> <div class="chart tab-pane " id="largeDegreeImg-chart" style="position: relative; overflow-x:auto;"> <map id="largeRelationshipsDiagram" name="largeRelationshipsDiagram"> -<area shape="rect" id="node1" href="tables/terminal.html" target="_top" title="terminal" alt="" coords="293,211,461,421"> -<area shape="rect" id="node2" href="tables/terminal_provider.html" target="_top" title="terminal_provider" alt="" coords="5,328,249,509"> -<area shape="rect" id="node3" href="tables/withdrawal.html" target="_top" title="withdrawal" alt="" coords="505,5,767,421"> +<area shape="rect" id="node1" href="tables/terminal.html" target="_top" title="terminal" alt="" coords="283,269,451,480"> +<area shape="rect" id="node2" href="tables/provider.html" target="_top" title="provider" alt="" coords="5,387,239,597"> +<area shape="rect" id="node3" href="tables/withdrawal.html" target="_top" title="withdrawal" alt="" coords="495,5,756,480"> </map> <a name='diagram'><img id="largeDegreeImg" src="diagrams/summary/relationships.real.large.png" usemap="#largeRelationshipsDiagram" class="diagram" border="0" align="left"></a> </div> diff --git a/schemaspy/c2ec-erd/routines.html b/schemaspy/c2ec-erd/routines.html @@ -102,6 +102,42 @@ </tr> </thead> <tbody> + <tr> + <td><a href="routines/emit_transfer_notification___ed278d94.html">emit_transfer_notification()</a></td> + <td>FUNCTION</td> + <td>plpgsql</td> + <td>false</td> + <td>trigger</td> + <td>INVOKER</td> + <td><p>The function emits the request_uid of a transfer which shall trigger a transfer by the receiver of the notification.</p></td> + </tr> + <tr> + <td><a href="routines/emit_withdrawal_status___b48bc651.html">emit_withdrawal_status()</a></td> + <td>FUNCTION</td> + <td>plpgsql</td> + <td>false</td> + <td>trigger</td> + <td>INVOKER</td> + <td><p>The function encodes the wopid in base64 and sends a notification on the channel &ldquo;w_{wopid}&rdquo; with the status in the payload.</p></td> + </tr> + <tr> + <td><a href="routines/emit_payment_notification___f8fd6071.html">emit_payment_notification()</a></td> + <td>FUNCTION</td> + <td>plpgsql</td> + <td>false</td> + <td>trigger</td> + <td>INVOKER</td> + <td><p>The function emits the name of the provider, row id of the withdrawal and the provider_transaction_id, on the channel &ldquo;payment_notification&rdquo;. The format of the payload is as follows: &ldquo;{PROVIDER_NAME}|{WITHDRAWAL_ID}|{PROVIDER_TRANSACTION_ID}&rdquo;. The subscriber shall decide which attestation process to use, based on the name of the provider.</p></td> + </tr> + <tr> + <td><a href="routines/emit_retry_notification___f0cf628f.html">emit_retry_notification()</a></td> + <td>FUNCTION</td> + <td>plpgsql</td> + <td>false</td> + <td>trigger</td> + <td>INVOKER</td> + <td><p>The function emits the id of the withdrawal for which the last retry timestamp was updated. This shall trigger a retry operation. How many retries are attempted is specified and handled by the application</p></td> + </tr> </tbody> </table> </div> diff --git a/schemaspy/c2ec-erd/routines/emit_payment_notification___f8fd6071.html b/schemaspy/c2ec-erd/routines/emit_payment_notification___f8fd6071.html @@ -0,0 +1,186 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>postgres.c2ec</title> + <!-- Tell the browser to be responsive to screen width --> + <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> + <link rel="icon" type="image/png" sizes="16x16" href="../favicon.png"> + <!-- Bootstrap 3.3.5 --> + <link rel="stylesheet" href="../bower/admin-lte/bootstrap/css/bootstrap.min.css"> + <!-- Font Awesome --> + <link rel="stylesheet" href="../bower/font-awesome/css/font-awesome.min.css"> + <!-- Ionicons --> + <link rel="stylesheet" href="../bower/ionicons/css/ionicons.min.css"> + <!-- DataTables --> + <link rel="stylesheet" href="../bower/datatables.net-bs/css/dataTables.bootstrap.min.css"> + <link rel="stylesheet" href="../bower/datatables.net-buttons-bs/css/buttons.bootstrap.min.css"> + <!-- Code Mirror --> + <link rel="stylesheet" href="../bower/codemirror/codemirror.css"> + <!-- Fonts --> + <link href='../fonts/indieflower/indie-flower.css' rel='stylesheet' type='text/css'> + <link href='../fonts/source-sans-pro/source-sans-pro.css' rel='stylesheet' type='text/css'> + + <!-- Theme style --> + <link rel="stylesheet" href="../bower/admin-lte/dist/css/AdminLTE.min.css"> + <!-- Salvattore --> + <link rel="stylesheet" href="../bower/salvattore/salvattore.css"> + <!-- AdminLTE Skins. Choose a skin from the css/skins + folder instead of downloading all of them to reduce the load. --> + <link rel="stylesheet" href="../bower/admin-lte/dist/css/skins/_all-skins.min.css"> + <!-- SchemaSpy --> + <link rel="stylesheet" href="../schemaSpy.css"> + + <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="../bower/html5shiv/html5shiv.min.js"></script> + <script src="../bower/respond/respond.min.js"></script> + <![endif]--> + </head> + <!-- ADD THE CLASS layout-top-nav TO REMOVE THE SIDEBAR. --> + <body class="hold-transition skin-blue layout-top-nav"> + <div class="wrapper"> + <header class="main-header"> + <nav class="navbar navbar-static-top"> + <div class="container"> + <div class="navbar-header"> + <a href="../index.html" class="navbar-brand"><b>postgres</b></a><span class="navbar-brand" style="padding-left: 0">.c2ec</span> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa fa-bars"></i></button> + </div> + + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="collapse navbar-collapse pull-left" id="navbar-collapse"> + <ul class="nav navbar-nav"> + <li><a href="../index.html">Tables <span class="sr-only">(current)</span></a></li> + <li><a href="../columns.html" title="All of the columns in the schema">Columns</a></li> + <li><a href="../constraints.html" title="Useful for diagnosing error messages that just give constraint name or number">Constraints</a></li> + <li><a href="../relationships.html" title="Diagram of table relationships">Relationships</a></li> + <li><a href="../orphans.html" title="View of tables with neither parents nor children">Orphan&nbsp;Tables</a></li> + <li><a href="../anomalies.html" title="Things that might not be quite right">Anomalies</a></li> + <li><a href="../routines.html" title="Procedures and functions">Routines</a></li> + </ul> + </div> + <!-- /.navbar-collapse --> + <!-- Navbar Right Menu --> + </div> + <!-- /.container-fluid --> + </nav> + </header> + <!-- Main content --> + <!-- Full Width Column --> + <div class="content-wrapper"> + <!-- Content Header (Page header) --> + <section class="content-header"> + <h1>emit_payment_notification()</h1><br /> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-file-text-o"></i> + <h3 id="Description" class="box-title">Description</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <!-- /.box-header --> + <div class="box-body clearfix"> + <p><p>The function emits the name of the provider, row id of the withdrawal and the provider_transaction_id, on the channel &ldquo;payment_notification&rdquo;. The format of the payload is as follows: &ldquo;{PROVIDER_NAME}|{WITHDRAWAL_ID}|{PROVIDER_TRANSACTION_ID}&rdquo;. The subscriber shall decide which attestation process to use, based on the name of the provider.</p></p> + </div> + <!-- /.box-body --> + </div> + </section> + <!-- Main content --> + <section class="content"> + <div class="box box-primary"> + <div class="box-header with-border"> + <span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> + <h3 id="Columns" class="box-title">Parameters</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <table id="standard_table" class="table table-bordered table-striped dataTable" role="grid"> + <thead align='left'> + <tr> + <th>Name</th> + <th>Type</th> + <th>Mode</th> + </tr> + </thead> + <tbody> + <tr> + <td></td> + <td></td> + <td>IN</td> + </tr> + </tbody> + </table> + </div> + </div> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-file-code-o"></i> + <h3 id="RoutineDefinition" class="box-title">Definition</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <textarea id="sql-script-codemirror" name="sql-script-codemirror" rows="" style="display: none;">DECLARE&#10; provider_name TEXT;&#10;BEGIN&#10; SELECT p.name INTO provider_name FROM c2ec.provider AS p &#10; LEFT JOIN c2ec.terminal AS t &#10; ON t.provider_id &#61; p.provider_id&#10; LEFT JOIN c2ec.withdrawal AS w&#10; ON t.terminal_id &#61; NEW.terminal_id&#10; WHERE w.withdrawal_row_id &#61; NEW.withdrawal_row_id;&#10; PERFORM pg_notify(&#39;payment_notification&#39;,&#10; provider_name || &#39;|&#39; ||&#10; NEW.withdrawal_row_id || &#39;|&#39; || &#10; NEW.provider_transaction_id&#10; );&#10; RETURN NULL;&#10;END;</textarea> + </div> + </div> + </section> + </div> + <!-- /.content-wrapper --> + <footer class="main-footer"> + <div> + <div class="pull-right hidden-xs"> + <a href="https://github.com/schemaspy/schemaspy" title="GitHub for SchemaSpy"><i class="fa fa-github-square fa-2x"></i></a> + <a href="http://stackoverflow.com/questions/tagged/schemaspy" title="StackOverflow for SchemaSpy"><i class="fa fa-stack-overflow fa-2x"></i></a> + </div> + <strong>Generated by <a href="http://schemaspy.org/" class="logo-text"><i class="fa fa-database"></i> SchemaSpy 6.2.4</a></strong> + </div> + <!-- /.container --> + </footer> + </div> + <!-- ./wrapper --> + + <!-- jQuery 2.2.3 --> + <script src="../bower/admin-lte/plugins/jQuery/jquery-2.2.3.min.js"></script> + <script src="../bower/admin-lte/plugins/jQueryUI/jquery-ui.min.js"></script> + <!-- Bootstrap 3.3.5 --> + <script src="../bower/admin-lte/bootstrap/js/bootstrap.min.js"></script> + <!-- DataTables --> + <script src="../bower/datatables.net/jquery.dataTables.min.js"></script> + <script src="../bower/datatables.net-bs/js/dataTables.bootstrap.min.js"></script> + <script src="../bower/datatables.net-buttons/dataTables.buttons.min.js"></script> + <script src="../bower/datatables.net-buttons-bs/js/buttons.bootstrap.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.html5.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.print.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.colVis.min.js"></script> + <!-- SheetJS --> + <script src="../bower/js-xlsx/xlsx.full.min.js"></script> + <!-- pdfmake --> + <script src="../bower/pdfmake/pdfmake.min.js"></script> + <script src="../bower/pdfmake/vfs_fonts.js"></script> + <!-- SlimScroll --> + <script src="../bower/admin-lte/plugins/slimScroll/jquery.slimscroll.min.js"></script> + <!-- FastClick --> + <script src="../bower/admin-lte/plugins/fastclick/fastclick.js"></script> + <!-- Salvattore --> + <script src="../bower/salvattore/salvattore.min.js"></script> + <!-- AnchorJS --> + <script src="../bower/anchor-js/anchor.min.js"></script> + <!-- CodeMirror --> + <script src="../bower/codemirror/codemirror.js"></script> + <script src="../bower/codemirror/sql.js"></script> + <!-- AdminLTE App --> + <script src="../bower/admin-lte/dist/js/app.min.js"></script> + <script src="routine.js"></script> + <script src="../schemaSpy.js"></script> + </body> +</html> +\ No newline at end of file diff --git a/schemaspy/c2ec-erd/routines/emit_retry_notification___f0cf628f.html b/schemaspy/c2ec-erd/routines/emit_retry_notification___f0cf628f.html @@ -0,0 +1,186 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>postgres.c2ec</title> + <!-- Tell the browser to be responsive to screen width --> + <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> + <link rel="icon" type="image/png" sizes="16x16" href="../favicon.png"> + <!-- Bootstrap 3.3.5 --> + <link rel="stylesheet" href="../bower/admin-lte/bootstrap/css/bootstrap.min.css"> + <!-- Font Awesome --> + <link rel="stylesheet" href="../bower/font-awesome/css/font-awesome.min.css"> + <!-- Ionicons --> + <link rel="stylesheet" href="../bower/ionicons/css/ionicons.min.css"> + <!-- DataTables --> + <link rel="stylesheet" href="../bower/datatables.net-bs/css/dataTables.bootstrap.min.css"> + <link rel="stylesheet" href="../bower/datatables.net-buttons-bs/css/buttons.bootstrap.min.css"> + <!-- Code Mirror --> + <link rel="stylesheet" href="../bower/codemirror/codemirror.css"> + <!-- Fonts --> + <link href='../fonts/indieflower/indie-flower.css' rel='stylesheet' type='text/css'> + <link href='../fonts/source-sans-pro/source-sans-pro.css' rel='stylesheet' type='text/css'> + + <!-- Theme style --> + <link rel="stylesheet" href="../bower/admin-lte/dist/css/AdminLTE.min.css"> + <!-- Salvattore --> + <link rel="stylesheet" href="../bower/salvattore/salvattore.css"> + <!-- AdminLTE Skins. Choose a skin from the css/skins + folder instead of downloading all of them to reduce the load. --> + <link rel="stylesheet" href="../bower/admin-lte/dist/css/skins/_all-skins.min.css"> + <!-- SchemaSpy --> + <link rel="stylesheet" href="../schemaSpy.css"> + + <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="../bower/html5shiv/html5shiv.min.js"></script> + <script src="../bower/respond/respond.min.js"></script> + <![endif]--> + </head> + <!-- ADD THE CLASS layout-top-nav TO REMOVE THE SIDEBAR. --> + <body class="hold-transition skin-blue layout-top-nav"> + <div class="wrapper"> + <header class="main-header"> + <nav class="navbar navbar-static-top"> + <div class="container"> + <div class="navbar-header"> + <a href="../index.html" class="navbar-brand"><b>postgres</b></a><span class="navbar-brand" style="padding-left: 0">.c2ec</span> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa fa-bars"></i></button> + </div> + + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="collapse navbar-collapse pull-left" id="navbar-collapse"> + <ul class="nav navbar-nav"> + <li><a href="../index.html">Tables <span class="sr-only">(current)</span></a></li> + <li><a href="../columns.html" title="All of the columns in the schema">Columns</a></li> + <li><a href="../constraints.html" title="Useful for diagnosing error messages that just give constraint name or number">Constraints</a></li> + <li><a href="../relationships.html" title="Diagram of table relationships">Relationships</a></li> + <li><a href="../orphans.html" title="View of tables with neither parents nor children">Orphan&nbsp;Tables</a></li> + <li><a href="../anomalies.html" title="Things that might not be quite right">Anomalies</a></li> + <li><a href="../routines.html" title="Procedures and functions">Routines</a></li> + </ul> + </div> + <!-- /.navbar-collapse --> + <!-- Navbar Right Menu --> + </div> + <!-- /.container-fluid --> + </nav> + </header> + <!-- Main content --> + <!-- Full Width Column --> + <div class="content-wrapper"> + <!-- Content Header (Page header) --> + <section class="content-header"> + <h1>emit_retry_notification()</h1><br /> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-file-text-o"></i> + <h3 id="Description" class="box-title">Description</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <!-- /.box-header --> + <div class="box-body clearfix"> + <p><p>The function emits the id of the withdrawal for which the last retry timestamp was updated. This shall trigger a retry operation. How many retries are attempted is specified and handled by the application</p></p> + </div> + <!-- /.box-body --> + </div> + </section> + <!-- Main content --> + <section class="content"> + <div class="box box-primary"> + <div class="box-header with-border"> + <span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> + <h3 id="Columns" class="box-title">Parameters</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <table id="standard_table" class="table table-bordered table-striped dataTable" role="grid"> + <thead align='left'> + <tr> + <th>Name</th> + <th>Type</th> + <th>Mode</th> + </tr> + </thead> + <tbody> + <tr> + <td></td> + <td></td> + <td>IN</td> + </tr> + </tbody> + </table> + </div> + </div> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-file-code-o"></i> + <h3 id="RoutineDefinition" class="box-title">Definition</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <textarea id="sql-script-codemirror" name="sql-script-codemirror" rows="" style="display: none;">BEGIN&#10; PERFORM pg_notify(&#39;retry&#39;, &#39;&#39; || NEW.withdrawal_row_id);&#10; RETURN NULL;&#10;END;</textarea> + </div> + </div> + </section> + </div> + <!-- /.content-wrapper --> + <footer class="main-footer"> + <div> + <div class="pull-right hidden-xs"> + <a href="https://github.com/schemaspy/schemaspy" title="GitHub for SchemaSpy"><i class="fa fa-github-square fa-2x"></i></a> + <a href="http://stackoverflow.com/questions/tagged/schemaspy" title="StackOverflow for SchemaSpy"><i class="fa fa-stack-overflow fa-2x"></i></a> + </div> + <strong>Generated by <a href="http://schemaspy.org/" class="logo-text"><i class="fa fa-database"></i> SchemaSpy 6.2.4</a></strong> + </div> + <!-- /.container --> + </footer> + </div> + <!-- ./wrapper --> + + <!-- jQuery 2.2.3 --> + <script src="../bower/admin-lte/plugins/jQuery/jquery-2.2.3.min.js"></script> + <script src="../bower/admin-lte/plugins/jQueryUI/jquery-ui.min.js"></script> + <!-- Bootstrap 3.3.5 --> + <script src="../bower/admin-lte/bootstrap/js/bootstrap.min.js"></script> + <!-- DataTables --> + <script src="../bower/datatables.net/jquery.dataTables.min.js"></script> + <script src="../bower/datatables.net-bs/js/dataTables.bootstrap.min.js"></script> + <script src="../bower/datatables.net-buttons/dataTables.buttons.min.js"></script> + <script src="../bower/datatables.net-buttons-bs/js/buttons.bootstrap.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.html5.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.print.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.colVis.min.js"></script> + <!-- SheetJS --> + <script src="../bower/js-xlsx/xlsx.full.min.js"></script> + <!-- pdfmake --> + <script src="../bower/pdfmake/pdfmake.min.js"></script> + <script src="../bower/pdfmake/vfs_fonts.js"></script> + <!-- SlimScroll --> + <script src="../bower/admin-lte/plugins/slimScroll/jquery.slimscroll.min.js"></script> + <!-- FastClick --> + <script src="../bower/admin-lte/plugins/fastclick/fastclick.js"></script> + <!-- Salvattore --> + <script src="../bower/salvattore/salvattore.min.js"></script> + <!-- AnchorJS --> + <script src="../bower/anchor-js/anchor.min.js"></script> + <!-- CodeMirror --> + <script src="../bower/codemirror/codemirror.js"></script> + <script src="../bower/codemirror/sql.js"></script> + <!-- AdminLTE App --> + <script src="../bower/admin-lte/dist/js/app.min.js"></script> + <script src="routine.js"></script> + <script src="../schemaSpy.js"></script> + </body> +</html> +\ No newline at end of file diff --git a/schemaspy/c2ec-erd/routines/emit_transfer_notification___ed278d94.html b/schemaspy/c2ec-erd/routines/emit_transfer_notification___ed278d94.html @@ -0,0 +1,186 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>postgres.c2ec</title> + <!-- Tell the browser to be responsive to screen width --> + <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> + <link rel="icon" type="image/png" sizes="16x16" href="../favicon.png"> + <!-- Bootstrap 3.3.5 --> + <link rel="stylesheet" href="../bower/admin-lte/bootstrap/css/bootstrap.min.css"> + <!-- Font Awesome --> + <link rel="stylesheet" href="../bower/font-awesome/css/font-awesome.min.css"> + <!-- Ionicons --> + <link rel="stylesheet" href="../bower/ionicons/css/ionicons.min.css"> + <!-- DataTables --> + <link rel="stylesheet" href="../bower/datatables.net-bs/css/dataTables.bootstrap.min.css"> + <link rel="stylesheet" href="../bower/datatables.net-buttons-bs/css/buttons.bootstrap.min.css"> + <!-- Code Mirror --> + <link rel="stylesheet" href="../bower/codemirror/codemirror.css"> + <!-- Fonts --> + <link href='../fonts/indieflower/indie-flower.css' rel='stylesheet' type='text/css'> + <link href='../fonts/source-sans-pro/source-sans-pro.css' rel='stylesheet' type='text/css'> + + <!-- Theme style --> + <link rel="stylesheet" href="../bower/admin-lte/dist/css/AdminLTE.min.css"> + <!-- Salvattore --> + <link rel="stylesheet" href="../bower/salvattore/salvattore.css"> + <!-- AdminLTE Skins. Choose a skin from the css/skins + folder instead of downloading all of them to reduce the load. --> + <link rel="stylesheet" href="../bower/admin-lte/dist/css/skins/_all-skins.min.css"> + <!-- SchemaSpy --> + <link rel="stylesheet" href="../schemaSpy.css"> + + <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="../bower/html5shiv/html5shiv.min.js"></script> + <script src="../bower/respond/respond.min.js"></script> + <![endif]--> + </head> + <!-- ADD THE CLASS layout-top-nav TO REMOVE THE SIDEBAR. --> + <body class="hold-transition skin-blue layout-top-nav"> + <div class="wrapper"> + <header class="main-header"> + <nav class="navbar navbar-static-top"> + <div class="container"> + <div class="navbar-header"> + <a href="../index.html" class="navbar-brand"><b>postgres</b></a><span class="navbar-brand" style="padding-left: 0">.c2ec</span> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa fa-bars"></i></button> + </div> + + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="collapse navbar-collapse pull-left" id="navbar-collapse"> + <ul class="nav navbar-nav"> + <li><a href="../index.html">Tables <span class="sr-only">(current)</span></a></li> + <li><a href="../columns.html" title="All of the columns in the schema">Columns</a></li> + <li><a href="../constraints.html" title="Useful for diagnosing error messages that just give constraint name or number">Constraints</a></li> + <li><a href="../relationships.html" title="Diagram of table relationships">Relationships</a></li> + <li><a href="../orphans.html" title="View of tables with neither parents nor children">Orphan&nbsp;Tables</a></li> + <li><a href="../anomalies.html" title="Things that might not be quite right">Anomalies</a></li> + <li><a href="../routines.html" title="Procedures and functions">Routines</a></li> + </ul> + </div> + <!-- /.navbar-collapse --> + <!-- Navbar Right Menu --> + </div> + <!-- /.container-fluid --> + </nav> + </header> + <!-- Main content --> + <!-- Full Width Column --> + <div class="content-wrapper"> + <!-- Content Header (Page header) --> + <section class="content-header"> + <h1>emit_transfer_notification()</h1><br /> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-file-text-o"></i> + <h3 id="Description" class="box-title">Description</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <!-- /.box-header --> + <div class="box-body clearfix"> + <p><p>The function emits the request_uid of a transfer which shall trigger a transfer by the receiver of the notification.</p></p> + </div> + <!-- /.box-body --> + </div> + </section> + <!-- Main content --> + <section class="content"> + <div class="box box-primary"> + <div class="box-header with-border"> + <span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> + <h3 id="Columns" class="box-title">Parameters</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <table id="standard_table" class="table table-bordered table-striped dataTable" role="grid"> + <thead align='left'> + <tr> + <th>Name</th> + <th>Type</th> + <th>Mode</th> + </tr> + </thead> + <tbody> + <tr> + <td></td> + <td></td> + <td>IN</td> + </tr> + </tbody> + </table> + </div> + </div> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-file-code-o"></i> + <h3 id="RoutineDefinition" class="box-title">Definition</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <textarea id="sql-script-codemirror" name="sql-script-codemirror" rows="" style="display: none;">BEGIN&#10; PERFORM pg_notify(&#39;transfer&#39;, encode(NEW.request_uid::BYTEA, &#39;base64&#39;));&#10; RETURN NULL;&#10;END;</textarea> + </div> + </div> + </section> + </div> + <!-- /.content-wrapper --> + <footer class="main-footer"> + <div> + <div class="pull-right hidden-xs"> + <a href="https://github.com/schemaspy/schemaspy" title="GitHub for SchemaSpy"><i class="fa fa-github-square fa-2x"></i></a> + <a href="http://stackoverflow.com/questions/tagged/schemaspy" title="StackOverflow for SchemaSpy"><i class="fa fa-stack-overflow fa-2x"></i></a> + </div> + <strong>Generated by <a href="http://schemaspy.org/" class="logo-text"><i class="fa fa-database"></i> SchemaSpy 6.2.4</a></strong> + </div> + <!-- /.container --> + </footer> + </div> + <!-- ./wrapper --> + + <!-- jQuery 2.2.3 --> + <script src="../bower/admin-lte/plugins/jQuery/jquery-2.2.3.min.js"></script> + <script src="../bower/admin-lte/plugins/jQueryUI/jquery-ui.min.js"></script> + <!-- Bootstrap 3.3.5 --> + <script src="../bower/admin-lte/bootstrap/js/bootstrap.min.js"></script> + <!-- DataTables --> + <script src="../bower/datatables.net/jquery.dataTables.min.js"></script> + <script src="../bower/datatables.net-bs/js/dataTables.bootstrap.min.js"></script> + <script src="../bower/datatables.net-buttons/dataTables.buttons.min.js"></script> + <script src="../bower/datatables.net-buttons-bs/js/buttons.bootstrap.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.html5.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.print.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.colVis.min.js"></script> + <!-- SheetJS --> + <script src="../bower/js-xlsx/xlsx.full.min.js"></script> + <!-- pdfmake --> + <script src="../bower/pdfmake/pdfmake.min.js"></script> + <script src="../bower/pdfmake/vfs_fonts.js"></script> + <!-- SlimScroll --> + <script src="../bower/admin-lte/plugins/slimScroll/jquery.slimscroll.min.js"></script> + <!-- FastClick --> + <script src="../bower/admin-lte/plugins/fastclick/fastclick.js"></script> + <!-- Salvattore --> + <script src="../bower/salvattore/salvattore.min.js"></script> + <!-- AnchorJS --> + <script src="../bower/anchor-js/anchor.min.js"></script> + <!-- CodeMirror --> + <script src="../bower/codemirror/codemirror.js"></script> + <script src="../bower/codemirror/sql.js"></script> + <!-- AdminLTE App --> + <script src="../bower/admin-lte/dist/js/app.min.js"></script> + <script src="routine.js"></script> + <script src="../schemaSpy.js"></script> + </body> +</html> +\ No newline at end of file diff --git a/schemaspy/c2ec-erd/routines/emit_withdrawal_status___b48bc651.html b/schemaspy/c2ec-erd/routines/emit_withdrawal_status___b48bc651.html @@ -0,0 +1,186 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>postgres.c2ec</title> + <!-- Tell the browser to be responsive to screen width --> + <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> + <link rel="icon" type="image/png" sizes="16x16" href="../favicon.png"> + <!-- Bootstrap 3.3.5 --> + <link rel="stylesheet" href="../bower/admin-lte/bootstrap/css/bootstrap.min.css"> + <!-- Font Awesome --> + <link rel="stylesheet" href="../bower/font-awesome/css/font-awesome.min.css"> + <!-- Ionicons --> + <link rel="stylesheet" href="../bower/ionicons/css/ionicons.min.css"> + <!-- DataTables --> + <link rel="stylesheet" href="../bower/datatables.net-bs/css/dataTables.bootstrap.min.css"> + <link rel="stylesheet" href="../bower/datatables.net-buttons-bs/css/buttons.bootstrap.min.css"> + <!-- Code Mirror --> + <link rel="stylesheet" href="../bower/codemirror/codemirror.css"> + <!-- Fonts --> + <link href='../fonts/indieflower/indie-flower.css' rel='stylesheet' type='text/css'> + <link href='../fonts/source-sans-pro/source-sans-pro.css' rel='stylesheet' type='text/css'> + + <!-- Theme style --> + <link rel="stylesheet" href="../bower/admin-lte/dist/css/AdminLTE.min.css"> + <!-- Salvattore --> + <link rel="stylesheet" href="../bower/salvattore/salvattore.css"> + <!-- AdminLTE Skins. Choose a skin from the css/skins + folder instead of downloading all of them to reduce the load. --> + <link rel="stylesheet" href="../bower/admin-lte/dist/css/skins/_all-skins.min.css"> + <!-- SchemaSpy --> + <link rel="stylesheet" href="../schemaSpy.css"> + + <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="../bower/html5shiv/html5shiv.min.js"></script> + <script src="../bower/respond/respond.min.js"></script> + <![endif]--> + </head> + <!-- ADD THE CLASS layout-top-nav TO REMOVE THE SIDEBAR. --> + <body class="hold-transition skin-blue layout-top-nav"> + <div class="wrapper"> + <header class="main-header"> + <nav class="navbar navbar-static-top"> + <div class="container"> + <div class="navbar-header"> + <a href="../index.html" class="navbar-brand"><b>postgres</b></a><span class="navbar-brand" style="padding-left: 0">.c2ec</span> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa fa-bars"></i></button> + </div> + + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="collapse navbar-collapse pull-left" id="navbar-collapse"> + <ul class="nav navbar-nav"> + <li><a href="../index.html">Tables <span class="sr-only">(current)</span></a></li> + <li><a href="../columns.html" title="All of the columns in the schema">Columns</a></li> + <li><a href="../constraints.html" title="Useful for diagnosing error messages that just give constraint name or number">Constraints</a></li> + <li><a href="../relationships.html" title="Diagram of table relationships">Relationships</a></li> + <li><a href="../orphans.html" title="View of tables with neither parents nor children">Orphan&nbsp;Tables</a></li> + <li><a href="../anomalies.html" title="Things that might not be quite right">Anomalies</a></li> + <li><a href="../routines.html" title="Procedures and functions">Routines</a></li> + </ul> + </div> + <!-- /.navbar-collapse --> + <!-- Navbar Right Menu --> + </div> + <!-- /.container-fluid --> + </nav> + </header> + <!-- Main content --> + <!-- Full Width Column --> + <div class="content-wrapper"> + <!-- Content Header (Page header) --> + <section class="content-header"> + <h1>emit_withdrawal_status()</h1><br /> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-file-text-o"></i> + <h3 id="Description" class="box-title">Description</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <!-- /.box-header --> + <div class="box-body clearfix"> + <p><p>The function encodes the wopid in base64 and sends a notification on the channel &ldquo;w_{wopid}&rdquo; with the status in the payload.</p></p> + </div> + <!-- /.box-body --> + </div> + </section> + <!-- Main content --> + <section class="content"> + <div class="box box-primary"> + <div class="box-header with-border"> + <span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> + <h3 id="Columns" class="box-title">Parameters</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <table id="standard_table" class="table table-bordered table-striped dataTable" role="grid"> + <thead align='left'> + <tr> + <th>Name</th> + <th>Type</th> + <th>Mode</th> + </tr> + </thead> + <tbody> + <tr> + <td></td> + <td></td> + <td>IN</td> + </tr> + </tbody> + </table> + </div> + </div> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-file-code-o"></i> + <h3 id="RoutineDefinition" class="box-title">Definition</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <textarea id="sql-script-codemirror" name="sql-script-codemirror" rows="" style="display: none;">BEGIN&#10; PERFORM pg_notify(&#39;w_&#39; || encode(NEW.wopid::BYTEA, &#39;base64&#39;), NEW.withdrawal_status::TEXT);&#10; RETURN NULL;&#10;END;</textarea> + </div> + </div> + </section> + </div> + <!-- /.content-wrapper --> + <footer class="main-footer"> + <div> + <div class="pull-right hidden-xs"> + <a href="https://github.com/schemaspy/schemaspy" title="GitHub for SchemaSpy"><i class="fa fa-github-square fa-2x"></i></a> + <a href="http://stackoverflow.com/questions/tagged/schemaspy" title="StackOverflow for SchemaSpy"><i class="fa fa-stack-overflow fa-2x"></i></a> + </div> + <strong>Generated by <a href="http://schemaspy.org/" class="logo-text"><i class="fa fa-database"></i> SchemaSpy 6.2.4</a></strong> + </div> + <!-- /.container --> + </footer> + </div> + <!-- ./wrapper --> + + <!-- jQuery 2.2.3 --> + <script src="../bower/admin-lte/plugins/jQuery/jquery-2.2.3.min.js"></script> + <script src="../bower/admin-lte/plugins/jQueryUI/jquery-ui.min.js"></script> + <!-- Bootstrap 3.3.5 --> + <script src="../bower/admin-lte/bootstrap/js/bootstrap.min.js"></script> + <!-- DataTables --> + <script src="../bower/datatables.net/jquery.dataTables.min.js"></script> + <script src="../bower/datatables.net-bs/js/dataTables.bootstrap.min.js"></script> + <script src="../bower/datatables.net-buttons/dataTables.buttons.min.js"></script> + <script src="../bower/datatables.net-buttons-bs/js/buttons.bootstrap.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.html5.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.print.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.colVis.min.js"></script> + <!-- SheetJS --> + <script src="../bower/js-xlsx/xlsx.full.min.js"></script> + <!-- pdfmake --> + <script src="../bower/pdfmake/pdfmake.min.js"></script> + <script src="../bower/pdfmake/vfs_fonts.js"></script> + <!-- SlimScroll --> + <script src="../bower/admin-lte/plugins/slimScroll/jquery.slimscroll.min.js"></script> + <!-- FastClick --> + <script src="../bower/admin-lte/plugins/fastclick/fastclick.js"></script> + <!-- Salvattore --> + <script src="../bower/salvattore/salvattore.min.js"></script> + <!-- AnchorJS --> + <script src="../bower/anchor-js/anchor.min.js"></script> + <!-- CodeMirror --> + <script src="../bower/codemirror/codemirror.js"></script> + <script src="../bower/codemirror/sql.js"></script> + <!-- AdminLTE App --> + <script src="../bower/admin-lte/dist/js/app.min.js"></script> + <script src="routine.js"></script> + <script src="../schemaSpy.js"></script> + </body> +</html> +\ No newline at end of file diff --git a/schemaspy/c2ec-erd/tables/provider.html b/schemaspy/c2ec-erd/tables/provider.html @@ -0,0 +1,357 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>provider - postgres.c2ec</title> + <!-- Tell the browser to be responsive to screen width --> + <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> + <link rel="icon" type="image/png" sizes="16x16" href="../favicon.png"> + <!-- Bootstrap 3.3.5 --> + <link rel="stylesheet" href="../bower/admin-lte/bootstrap/css/bootstrap.min.css"> + <!-- Font Awesome --> + <link rel="stylesheet" href="../bower/font-awesome/css/font-awesome.min.css"> + <!-- Ionicons --> + <link rel="stylesheet" href="../bower/ionicons/css/ionicons.min.css"> + <!-- DataTables --> + <link rel="stylesheet" href="../bower/datatables.net-bs/css/dataTables.bootstrap.min.css"> + <link rel="stylesheet" href="../bower/datatables.net-buttons-bs/css/buttons.bootstrap.min.css"> + <!-- Code Mirror --> + <link rel="stylesheet" href="../bower/codemirror/codemirror.css"> + <!-- Fonts --> + <link href='../fonts/indieflower/indie-flower.css' rel='stylesheet' type='text/css'> + <link href='../fonts/source-sans-pro/source-sans-pro.css' rel='stylesheet' type='text/css'> + + <!-- Theme style --> + <link rel="stylesheet" href="../bower/admin-lte/dist/css/AdminLTE.min.css"> + <!-- Salvattore --> + <link rel="stylesheet" href="../bower/salvattore/salvattore.css"> + <!-- AdminLTE Skins. Choose a skin from the css/skins + folder instead of downloading all of them to reduce the load. --> + <link rel="stylesheet" href="../bower/admin-lte/dist/css/skins/_all-skins.min.css"> + <!-- SchemaSpy --> + <link rel="stylesheet" href="../schemaSpy.css"> + + <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="../bower/html5shiv/html5shiv.min.js"></script> + <script src="../bower/respond/respond.min.js"></script> + <![endif]--> + </head> + <!-- ADD THE CLASS layout-top-nav TO REMOVE THE SIDEBAR. --> + <body class="hold-transition skin-blue layout-top-nav"> + <div class="wrapper"> + <header class="main-header"> + <nav class="navbar navbar-static-top"> + <div class="container"> + <div class="navbar-header"> + <a href="../index.html" class="navbar-brand"><b>postgres</b></a><span class="navbar-brand" style="padding-left: 0">.c2ec</span> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa fa-bars"></i></button> + </div> + + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="collapse navbar-collapse pull-left" id="navbar-collapse"> + <ul class="nav navbar-nav"> + <li><a href="../index.html">Tables <span class="sr-only">(current)</span></a></li> + <li><a href="../columns.html" title="All of the columns in the schema">Columns</a></li> + <li><a href="../constraints.html" title="Useful for diagnosing error messages that just give constraint name or number">Constraints</a></li> + <li><a href="../relationships.html" title="Diagram of table relationships">Relationships</a></li> + <li><a href="../orphans.html" title="View of tables with neither parents nor children">Orphan&nbsp;Tables</a></li> + <li><a href="../anomalies.html" title="Things that might not be quite right">Anomalies</a></li> + <li><a href="../routines.html" title="Procedures and functions">Routines</a></li> + </ul> + </div> + <!-- /.navbar-collapse --> + <!-- Navbar Right Menu --> + </div> + <!-- /.container-fluid --> + </nav> + </header> + <!-- Main content --> + <!-- Full Width Column --> + <div class="content-wrapper"> + <!-- Content Header (Page header) --> + <section class="content-header"> + <h1>provider</h1><p><span id="recordNumber">-1</span> rows</p><br /> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-file-text-o"></i> + <h3 id="Description" class="box-title">Description</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div><!-- /.box-header --> + <div class="box-body clearfix"> + <p>Table describing providers of c2ec terminal</p> + </div><!-- /.box-body --> + </div> + </section> + <!-- Main content --> + <section class="content"> + <div class="box box-primary"> + <div class="box-header with-border"> + <span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> + <h3 id="Columns" class="box-title">Columns</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <table + id="standard_table" + class="table table-bordered table-striped dataTable" + role="grid" + data-paging="true" + data-page-length="10" + data-length-change="false"> + <thead align='left'> + <tr> + <th>Column</th> + <th>Type</th> + <th>Size</th> + <th title='Are nulls allowed?'>Nulls</th> + <th title='Is column automatically updated?'>Auto</th> + <th title='Default value'>Default</th> + <th title='Columns in tables that reference this column'>Children</th> + <th title='Columns in tables that are referenced by this column'>Parents</th> + <th title='Comments' class="toggle"><span>Comments</span></th> + </tr> + </thead> + <tbody> + <tr> + <td class='primaryKey' title='Primary Key'><i class='icon ion-key iconkey' style='padding-left: 5px;'></i><span id="provider_id">provider_id</span></td> + <td>int8</td> + <td>19</td> + <td title=''></td> + <td title='Automatically updated by the database'>√</td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + <tr> + <td title="terminal.provider_id references provider.provider_id via terminal_provider_id_fkey"><a href='terminal.html'>terminal</a><span class='relatedKey'>.provider_id</span></td> + <td class="constraint detail">terminal_provider_id_fkey</td> + <td class="constraint detail"><span title='Restrict delete:&#10;Parent cannot be deleted if children exist'>R</span></td> + </tr> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>Uniquely identifies a provider</p></td> + </tr> + <tr> + <td class='indexedColumn' title='Indexed'><i class='fa fa-sitemap fa-rotate-120' style='padding-right: 5px;'></i><span id="name">name</span></td> + <td>text</td> + <td>2147483647</td> + <td title=''></td> + <td title=''></td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>Name of the provider, used for selection in transaction proofing</p></td> + </tr> + <tr> + <td class='indexedColumn' title='Indexed'><i class='fa fa-sitemap fa-rotate-120' style='padding-right: 5px;'></i><span id="payto_target_type">payto_target_type</span></td> + <td>text</td> + <td>2147483647</td> + <td title=''></td> + <td title=''></td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>The Payto target type associated with the provider. Each payto target type has exctly one provider. This is needed so that the attestor client can be dynamically selected by C2EC.</p></td> + </tr> + <tr> + <td><span id="backend_base_url">backend_base_url</span></td> + <td>text</td> + <td>2147483647</td> + <td title=''></td> + <td title=''></td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>URL of the provider backend for transaction proofing</p></td> + </tr> + <tr> + <td><span id="backend_credentials">backend_credentials</span></td> + <td>text</td> + <td>2147483647</td> + <td title=''></td> + <td title=''></td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>Credentials used to access the backend of the provider</p></td> + </tr> + </tbody> + </table> + </div> + </div> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-sitemap"></i> + <h3 id="Indexes" class="box-title">Indexes</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <table + id="indexes_table" + class="table table-bordered table-striped dataTable" + role="grid" + data-paging="true" + data-page-length="10" + data-length-change="false"> + <thead> + <tr> + <th>Constraint Name</th> + <th>Type</th> + <th>Sort</th> + <th>Column(s)</th> + </tr> + </thead> + <tbody> + <tr> + <td class='primaryKey' title='Primary Key'><i class='icon ion-key iconkey'></i> provider_pkey</td> + <td>Primary key</td> + <td><span title='Ascending'>Asc</span></td> + <td>provider_id</td> + </tr> + <tr> + <td class='uniqueKey' title='Unique Key'><i class='icon ion-key iconkey'></i> provider_name_key</td> + <td>Must be unique</td> + <td><span title='Ascending'>Asc</span></td> + <td>name</td> + </tr> + <tr> + <td class='uniqueKey' title='Unique Key'><i class='icon ion-key iconkey'></i> provider_payto_target_type_key</td> + <td>Must be unique</td> + <td><span title='Ascending'>Asc</span></td> + <td>payto_target_type</td> + </tr> + </tbody> + </table> + </div><!-- /.box-body --> + </div> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-code-fork"></i> + <h3 id="Relationships" class="box-title">Relationships</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <div class="nav-tabs-custom"><!-- Tabs within a box --> + <h5>Close relationships within degrees of separation</h5> + <ul class="nav nav-tabs pull-left ui-sortable-handle"> + <li class="active"><a href="#oneDegreeImg-chart" data-toggle="tab" aria-expanded="true">One</a></li> + <li class=""><a href="#twodegreesDegreeImg-chart" data-toggle="tab" aria-expanded="true">Two degrees</a></li> + </ul> + <div class="tab-content no-padding"> + <div class="chart tab-pane active" id="oneDegreeImg-chart" style="position: relative; overflow-x:auto;"> + <map id="oneDegreeRelationshipsDiagram" name="oneDegreeRelationshipsDiagram"> +<area shape="rect" id="node1" href="terminal.html" target="_top" title="terminal" alt="" coords="429,5,597,152"> +<area shape="rect" id="node2" href="provider.html" target="_top" title="provider" alt="" coords="5,32,385,248"> +</map> + <a name='diagram'><img id="oneDegreeImg" src="../diagrams/tables/provider.1degree.png" usemap="#oneDegreeRelationshipsDiagram" class="diagram" border="0" align="left"></a> + </div> + <div class="chart tab-pane " id="twodegreesDegreeImg-chart" style="position: relative; overflow-x:auto;"> + <map id="twoDegreesRelationshipsDiagram" name="twoDegreesRelationshipsDiagram"> +<area shape="rect" id="node1" href="terminal.html" target="_top" title="terminal" alt="" coords="429,5,597,152"> +<area shape="rect" id="node2" href="provider.html" target="_top" title="provider" alt="" coords="5,32,385,248"> +<area shape="rect" id="node3" href="withdrawal.html" target="_top" title="withdrawal" alt="" coords="641,8,825,96"> +</map> + <a name='diagram'><img id="twodegreesDegreeImg" src="../diagrams/tables/provider.2degrees.png" usemap="#twoDegreesRelationshipsDiagram" class="diagram" border="0" align="left"></a> + </div> + </div> + </div> + </div><!-- /.box-body --> + </div> + </section> + <script> + var config = { + pagination: true + } + </script> + </div> + <!-- /.content-wrapper --> + <footer class="main-footer"> + <div> + <div class="pull-right hidden-xs"> + <a href="https://github.com/schemaspy/schemaspy" title="GitHub for SchemaSpy"><i class="fa fa-github-square fa-2x"></i></a> + <a href="http://stackoverflow.com/questions/tagged/schemaspy" title="StackOverflow for SchemaSpy"><i class="fa fa-stack-overflow fa-2x"></i></a> + </div> + <strong>Generated by <a href="http://schemaspy.org/" class="logo-text"><i class="fa fa-database"></i> SchemaSpy 6.2.4</a></strong> + </div> + <!-- /.container --> + </footer> + </div> + <!-- ./wrapper --> + + <!-- jQuery 2.2.3 --> + <script src="../bower/admin-lte/plugins/jQuery/jquery-2.2.3.min.js"></script> + <script src="../bower/admin-lte/plugins/jQueryUI/jquery-ui.min.js"></script> + <!-- Bootstrap 3.3.5 --> + <script src="../bower/admin-lte/bootstrap/js/bootstrap.min.js"></script> + <!-- DataTables --> + <script src="../bower/datatables.net/jquery.dataTables.min.js"></script> + <script src="../bower/datatables.net-bs/js/dataTables.bootstrap.min.js"></script> + <script src="../bower/datatables.net-buttons/dataTables.buttons.min.js"></script> + <script src="../bower/datatables.net-buttons-bs/js/buttons.bootstrap.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.html5.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.print.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.colVis.min.js"></script> + <!-- SheetJS --> + <script src="../bower/js-xlsx/xlsx.full.min.js"></script> + <!-- pdfmake --> + <script src="../bower/pdfmake/pdfmake.min.js"></script> + <script src="../bower/pdfmake/vfs_fonts.js"></script> + <!-- SlimScroll --> + <script src="../bower/admin-lte/plugins/slimScroll/jquery.slimscroll.min.js"></script> + <!-- FastClick --> + <script src="../bower/admin-lte/plugins/fastclick/fastclick.js"></script> + <!-- Salvattore --> + <script src="../bower/salvattore/salvattore.min.js"></script> + <!-- AnchorJS --> + <script src="../bower/anchor-js/anchor.min.js"></script> + <!-- CodeMirror --> + <script src="../bower/codemirror/codemirror.js"></script> + <script src="../bower/codemirror/sql.js"></script> + <!-- AdminLTE App --> + <script src="../bower/admin-lte/dist/js/app.min.js"></script> + <script src="table.js"></script> + <script src="../schemaSpy.js"></script> + </body> +</html> +\ No newline at end of file diff --git a/schemaspy/c2ec-erd/tables/terminal.html b/schemaspy/c2ec-erd/tables/terminal.html @@ -145,7 +145,7 @@ </tr> <tr> <td><span id="access_token">access_token</span></td> - <td>bytea</td> + <td>text</td> <td>2147483647</td> <td title=''></td> <td title=''></td> @@ -158,7 +158,7 @@ <table border='0' cellspacing='0' cellpadding='0'> </table> </td> - <td><p>The access token of the terminal used for authentication against the c2ec API</p></td> + <td><p>The access token of the terminal used for authentication against the c2ec API. It is hashed using a PBKDF.</p></td> </tr> <tr> <td><span id="active">active</span></td> @@ -208,7 +208,7 @@ <td> <table border='0' cellspacing='0' cellpadding='0'> <tr> - <td title="terminal.provider_id references terminal_provider.provider_terminal_id via terminal_provider_id_fkey"><a href='terminal_provider.html'>terminal_provider</a><span class='relatedKey'>.provider_terminal_id</span></td> + <td title="terminal.provider_id references provider.provider_id via terminal_provider_id_fkey"><a href='provider.html'>provider</a><span class='relatedKey'>.provider_id</span></td> <td class="constraint detail">terminal_provider_id_fkey</td> <td class="constraint detail"><span title='Restrict delete:&#10;Parent cannot be deleted if children exist'>R</span></td> </tr> @@ -258,38 +258,6 @@ </div> <div class="box box-primary"> <div class="box-header with-border"> - <i class="fa fa-sitemap"></i> - <h3 class="box-title">Check Constraints</h3> - <div class="box-tools pull-right"> - <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> - <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> - </div> - </div> - <div class="box-body"> - <table - id="check_table" - class="table table-bordered table-striped dataTable" - role="grid" - data-paging="true" - data-page-length="10" - data-length-change="false"> - <thead align='left'> - <tr> - <th>Constraint Name</th> - <th>Constraint</th> - </tr> - </thead> - <tbody> - <tr> - <td>terminal_access_token_check</td> - <td>((length(access_token) &#61; 32))</td> - </tr> - </tbody> - </table> - </div> - </div> - <div class="box box-primary"> - <div class="box-header with-border"> <i class="fa fa-code-fork"></i> <h3 id="Relationships" class="box-title">Relationships</h3> <div class="box-tools pull-right"> @@ -306,9 +274,9 @@ <div class="tab-content no-padding"> <div class="chart tab-pane active" id="oneDegreeImg-chart" style="position: relative; overflow-x:auto;"> <map id="oneDegreeRelationshipsDiagram" name="oneDegreeRelationshipsDiagram"> -<area shape="rect" id="node1" href="terminal.html" target="_top" title="terminal" alt="" coords="293,32,620,248"> -<area shape="rect" id="node2" href="terminal_provider.html" target="_top" title="terminal_provider" alt="" coords="5,152,249,299"> -<area shape="rect" id="node3" href="withdrawal.html" target="_top" title="withdrawal" alt="" coords="664,5,925,152"> +<area shape="rect" id="node1" href="terminal.html" target="_top" title="terminal" alt="" coords="283,91,597,307"> +<area shape="rect" id="node2" href="provider.html" target="_top" title="provider" alt="" coords="5,211,239,387"> +<area shape="rect" id="node3" href="withdrawal.html" target="_top" title="withdrawal" alt="" coords="641,5,903,211"> </map> <a name='diagram'><img id="oneDegreeImg" src="../diagrams/tables/terminal.1degree.png" usemap="#oneDegreeRelationshipsDiagram" class="diagram" border="0" align="left"></a> </div> diff --git a/schemaspy/c2ec-erd/tables/transfer.html b/schemaspy/c2ec-erd/tables/transfer.html @@ -0,0 +1,398 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>transfer - postgres.c2ec</title> + <!-- Tell the browser to be responsive to screen width --> + <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> + <link rel="icon" type="image/png" sizes="16x16" href="../favicon.png"> + <!-- Bootstrap 3.3.5 --> + <link rel="stylesheet" href="../bower/admin-lte/bootstrap/css/bootstrap.min.css"> + <!-- Font Awesome --> + <link rel="stylesheet" href="../bower/font-awesome/css/font-awesome.min.css"> + <!-- Ionicons --> + <link rel="stylesheet" href="../bower/ionicons/css/ionicons.min.css"> + <!-- DataTables --> + <link rel="stylesheet" href="../bower/datatables.net-bs/css/dataTables.bootstrap.min.css"> + <link rel="stylesheet" href="../bower/datatables.net-buttons-bs/css/buttons.bootstrap.min.css"> + <!-- Code Mirror --> + <link rel="stylesheet" href="../bower/codemirror/codemirror.css"> + <!-- Fonts --> + <link href='../fonts/indieflower/indie-flower.css' rel='stylesheet' type='text/css'> + <link href='../fonts/source-sans-pro/source-sans-pro.css' rel='stylesheet' type='text/css'> + + <!-- Theme style --> + <link rel="stylesheet" href="../bower/admin-lte/dist/css/AdminLTE.min.css"> + <!-- Salvattore --> + <link rel="stylesheet" href="../bower/salvattore/salvattore.css"> + <!-- AdminLTE Skins. Choose a skin from the css/skins + folder instead of downloading all of them to reduce the load. --> + <link rel="stylesheet" href="../bower/admin-lte/dist/css/skins/_all-skins.min.css"> + <!-- SchemaSpy --> + <link rel="stylesheet" href="../schemaSpy.css"> + + <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="../bower/html5shiv/html5shiv.min.js"></script> + <script src="../bower/respond/respond.min.js"></script> + <![endif]--> + </head> + <!-- ADD THE CLASS layout-top-nav TO REMOVE THE SIDEBAR. --> + <body class="hold-transition skin-blue layout-top-nav"> + <div class="wrapper"> + <header class="main-header"> + <nav class="navbar navbar-static-top"> + <div class="container"> + <div class="navbar-header"> + <a href="../index.html" class="navbar-brand"><b>postgres</b></a><span class="navbar-brand" style="padding-left: 0">.c2ec</span> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse"><i class="fa fa-bars"></i></button> + </div> + + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="collapse navbar-collapse pull-left" id="navbar-collapse"> + <ul class="nav navbar-nav"> + <li><a href="../index.html">Tables <span class="sr-only">(current)</span></a></li> + <li><a href="../columns.html" title="All of the columns in the schema">Columns</a></li> + <li><a href="../constraints.html" title="Useful for diagnosing error messages that just give constraint name or number">Constraints</a></li> + <li><a href="../relationships.html" title="Diagram of table relationships">Relationships</a></li> + <li><a href="../orphans.html" title="View of tables with neither parents nor children">Orphan&nbsp;Tables</a></li> + <li><a href="../anomalies.html" title="Things that might not be quite right">Anomalies</a></li> + <li><a href="../routines.html" title="Procedures and functions">Routines</a></li> + </ul> + </div> + <!-- /.navbar-collapse --> + <!-- Navbar Right Menu --> + </div> + <!-- /.container-fluid --> + </nav> + </header> + <!-- Main content --> + <!-- Full Width Column --> + <div class="content-wrapper"> + <!-- Content Header (Page header) --> + <section class="content-header"> + <h1>transfer</h1><p><span id="recordNumber">-1</span> rows</p><br /> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-file-text-o"></i> + <h3 id="Description" class="box-title">Description</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div><!-- /.box-header --> + <div class="box-body clearfix"> + <p>Table storing transfers which are sent by the exchange.</p> + </div><!-- /.box-body --> + </div> + </section> + <!-- Main content --> + <section class="content"> + <div class="box box-primary"> + <div class="box-header with-border"> + <span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> + <h3 id="Columns" class="box-title">Columns</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <table + id="standard_table" + class="table table-bordered table-striped dataTable" + role="grid" + data-paging="true" + data-page-length="10" + data-length-change="false"> + <thead align='left'> + <tr> + <th>Column</th> + <th>Type</th> + <th>Size</th> + <th title='Are nulls allowed?'>Nulls</th> + <th title='Is column automatically updated?'>Auto</th> + <th title='Default value'>Default</th> + <th title='Columns in tables that reference this column'>Children</th> + <th title='Columns in tables that are referenced by this column'>Parents</th> + <th title='Comments' class="toggle"><span>Comments</span></th> + </tr> + </thead> + <tbody> + <tr> + <td class='primaryKey' title='Primary Key'><i class='icon ion-key iconkey' style='padding-left: 5px;'></i><span id="request_uid">request_uid</span></td> + <td>bytea</td> + <td>2147483647</td> + <td title=''></td> + <td title=''></td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>A unique identifier for the transfer.</p></td> + </tr> + <tr> + <td><span id="row_id">row_id</span></td> + <td>int8</td> + <td>19</td> + <td title=''></td> + <td title='Automatically updated by the database'>√</td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>The row id is used to support the history outgoing</p></td> + </tr> + <tr> + <td><span id="amount">amount</span></td> + <td>&quot;c2ec&quot;.&quot;taler_amount_currency&quot;</td> + <td>2147483647</td> + <td title=''></td> + <td title=''></td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>The amount to be transferred</p></td> + </tr> + <tr> + <td><span id="exchange_base_url">exchange_base_url</span></td> + <td>text</td> + <td>2147483647</td> + <td title=''></td> + <td title=''></td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>The base url of the exchange, sending the transfer request</p></td> + </tr> + <tr> + <td><span id="wtid">wtid</span></td> + <td>text</td> + <td>2147483647</td> + <td title=''></td> + <td title=''></td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>The id of the transaction</p></td> + </tr> + <tr> + <td><span id="credit_account">credit_account</span></td> + <td>text</td> + <td>2147483647</td> + <td title=''></td> + <td title=''></td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>The payto address of the transfer target</p></td> + </tr> + <tr> + <td><span id="transfer_ts">transfer_ts</span></td> + <td>int8</td> + <td>19</td> + <td title=''></td> + <td title=''></td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>Timestamp when the transfer was last processesd</p></td> + </tr> + <tr> + <td><span id="transfer_status">transfer_status</span></td> + <td>int2</td> + <td>5</td> + <td title=''></td> + <td title=''></td> + <td>1</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>Non-zero when the transfer failed at the last retry. Zero if transfer succeeded. Negative, when max amount of retries was exceeded. Because the transfer was not yet triggered when it is added, the status is set to 1 by default.</p></td> + </tr> + <tr> + <td><span id="retries">retries</span></td> + <td>int2</td> + <td>5</td> + <td title=''></td> + <td title=''></td> + <td>0</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>Number of retries</p></td> + </tr> + </tbody> + </table> + </div> + </div> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-sitemap"></i> + <h3 id="Indexes" class="box-title">Indexes</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <table + id="indexes_table" + class="table table-bordered table-striped dataTable" + role="grid" + data-paging="true" + data-page-length="10" + data-length-change="false"> + <thead> + <tr> + <th>Constraint Name</th> + <th>Type</th> + <th>Sort</th> + <th>Column(s)</th> + </tr> + </thead> + <tbody> + <tr> + <td class='primaryKey' title='Primary Key'><i class='icon ion-key iconkey'></i> transfer_pkey</td> + <td>Primary key</td> + <td><span title='Ascending'>Asc</span></td> + <td>request_uid</td> + </tr> + </tbody> + </table> + </div><!-- /.box-body --> + </div> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-code-fork"></i> + <h3 id="Relationships" class="box-title">Relationships</h3> + <div class="box-tools pull-right"> + <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> + <button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> + </div> + </div> + <div class="box-body"> + <div class="nav-tabs-custom"><!-- Tabs within a box --> + <h5>Close relationships within degrees of separation</h5> + <ul class="nav nav-tabs pull-left ui-sortable-handle"> + <li class="active"><a href="#oneDegreeImg-chart" data-toggle="tab" aria-expanded="true">One</a></li> + </ul> + <div class="tab-content no-padding"> + <div class="chart tab-pane active" id="oneDegreeImg-chart" style="position: relative; overflow-x:auto;"> + <map id="oneDegreeRelationshipsDiagram" name="oneDegreeRelationshipsDiagram"> +<area shape="rect" id="node1" href="transfer.html" target="_top" title="transfer" alt="" coords="5,5,575,339"> +</map> + <a name='diagram'><img id="oneDegreeImg" src="../diagrams/tables/transfer.1degree.png" usemap="#oneDegreeRelationshipsDiagram" class="diagram" border="0" align="left"></a> + </div> + </div> + </div> + </div><!-- /.box-body --> + </div> + </section> + <script> + var config = { + pagination: true + } + </script> + </div> + <!-- /.content-wrapper --> + <footer class="main-footer"> + <div> + <div class="pull-right hidden-xs"> + <a href="https://github.com/schemaspy/schemaspy" title="GitHub for SchemaSpy"><i class="fa fa-github-square fa-2x"></i></a> + <a href="http://stackoverflow.com/questions/tagged/schemaspy" title="StackOverflow for SchemaSpy"><i class="fa fa-stack-overflow fa-2x"></i></a> + </div> + <strong>Generated by <a href="http://schemaspy.org/" class="logo-text"><i class="fa fa-database"></i> SchemaSpy 6.2.4</a></strong> + </div> + <!-- /.container --> + </footer> + </div> + <!-- ./wrapper --> + + <!-- jQuery 2.2.3 --> + <script src="../bower/admin-lte/plugins/jQuery/jquery-2.2.3.min.js"></script> + <script src="../bower/admin-lte/plugins/jQueryUI/jquery-ui.min.js"></script> + <!-- Bootstrap 3.3.5 --> + <script src="../bower/admin-lte/bootstrap/js/bootstrap.min.js"></script> + <!-- DataTables --> + <script src="../bower/datatables.net/jquery.dataTables.min.js"></script> + <script src="../bower/datatables.net-bs/js/dataTables.bootstrap.min.js"></script> + <script src="../bower/datatables.net-buttons/dataTables.buttons.min.js"></script> + <script src="../bower/datatables.net-buttons-bs/js/buttons.bootstrap.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.html5.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.print.min.js"></script> + <script src="../bower/datatables.net-buttons/buttons.colVis.min.js"></script> + <!-- SheetJS --> + <script src="../bower/js-xlsx/xlsx.full.min.js"></script> + <!-- pdfmake --> + <script src="../bower/pdfmake/pdfmake.min.js"></script> + <script src="../bower/pdfmake/vfs_fonts.js"></script> + <!-- SlimScroll --> + <script src="../bower/admin-lte/plugins/slimScroll/jquery.slimscroll.min.js"></script> + <!-- FastClick --> + <script src="../bower/admin-lte/plugins/fastclick/fastclick.js"></script> + <!-- Salvattore --> + <script src="../bower/salvattore/salvattore.min.js"></script> + <!-- AnchorJS --> + <script src="../bower/anchor-js/anchor.min.js"></script> + <!-- CodeMirror --> + <script src="../bower/codemirror/codemirror.js"></script> + <script src="../bower/codemirror/sql.js"></script> + <!-- AdminLTE App --> + <script src="../bower/admin-lte/dist/js/app.min.js"></script> + <script src="table.js"></script> + <script src="../schemaSpy.js"></script> + </body> +</html> +\ No newline at end of file diff --git a/schemaspy/c2ec-erd/tables/withdrawal.html b/schemaspy/c2ec-erd/tables/withdrawal.html @@ -122,7 +122,7 @@ </thead> <tbody> <tr> - <td class='primaryKey' title='Primary Key'><i class='icon ion-key iconkey' style='padding-left: 5px;'></i><span id="withdrawal_id">withdrawal_id</span></td> + <td class='primaryKey' title='Primary Key'><i class='icon ion-key iconkey' style='padding-left: 5px;'></i><span id="withdrawal_row_id">withdrawal_row_id</span></td> <td>int8</td> <td>19</td> <td title=''></td> @@ -139,7 +139,24 @@ <td><p>The withdrawal id is used a technical id used by the wire gateway to sequentially select new transactions</p></td> </tr> <tr> - <td><span id="wopid">wopid</span></td> + <td class='indexedColumn' title='Indexed'><i class='fa fa-sitemap fa-rotate-120' style='padding-right: 5px;'></i><span id="request_uid">request_uid</span></td> + <td>text</td> + <td>2147483647</td> + <td title=''></td> + <td title=''></td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>The request uid identifies each request and is stored to make the API interacting with withdrawals idempotent.</p></td> + </tr> + <tr> + <td class='indexedColumn' title='Indexed'><i class='fa fa-sitemap fa-rotate-120' style='padding-right: 5px;'></i><span id="wopid">wopid</span></td> <td>bytea</td> <td>2147483647</td> <td title=''></td> @@ -159,7 +176,7 @@ <td><span id="reserve_pub_key">reserve_pub_key</span></td> <td>bytea</td> <td>2147483647</td> - <td title=''></td> + <td title='nullable'>√</td> <td title=''></td> <td>null</td> <td> @@ -193,7 +210,7 @@ <td><span id="amount">amount</span></td> <td>&quot;c2ec&quot;.&quot;taler_amount_currency&quot;</td> <td>2147483647</td> - <td title=''></td> + <td title='nullable'>√</td> <td title=''></td> <td>null</td> <td> @@ -207,7 +224,7 @@ <td><p>Effective amount to be put into the reserve after completion</p></td> </tr> <tr> - <td><span id="fees">fees</span></td> + <td><span id="suggested_amount">suggested_amount</span></td> <td>&quot;c2ec&quot;.&quot;taler_amount_currency&quot;</td> <td>2147483647</td> <td title='nullable'>√</td> @@ -221,7 +238,24 @@ <table border='0' cellspacing='0' cellpadding='0'> </table> </td> - <td><p>Fees associated with the withdrawal, including exchange and provider fees</p></td> + <td><p>The suggested amount is given by the entity initializing the wihdrawal. If the suggested amount is given, the wallet may still change the amount.</p></td> + </tr> + <tr> + <td><span id="terminal_fees">terminal_fees</span></td> + <td>&quot;c2ec&quot;.&quot;taler_amount_currency&quot;</td> + <td>2147483647</td> + <td title='nullable'>√</td> + <td title=''></td> + <td>null</td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td> + <table border='0' cellspacing='0' cellpadding='0'> + </table> + </td> + <td><p>Fees associated with the withdrawal but not related to the taler payment system.</p></td> </tr> <tr> <td><span id="withdrawal_status">withdrawal_status</span></td> @@ -244,7 +278,7 @@ <td class='foreignKey' title='Foreign Key'><i class='icon ion-key iconkey' style='padding-left: 5px;'></i><span id="terminal_id">terminal_id</span></td> <td>int8</td> <td>19</td> - <td title=''></td> + <td title='nullable'>√</td> <td title=''></td> <td>null</td> <td> @@ -364,7 +398,25 @@ <td class='primaryKey' title='Primary Key'><i class='icon ion-key iconkey'></i> withdrawal_pkey</td> <td>Primary key</td> <td><span title='Ascending'>Asc</span></td> - <td>withdrawal_id</td> + <td>withdrawal_row_id</td> + </tr> + <tr> + <td class='uniqueKey' title='Unique Key'><i class='icon ion-key iconkey'></i> withdrawal_request_uid_key</td> + <td>Must be unique</td> + <td><span title='Ascending'>Asc</span></td> + <td>request_uid</td> + </tr> + <tr> + <td class='uniqueKey' title='Unique Key'><i class='icon ion-key iconkey'></i> withdrawal_wopid_key</td> + <td>Must be unique</td> + <td><span title='Ascending'>Asc</span></td> + <td>wopid</td> + </tr> + <tr> + <td title='Indexed'>wopid_index</td> + <td>Performance</td> + <td><span title='Ascending'>Asc</span></td> + <td>wopid</td> </tr> </tbody> </table> @@ -395,13 +447,13 @@ </thead> <tbody> <tr> - <td>withdrawal_reserve_pub_key_check</td> - <td>((length(reserve_pub_key) &#61; 32))</td> - </tr> - <tr> <td>withdrawal_wopid_check</td> <td>((length(wopid) &#61; 32))</td> </tr> + <tr> + <td>withdrawal_reserve_pub_key_check</td> + <td>((length(reserve_pub_key) &#61; 32))</td> + </tr> </tbody> </table> </div> @@ -425,16 +477,16 @@ <div class="tab-content no-padding"> <div class="chart tab-pane active" id="oneDegreeImg-chart" style="position: relative; overflow-x:auto;"> <map id="oneDegreeRelationshipsDiagram" name="oneDegreeRelationshipsDiagram"> -<area shape="rect" id="node1" href="withdrawal.html" target="_top" title="withdrawal" alt="" coords="217,5,872,427"> -<area shape="rect" id="node2" href="terminal.html" target="_top" title="terminal" alt="" coords="5,213,173,360"> +<area shape="rect" id="node1" href="withdrawal.html" target="_top" title="withdrawal" alt="" coords="217,5,872,485"> +<area shape="rect" id="node2" href="terminal.html" target="_top" title="terminal" alt="" coords="5,272,173,419"> </map> <a name='diagram'><img id="oneDegreeImg" src="../diagrams/tables/withdrawal.1degree.png" usemap="#oneDegreeRelationshipsDiagram" class="diagram" border="0" align="left"></a> </div> <div class="chart tab-pane " id="twodegreesDegreeImg-chart" style="position: relative; overflow-x:auto;"> <map id="twoDegreesRelationshipsDiagram" name="twoDegreesRelationshipsDiagram"> -<area shape="rect" id="node1" href="terminal.html" target="_top" title="terminal" alt="" coords="293,213,461,360"> -<area shape="rect" id="node2" href="terminal_provider.html" target="_top" title="terminal_provider" alt="" coords="5,245,249,333"> -<area shape="rect" id="node3" href="withdrawal.html" target="_top" title="withdrawal" alt="" coords="505,5,1160,427"> +<area shape="rect" id="node1" href="terminal.html" target="_top" title="terminal" alt="" coords="209,272,377,419"> +<area shape="rect" id="node2" href="provider.html" target="_top" title="provider" alt="" coords="5,304,165,392"> +<area shape="rect" id="node3" href="withdrawal.html" target="_top" title="withdrawal" alt="" coords="421,5,1076,485"> </map> <a name='diagram'><img id="twodegreesDegreeImg" src="../diagrams/tables/withdrawal.2degrees.png" usemap="#twoDegreesRelationshipsDiagram" class="diagram" border="0" align="left"></a> </div> diff --git a/specs/logical_model_relations.odg b/specs/logical_model_relations.odg Binary files differ.