42 lines
1.1 KiB
Bash
42 lines
1.1 KiB
Bash
#!/bin/bash
|
|
|
|
psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
|
CREATE TYPE CLASS AS ENUM ('us_equity', 'crypto', 'unknown');
|
|
|
|
CREATE TYPE EXCHANGE AS ENUM (
|
|
'AMEX',
|
|
'ARCA',
|
|
'BATS',
|
|
'NASDAQ',
|
|
'NYSE',
|
|
'NYSEARCA',
|
|
'OTC',
|
|
'unknown'
|
|
);
|
|
|
|
CREATE TABLE assets (
|
|
id UUID PRIMARY KEY,
|
|
symbol VARCHAR(20) NOT NULL UNIQUE,
|
|
class CLASS NOT NULL,
|
|
exchange EXCHANGE NOT NULL,
|
|
trading BOOLEAN NOT NULL DEFAULT FALSE,
|
|
date_added TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX assets_symbol_idx ON assets (symbol);
|
|
|
|
CREATE TABLE bars (
|
|
timestamp TIMESTAMPTZ NOT NULL,
|
|
asset_id UUID NOT NULL REFERENCES assets(id),
|
|
open DOUBLE PRECISION NOT NULL,
|
|
high DOUBLE PRECISION NOT NULL,
|
|
low DOUBLE PRECISION NOT NULL,
|
|
close DOUBLE PRECISION NOT NULL,
|
|
volume DOUBLE PRECISION NOT NULL,
|
|
PRIMARY KEY (asset_id, timestamp),
|
|
FOREIGN KEY (asset_id) REFERENCES assets(id)
|
|
);
|
|
|
|
SELECT create_hypertable('bars', 'timestamp', 'asset_id', 2);
|
|
EOSQL
|