CREATE TABLE trades (
	id SERIAL PRIMARY KEY,
	trade_id integer NOT NULL,
	product CHAR(7) NOT NULL,
	price NUMERIC(1000, 8) NOT NULL,
	size NUMERIC(1000, 8) NOT NULL,
	buy BOOLEAN NOT NULL DEFAULT FALSE,
	sell BOOLEAN NOT NULL DEFAULT FALSE,
	timestamp TIMESTAMPTZ NOT NULL);

CREATE UNIQUE INDEX product_trade_id_index ON trades (
	product,
	trade_id);

CREATE INDEX timestamp_index ON trades (timestamp);

CREATE TABLE confirmations (
	id SERIAL PRIMARY KEY,
	product CHAR(7) NOT NULL,
	type CHAR(1) NOT NULL,
	last_id INTEGER NOT NULL DEFAULT 0);

CREATE UNIQUE INDEX confirmations_product_type_index ON confirmations (
	product,
	type);

CREATE TABLE aggregations (
	id SERIAL PRIMARY KEY,
	interval integer NOT NULL,
	product CHAR(7) NOT NULL,
	price NUMERIC(1000, 8) NOT NULL,
	buy_volume NUMERIC(1000, 8) NOT NULL,
	sell_volume NUMERIC(1000, 8) NOT NULL,
	buy_transactions integer NOT NULL,
	sell_transactions integer NOT NULL,
	timestamp TIMESTAMPTZ NOT NULL
);

CREATE UNIQUE INDEX interval_product_time_index ON aggregations (
	interval,
	product,
	timestamp);
