argent/sql/shard.sql

42 lines
1.1 KiB
SQL

CREATE DATABASE IF NOT EXISTS argent_shard_01;
USE argent_shard_01;
CREATE TABLE ledger_statuses (
status_id TINYINT PRIMARY KEY,
name VARCHAR(20) UNIQUE NOT NULL
);
CREATE TABLE ledger (
entry_id CHAR(36) NOT NULL,
batch_id CHAR(36) NOT NULL,
user_id CHAR(36) NOT NULL,
group_id CHAR(36) DEFAULT NULL,
category_id INT,
amount DECIMAL(15, 2) NOT NULL,
currency_code CHAR(3) NOT NULL,
description VARCHAR(255),
status_id TINYINT DEFAULT '1',
created_at DATETIME NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (user_id, entry_id),
FOREIGN KEY (status_id) REFERENCES ledger_statuses(status_id),
INDEX (batch_id),
INDEX (group_id),
INDEX (status_id)
);
CREATE TABLE user_balances (
user_id CHAR(36) NOT NULL,
currency_code CHAR(3) NOT NULL,
total_confirmed DECIMAL(15, 2) DEFAULT 0.00,
total_pending DECIMAL(15, 2) DEFAULT 0.00,
PRIMARY KEY (user_id, currency_code)
);
INSERT INTO ledger_statuses (status_id, name) VALUES
(1, 'proposed'),
(2, 'ratified'),
(3, 'disputed'),
(4, 'settled');