From f3ba2f48daa9b88f7d7a54e6df7f139b7c2136aa Mon Sep 17 00:00:00 2001 From: "Rene V. Vergara A." Date: Thu, 18 Jul 2024 21:44:21 -0400 Subject: [PATCH] rvv001 - zgo-backend database backend Initial commit - Database definition using Persistent (in progress) --- src/DB.hs | 156 +++++++++++++++ zgo-backend_DB.sql | 458 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 614 insertions(+) create mode 100644 src/DB.hs create mode 100644 zgo-backend_DB.sql diff --git a/src/DB.hs b/src/DB.hs new file mode 100644 index 0000000..58283e5 --- /dev/null +++ b/src/DB.hs @@ -0,0 +1,156 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE EmptyDataDecls #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE GADTs #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE DerivingStrategies #-} +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE StandaloneDeriving #-} +{-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE TypeOperators #-} +{-# LANGUAGE TypeApplications #-} + +module DB where + +import Control.Exception (throwIO) +import Control.Monad (forM_, when) +import Control.Monad.IO.Class (MonadIO, liftIO) +import Control.Monad.Logger (NoLoggingT, runNoLoggingT) +import Data.Bifunctor (bimap) +import qualified Data.ByteString as BS +import Data.HexString +import Data.List (group, sort) +import Data.Maybe (catMaybes, fromJust, isJust) +import Data.Pool (Pool) +import qualified Data.Text as T +import qualified Data.Text.Encoding as TE +import Data.Word +import Database.Esqueleto.Experimental +import qualified Database.Persist.Sqlite as PS +import Database.Persist.TH + +share + [mkPersist sqlSettings, mkMigrate "migrateAll"] + [persistLowerCase| + ZgoBlock + block_id Int --Block Id number + block_confs Int default=0 -- Block confirnations + block_network String default="" -- Block Network + block_height Int default=0 -- Block Height + block_time Int default=0 -- Block time + UniqueBlock block_id + deriving Show Eq + ZgoBlockTx + blocktx_block_id Int --'Block Tx parent + blocktx_id Int -- Block Tx record Id + blocktx_txid String -- Block Tx Id + UniqueBlockTx blocktx_block_id blocktx_id + deriving Show Eq + ZgoCountry + country_code String -- Two Character Country Code + country_name String -- Country unique name + UniqueCountryCode country_code + deriving Show Eq + ZgoItem + item_owner_id Int -- Owner Id + item_id String -- Item Id + item_name String -- Item name', + item_description T.Text default="" -- Item description + item_cost Float default=0.0 -- Item Unit price + UniqueItemId item_owner item_id + deriving Show Eq + ZgoLanguages + encode_id String -- Language encoding id + view_name String default-"" -- View name that use this language' + view_element String default="" -- 'Element name + view_element_text T.Text default="" -- Text to be displayed' + UniqueLanguage encode_id view_name view_element + deriving Show Eq + ZgoOrders + order_id Int -- Order Id + order_zaddress T.Text -- Order zcash address + order_session T.Text -- Order session id + order_timestamp Int -- Order timestamp + order_closed Word8 -- Order closed flag + order_currency String -- Order currency + order_price Float default=0.0 -- Order ZEC price + order_total Float default=0.0 -- Order total amount + order_totalzec Float default=0.0 -- Order total in ZEC + order_paid Word8 default=0 -- Order paid status + order_token String default="" -- Order token + order_extinv String default="" -- Order External Invoice + order_shortcode String default='' -- Order invoice shortcode + order_taxamount Float default=0.0 -- Order tax amount + order_tipamount Float default=0.0 -- Order tip amount + order_vatamount Float default=0.0 -- Orcer VAT amount' + UniqueOrderId order_id + deriving Show Eq + ZgoOrderLines + orderline_orderid Int default=0 -- Orderlines Order Id + orderline_line Int default=0 -- Orderlines Line number + orderline_qty Int default=0 -- Orderline item qty + orderline_name T.Text default="" -- Orderline item description + orderline_cost Float default=0.0 -- Orderline item cost + UniqueOrderLine orderline_orderid orderline_line + deriving Show Eq + ZgoOwner + owner_id Int --'Owner ID number + owner_co_name String default="" -- Company''s name + owner_firstname String -- Owner's first name + owner_lastname String -- Owner's last name + owner_email String -- Owner's email address + owner_street String -- Owner's street + owner_city String -- Owner's city + owner_state String -- Owner's state + owner_zipcode String -- Owner's zip code + owner_phone String -- Owner's phone number + owner_country String -- Owner's country + owner_website String -- Owner's website URL + owner_currency String -- Owner's currency', + owner_zcaddress String -- Owner's zcash address + owner_usezats Word8 -- Use zats for display + owner_crmtoken T.Text -- Owner's crm token + owner_usetax Word8 -- Use tax flag + owner_taxvalue Float -- Tax rate to use + owner_usevat Word8 -- Use vat flag + owner_vat Float -- Vat rate to use + owner_payconf Word8 -- Confirm payment flag + owner_viewkey T.Text -- Viewing Key for payment confirmation + owner_invoices Word8 -- Use zgo invoices + owner_tips Word8 -- Activate tips + owner_paid Word8 -- True if account is paid + owner_expiration Int -- Expiration date-time + UniqueOwnerId owner_id + UniqueOwnerZcashAddr owner_zcaddress + deriving Show Eq + ZgoPayment + payment_id Int -- Payment Id + payment_delta Int -- Payment delta + payment_done Word8 -- Payment done flag + payment_zaddress T.Text -- Payment zcash address + payment_session String default="" -- Payment session + payment_blocktime Int default=0 -- Payment blocktime + payment_amount Float default=0.0 -- Payment amount + payment_txid String default ="" -- Payment transaction id + payment_memo T.Text default="" -- Payment Memo + UniquePaymentId payment_id + deriving Show Eq + ZgoPrice + price_id Int -- Price Id + price_delta Int default=0 -- Price delta + price_done Word8 default=0 -- Price done flag + price_zaddress T.Text default="" -- Price zcash address + price_session String default="" -- Price session + price_blocktime Int default=0 -- Price blocktime + price_amount Float default=0.0 -- Price amount + price_txid String default="" -- Price transaction id + price_memo T.Text default="" -- Price Memo + UniquePriceId price_id + deriving Show Eq + \ No newline at end of file diff --git a/zgo-backend_DB.sql b/zgo-backend_DB.sql new file mode 100644 index 0000000..9f6b603 --- /dev/null +++ b/zgo-backend_DB.sql @@ -0,0 +1,458 @@ +-- phpMyAdmin SQL Dump +-- version 5.2.1-4.fc40 +-- https://www.phpmyadmin.net/ +-- +-- Host: localhost +-- Generation Time: Jul 18, 2024 at 07:42 PM +-- Server version: 10.11.8-MariaDB +-- PHP Version: 8.2.21 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Database: `zgodb` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `block` +-- + +CREATE TABLE `block` ( + `block_id` int(11) NOT NULL COMMENT 'Block Id number', + `block_confs` int(11) NOT NULL DEFAULT 0 COMMENT 'Block confirnations', + `block_network` varchar(15) NOT NULL DEFAULT '' COMMENT 'Block Network', + `block_height` int(11) NOT NULL DEFAULT 0 COMMENT 'Block Height', + `block_time` datetime NOT NULL COMMENT 'Block time' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Block header date'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `blocktx` +-- + +CREATE TABLE `blocktx` ( + `blocktx_block_id` int(11) NOT NULL COMMENT 'Block Tx parent', + `blocktx_id` int(11) NOT NULL DEFAULT 0 COMMENT 'Block Tx record Id', + `blocktx_txid` varchar(64) NOT NULL DEFAULT '' COMMENT 'Block Tx Id' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `country` +-- + +CREATE TABLE `country` ( + `country_code` varchar(5) NOT NULL COMMENT '2 Doigit Country Code', + `country_name` varchar(80) NOT NULL COMMENT 'Country unique name' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Coutry Codes and Names'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `item` +-- + +CREATE TABLE `item` ( + `item_owner_id` int(11) NOT NULL COMMENT 'Owner Id ', + `item_id` varchar(40) NOT NULL COMMENT 'Item Id', + `item_name` varchar(127) NOT NULL COMMENT 'Item name', + `item_description` varchar(300) NOT NULL DEFAULT '' COMMENT 'Item description', + `item_cost` double(12,4) NOT NULL DEFAULT 0.0000 COMMENT 'Item Unit price' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `languages` +-- + +CREATE TABLE `languages` ( + `encode_id` varchar(10) NOT NULL DEFAULT '' COMMENT 'Language encoding id', + `view_name` varchar(32) NOT NULL DEFAULT '' COMMENT 'View name that use this language', + `view_element` varchar(32) NOT NULL DEFAULT '' COMMENT 'Element name', + `view_element_text` varchar(4000) NOT NULL DEFAULT '' COMMENT 'Text to be displayed' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='ZGo Language translation database'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `orderlines` +-- + +CREATE TABLE `orderlines` ( + `orderline_orderid` int(11) NOT NULL DEFAULT 0 COMMENT 'Orderlines Order Id', + `orderline_line` int(11) NOT NULL DEFAULT 0 COMMENT 'Orderlines Line number', + `orderline_qty` int(11) NOT NULL DEFAULT 0 COMMENT 'Orderline item qty', + `orderline_name` varchar(250) NOT NULL DEFAULT '' COMMENT 'Orderline item description', + `orderline_cost` double(12,3) NOT NULL DEFAULT 0.000 COMMENT 'Orderline item cost' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Order contents'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `orders` +-- + +CREATE TABLE `orders` ( + `order_id` int(11) NOT NULL COMMENT 'Order Id', + `order_zaddress` varchar(300) NOT NULL COMMENT 'Order zcash address', + `order_session` varchar(64) NOT NULL DEFAULT '' COMMENT 'Order session id', + `order_timestamp` datetime NOT NULL COMMENT 'Order timestamp', + `order_closed` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Order closed flag', + `order_currency` varchar(15) NOT NULL DEFAULT '' COMMENT 'Order currency', + `order_price` double(12,4) NOT NULL DEFAULT 0.0000 COMMENT 'Order ZEC price', + `order_total` double(12,4) NOT NULL DEFAULT 0.0000 COMMENT 'Order total amount', + `order_totalzec` double(14,8) NOT NULL DEFAULT 0.00000000 COMMENT 'Order total in ZEC', + `order_paid` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Order paid status', + `order_token` varchar(64) NOT NULL DEFAULT '' COMMENT 'Order token', + `order_extinv` varchar(64) NOT NULL DEFAULT '' COMMENT 'Order External Invoice', + `order_shortcode` varchar(64) NOT NULL DEFAULT '' COMMENT 'Order invoice shortcode', + `order_taxamount` double(12,3) NOT NULL DEFAULT 0.000 COMMENT 'Order tax amount', + `order_tipamount` double(12,3) NOT NULL DEFAULT 0.000 COMMENT 'Order tip amount', + `order_vatamount` double(12,3) NOT NULL DEFAULT 0.000 COMMENT 'Orcer VAT amount' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `owner` +-- + +CREATE TABLE `owner` ( + `owner_id` int(11) NOT NULL COMMENT 'Owner ID number', + `owner_co_name` varchar(127) NOT NULL DEFAULT '' COMMENT 'Company''s name', + `owner_firstname` varchar(127) NOT NULL COMMENT 'Owner''s first name', + `owner_lastname` varchar(127) NOT NULL COMMENT 'Owner''s last name', + `owner_email` varchar(127) NOT NULL COMMENT 'Owner''s email address', + `owner_street` varchar(127) NOT NULL COMMENT 'Owner''s street', + `owner_city` varchar(127) NOT NULL COMMENT 'Owner''s city', + `owner_state` varchar(127) NOT NULL COMMENT 'Owner''s state', + `owner_zipcode` varchar(40) NOT NULL COMMENT 'Owner''s zip code', + `owner_phone` varchar(25) NOT NULL COMMENT 'Owner''s phone number', + `owner_country` varchar(80) NOT NULL COMMENT 'Owner''s country', + `owner_website` varchar(125) NOT NULL COMMENT 'Owner''s website URL', + `owner_currency` varchar(15) NOT NULL COMMENT 'Owner''s currency', + `owner_zcaddress` varchar(500) NOT NULL DEFAULT '' COMMENT 'Owner''s zcash address', + `owner_usezats` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Use zats for display', + `owner_crmtoken` varchar(500) NOT NULL DEFAULT '' COMMENT 'Owner''s crm token', + `owner_usetax` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Use tax flag.', + `owner_taxvalue` double(12,3) NOT NULL DEFAULT 0.000 COMMENT 'tax rate to use', + `owner_usevat` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Use vat flag', + `owner_vat` double(12,3) NOT NULL DEFAULT 0.000 COMMENT 'vat rate to use', + `owner_payconf` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Confirm payment flag', + `owner_viewkey` varchar(500) NOT NULL DEFAULT '' COMMENT 'Viewing Key for payment confirmation', + `owner_invoices` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Use zgo invoices', + `owner_tips` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Activate tips', + `owner_paid` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'True if account is paid', + `owner_expiration` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Expiration date-time' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Owner''s account information'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `payment` +-- + +CREATE TABLE `payment` ( + `payment_id` int(11) NOT NULL COMMENT 'Payment Id', + `payment_delta` int(11) NOT NULL DEFAULT 0 COMMENT 'Payment delta', + `payment_done` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Payment done flag', + `payment_zaddress` varchar(300) NOT NULL DEFAULT '' COMMENT 'Payment zcash address', + `payment_session` varchar(127) NOT NULL DEFAULT '' COMMENT 'Payment session', + `payment_blocktime` int(11) NOT NULL DEFAULT 0 COMMENT 'Payment blocktime', + `payment_amount` double(12,3) NOT NULL DEFAULT 0.000 COMMENT 'Payment amount', + `payment_txid` varchar(127) NOT NULL DEFAULT '' COMMENT 'Payment transaction id', + `payment_memo` varchar(1000) NOT NULL DEFAULT '' COMMENT 'Payment Memo' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Payment table'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `price` +-- + +CREATE TABLE `price` ( + `price_id` int(11) NOT NULL COMMENT 'Price Id', + `price_delta` int(11) NOT NULL DEFAULT 0 COMMENT 'Price delta', + `price_done` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Price done flag', + `price_zaddress` varchar(300) NOT NULL DEFAULT '' COMMENT 'Price zcash address', + `price_session` varchar(127) NOT NULL DEFAULT '' COMMENT 'Price session', + `price_blocktime` int(11) NOT NULL DEFAULT 0 COMMENT 'Price blocktime', + `price_amount` double(12,3) NOT NULL DEFAULT 0.000 COMMENT 'Price amount', + `price_txid` varchar(127) NOT NULL DEFAULT '' COMMENT 'Price transaction id', + `price_memo` varchar(1000) NOT NULL DEFAULT '' COMMENT 'Price Memo' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Price table'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `prozesion` +-- + +CREATE TABLE `prozesion` ( + `pro_id` int(11) NOT NULL COMMENT 'Prosession record id', + `pro_zaddress` varchar(300) NOT NULL DEFAULT '' COMMENT 'Prosession zcash address', + `pro_expiration` datetime NOT NULL COMMENT 'Prosession expiration date/time', + `pro_closed` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Prosession closed flag' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Prosessions table'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `transaction` +-- + +CREATE TABLE `transaction` ( + `tx_id` int(11) NOT NULL COMMENT 'Transaction ID', + `tx_zaddress` varchar(300) NOT NULL DEFAULT '' COMMENT 'Transaction Zcash Address', + `tx_expiration` datetime NOT NULL COMMENT 'Transaction Expiration Date/Time', + `tx_closed` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Transaction Closed flag' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Transactions table'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `user` +-- + +CREATE TABLE `user` ( + `user_id` int(11) NOT NULL COMMENT 'User Id', + `user_zaddress` varchar(300) NOT NULL COMMENT 'User zcash address', + `user_session` varchar(100) NOT NULL COMMENT 'User session id', + `user_blocktime` datetime NOT NULL COMMENT 'User block time', + `user_pin` varchar(100) NOT NULL COMMENT 'User pin', + `user_validated` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'User validated' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='User session information'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `wootoken` +-- + +CREATE TABLE `wootoken` ( + `wootoken_id` int(11) NOT NULL COMMENT 'WooToken record Id', + `wootoken_owner_id` int(11) NOT NULL COMMENT 'WooToken owner id', + `wootoken_token` varchar(32) NOT NULL DEFAULT '' COMMENT 'WooToken token', + `wootoken_url` varchar(64) NOT NULL DEFAULT '' COMMENT 'WooToken URL' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='WooToken integration token table'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `xero` +-- + +CREATE TABLE `xero` ( + `xero_id` int(11) NOT NULL COMMENT 'Xero Id', + `xero_client_id` varchar(40) NOT NULL DEFAULT '' COMMENT 'Xero client id', + `xero_client_secret` varchar(64) NOT NULL DEFAULT '' COMMENT 'Xero client secret word' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `xerotoken` +-- + +CREATE TABLE `xerotoken` ( + `xerotoken_id` int(11) NOT NULL COMMENT 'Xero account id', + `xerotoken_zaddress` varchar(300) NOT NULL COMMENT 'Xero zcash address', + `xerotoken_access_token` varchar(1500) NOT NULL COMMENT 'Xero account access token', + `xerotoken_expires` int(11) NOT NULL COMMENT 'Xero token expiration ', + `xerotoken_refreshtoken` varchar(127) NOT NULL COMMENT 'Xero refresh token', + `xerotoken_accexpires` datetime NOT NULL COMMENT 'Xero account expire datetime', + `xerotoken_accCode` varchar(64) NOT NULL COMMENT 'Xero account code', + `xerotoken_refexpires` datetime NOT NULL COMMENT 'Xero reference expire datetime' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- Indexes for dumped tables +-- + +-- +-- Indexes for table `block` +-- +ALTER TABLE `block` + ADD PRIMARY KEY (`block_id`); + +-- +-- Indexes for table `blocktx` +-- +ALTER TABLE `blocktx` + ADD KEY `fx_block_id` (`blocktx_block_id`); + +-- +-- Indexes for table `country` +-- +ALTER TABLE `country` + ADD PRIMARY KEY (`country_code`), + ADD UNIQUE KEY `country_country_name_IDX` (`country_name`) USING BTREE; + +-- +-- Indexes for table `item` +-- +ALTER TABLE `item` + ADD UNIQUE KEY `owner_item_ix` (`item_owner_id`,`item_id`); + +-- +-- Indexes for table `languages` +-- +ALTER TABLE `languages` + ADD UNIQUE KEY `language_ix` (`encode_id`,`view_name`,`view_element`); + +-- +-- Indexes for table `orderlines` +-- +ALTER TABLE `orderlines` + ADD KEY `fk_order_id` (`orderline_orderid`); + +-- +-- Indexes for table `orders` +-- +ALTER TABLE `orders` + ADD PRIMARY KEY (`order_id`); + +-- +-- Indexes for table `owner` +-- +ALTER TABLE `owner` + ADD PRIMARY KEY (`owner_id`); + +-- +-- Indexes for table `payment` +-- +ALTER TABLE `payment` + ADD PRIMARY KEY (`payment_id`); + +-- +-- Indexes for table `price` +-- +ALTER TABLE `price` + ADD PRIMARY KEY (`price_id`); + +-- +-- Indexes for table `prozesion` +-- +ALTER TABLE `prozesion` + ADD PRIMARY KEY (`pro_id`), + ADD KEY `pro_zaddress` (`pro_zaddress`); + +-- +-- Indexes for table `transaction` +-- +ALTER TABLE `transaction` + ADD PRIMARY KEY (`tx_id`), + ADD KEY `tx_zaddress` (`tx_zaddress`); + +-- +-- Indexes for table `user` +-- +ALTER TABLE `user` + ADD PRIMARY KEY (`user_id`), + ADD UNIQUE KEY `zaddress_ix` (`user_zaddress`); + +-- +-- Indexes for table `wootoken` +-- +ALTER TABLE `wootoken` + ADD PRIMARY KEY (`wootoken_id`), + ADD KEY `wootoken_owner_ix` (`wootoken_owner_id`); + +-- +-- Indexes for table `xero` +-- +ALTER TABLE `xero` + ADD PRIMARY KEY (`xero_id`); + +-- +-- Indexes for table `xerotoken` +-- +ALTER TABLE `xerotoken` + ADD PRIMARY KEY (`xerotoken_id`), + ADD UNIQUE KEY `xero_zaddress_ix` (`xerotoken_zaddress`); + +-- +-- AUTO_INCREMENT for dumped tables +-- + +-- +-- AUTO_INCREMENT for table `owner` +-- +ALTER TABLE `owner` + MODIFY `owner_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Owner ID number'; + +-- +-- AUTO_INCREMENT for table `payment` +-- +ALTER TABLE `payment` + MODIFY `payment_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Payment Id'; + +-- +-- AUTO_INCREMENT for table `price` +-- +ALTER TABLE `price` + MODIFY `price_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Price Id'; + +-- +-- AUTO_INCREMENT for table `transaction` +-- +ALTER TABLE `transaction` + MODIFY `tx_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Transaction ID'; + +-- +-- AUTO_INCREMENT for table `user` +-- +ALTER TABLE `user` + MODIFY `user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'User Id'; + +-- +-- AUTO_INCREMENT for table `xerotoken` +-- +ALTER TABLE `xerotoken` + MODIFY `xerotoken_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Xero account id'; + +-- +-- Constraints for dumped tables +-- + +-- +-- Constraints for table `blocktx` +-- +ALTER TABLE `blocktx` + ADD CONSTRAINT `fx_block_id` FOREIGN KEY (`blocktx_block_id`) REFERENCES `block` (`block_id`); + +-- +-- Constraints for table `item` +-- +ALTER TABLE `item` + ADD CONSTRAINT `fk_owner_id` FOREIGN KEY (`item_owner_id`) REFERENCES `owner` (`owner_id`); + +-- +-- Constraints for table `orderlines` +-- +ALTER TABLE `orderlines` + ADD CONSTRAINT `fk_order_id` FOREIGN KEY (`orderline_orderid`) REFERENCES `orders` (`order_id`); + +-- +-- Constraints for table `wootoken` +-- +ALTER TABLE `wootoken` + ADD CONSTRAINT `wootoken_owner_ix` FOREIGN KEY (`wootoken_owner_id`) REFERENCES `owner` (`owner_id`); +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;