49 lines
1.3 KiB
Bash
49 lines
1.3 KiB
Bash
#!/bin/bash
|
|
|
|
psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
|
CREATE TYPE CLASS AS ENUM ('us_equity', 'crypto');
|
|
|
|
CREATE TYPE EXCHANGE AS ENUM (
|
|
'AMEX',
|
|
'ARCA',
|
|
'BATS',
|
|
'NASDAQ',
|
|
'NYSE',
|
|
'NYSEARCA',
|
|
'OTC',
|
|
'CRYPTO'
|
|
);
|
|
|
|
CREATE TABLE assets (
|
|
symbol TEXT PRIMARY KEY,
|
|
class CLASS NOT NULL,
|
|
exchange EXCHANGE NOT NULL,
|
|
trading BOOLEAN NOT NULL DEFAULT FALSE,
|
|
timestamp_added TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
timestamp_first TIMESTAMPTZ NOT NULL,
|
|
timestamp_last TIMESTAMPTZ NOT NULL
|
|
);
|
|
|
|
CREATE TABLE bars (
|
|
timestamp TIMESTAMPTZ,
|
|
asset_symbol TEXT REFERENCES assets(symbol) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
open DOUBLE PRECISION,
|
|
high DOUBLE PRECISION,
|
|
low DOUBLE PRECISION,
|
|
close DOUBLE PRECISION,
|
|
volume DOUBLE PRECISION NOT NULL,
|
|
num_trades BIGINT NOT NULL,
|
|
volume_weighted DOUBLE PRECISION NOT NULL,
|
|
PRIMARY KEY (asset_symbol, timestamp)
|
|
);
|
|
|
|
SELECT create_hypertable('bars', 'timestamp', 'asset_symbol', 15);
|
|
|
|
ALTER TABLE bars SET (
|
|
timescaledb.compress,
|
|
timescaledb.compress_segmentby = 'asset_symbol'
|
|
);
|
|
|
|
SELECT add_compression_policy('bars', INTERVAL '30 days');
|
|
EOSQL
|