52 lines
2.2 KiB
SQL
52 lines
2.2 KiB
SQL
CREATE DATABASE IF NOT EXISTS market;
|
|
USE market;
|
|
CREATE TABLE IF NOT EXISTS users(
|
|
sqlId INT PRIMARY KEY AUTO_INCREMENT,
|
|
userId VARCHAR(36) UNIQUE NOT NULL,
|
|
userName VARCHAR(64) UNIQUE NOT NULL,
|
|
passwordHash VARCHAR(64) NOT NULL,
|
|
email VARCHAR(64) UNIQUE NOT NULL,
|
|
balance FLOAT NOT NULL DEFAULT 0,
|
|
publicKey VARCHAR(128) NOT NULL
|
|
);
|
|
CREATE TABLE IF NOT EXISTS buy_orders(
|
|
sqlId INT PRIMARY KEY AUTO_INCREMENT,
|
|
buyOrderId VARCHAR(36) UNIQUE NOT NULL,
|
|
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
|
expires DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP() + INTERVAL 3 DAY,
|
|
pageId INT NOT NULL,
|
|
price FLOAT NOT NULL,
|
|
volume INT NOT NULL,
|
|
fee FLOAT NOT NULL DEFAULT 0,
|
|
sold INT NOT NULL DEFAULT 0,
|
|
FOREIGN KEY (userId) REFERENCES users(userId)
|
|
);
|
|
CREATE TABLE IF NOT EXISTS sell_orders(
|
|
sqlId INT PRIMARY KEY AUTO_INCREMENT,
|
|
sellOrderId VARCHAR(36) UNIQUE NOT NULL,
|
|
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP(),
|
|
expires DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP() + INTERVAL 3 DAY,
|
|
price FLOAT NOT NULL,
|
|
fee FLOAT NOT NULL,
|
|
FOREIGN KEY (userId) REFERENCES users(userId)
|
|
);
|
|
CREATE TABLE IF NOT EXISTS sell_orders_items(
|
|
sqlId INT PRIMARY KEY AUTO_INCREMENT,
|
|
cardId VARCHAR(36) NOT NULL,
|
|
FOREIGN KEY (sellOrderId) REFERENCES sell_orders(sellOrderId) NOT NULL
|
|
);
|
|
CREATE TABLE IF NOT EXISTS transactions(
|
|
sqlId INT PRIMARY KEY AUTO_INCREMENT,
|
|
transactionId VARCHAR(36) UNIQUE NOT NULL,
|
|
isPending BOOLEAN NOT NULL DEFAULT true,
|
|
isAbandoned BOOLEAN NOT NULL DEFAULT false,
|
|
FOREIGN KEY (buyOrderId) REFERENCES buy_orders(buyOrderId) NOT NULL,
|
|
FOREIGN KEY (sellOrderItemSqlId) REFERENCES sell_order_items(sqlId) NOT NULL
|
|
);
|
|
CREATE USER IF NOT EXISTS '${MARKET_DB_USER}'@'%' IDENTIFIED BY '${MARKET_DB_PASSWORD}';
|
|
CREATE USER IF NOT EXISTS '${ORDER_MATCHER_DB_USER}'@'%' IDENTIFIED BY '${ORDER_MATCHER_DB_PASSWORD}';
|
|
CREATE USER IF NOT EXISTS '${STATUS_CHECKER_DB_USER}'@'%' IDENTIFIED BY '${STATUS_CHECKER_DB_PASSWORD}';
|
|
GRANT ALL PRIVILEGES ON market.* TO '${MARKET_DB_USER}'@'%';
|
|
GRANT ALL PRIVILEGES ON market.* TO '${ORDER_MATCHER_DB_USER}'@'%';
|
|
GRANT ALL PRIVILEGES ON market.* TO '${STATUS_CHECKER_DB_USER}'@'%';
|