delphi.market/init.sql

38 lines
1.1 KiB
MySQL
Raw Normal View History

2023-09-09 20:52:50 +00:00
CREATE TABLE lnauth(
k1 VARCHAR(64) NOT NULL PRIMARY KEY,
lnurl TEXT NOT NULL,
2023-09-09 20:52:50 +00:00
created TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
2023-09-09 20:52:50 +00:00
session_id VARCHAR(48) NOT NULL DEFAULT encode(gen_random_uuid()::text::bytea, 'base64')
);
2023-09-09 20:52:50 +00:00
CREATE TABLE users(
pubkey TEXT PRIMARY KEY,
last_seen TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
);
2023-09-09 20:52:50 +00:00
CREATE TABLE sessions(
2023-09-09 20:52:50 +00:00
pubkey TEXT NOT NULL REFERENCES users(pubkey),
2023-09-09 20:52:50 +00:00
session_id VARCHAR(48)
);
2023-09-09 20:52:50 +00:00
CREATE TABLE markets(
id SERIAL PRIMARY KEY,
description TEXT NOT NULL,
funding BIGINT NOT NULL,
active BOOLEAN DEFAULT true
);
CREATE EXTENSION "uuid-ossp";
CREATE TABLE shares(
2023-09-09 20:52:50 +00:00
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
market_id INTEGER REFERENCES markets(id),
description TEXT NOT NULL,
quantity BIGINT NOT NULL DEFAULT 0
2023-09-09 20:52:50 +00:00
);
CREATE TYPE order_side AS ENUM ('BUY', 'SELL');
CREATE TABLE trades(
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
share_id UUID NOT NULL REFERENCES shares(id),
2023-09-09 20:52:50 +00:00
pubkey TEXT NOT NULL REFERENCES users(pubkey),
side ORDER_SIDE NOT NULL,
quantity BIGINT NOT NULL,
2023-09-09 20:52:50 +00:00
msats BIGINT NOT NULL
);