Canonical TSAPI series DB schema v1.0.0
Single source of truth for the timeseries PostgreSQL schema shared by the Python (TSAPI_SERIESDB_PG_PY) and C++ (TSAPI_POSTGRES_CPP) libraries. SQL seeded byte-for-byte from TSAPI_SERIESDB_PG_PY/tsapi_pgdb/sql on 2026-09-02. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
commit
eed06559c0
17 changed files with 2080 additions and 0 deletions
145
sql/03_tables.sql
Normal file
145
sql/03_tables.sql
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
-- Meta schema tables
|
||||
-- Generated: 2025-10-15T12:24:56.295509
|
||||
|
||||
CREATE UNLOGGED TABLE log.pending_changes (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
"timestamp" TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
series_name TEXT NOT NULL,
|
||||
db_schema TEXT NOT NULL,
|
||||
op_type TEXT NOT NULL,
|
||||
db_user TEXT DEFAULT CURRENT_USER,
|
||||
details JSONB
|
||||
);
|
||||
|
||||
CREATE TABLE log.event_log (
|
||||
id BIGINT NOT NULL DEFAULT nextval('log.event_log_id_seq'),
|
||||
"timestamp" TIMESTAMPTZ,
|
||||
series_name TEXT NOT NULL,
|
||||
db_schema TEXT NOT NULL,
|
||||
event_type TEXT NOT NULL,
|
||||
details JSONB,
|
||||
source TEXT,
|
||||
db_user TEXT,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE meta.currencies (
|
||||
code character varying(3) NOT NULL,
|
||||
name character varying(100) NOT NULL,
|
||||
symbol character varying(10),
|
||||
decimal_places integer DEFAULT 2,
|
||||
notes text
|
||||
);
|
||||
|
||||
CREATE TABLE meta.exchanges (
|
||||
id character varying(12) NOT NULL,
|
||||
name character varying(50),
|
||||
timezone character varying(35),
|
||||
currency character varying(3),
|
||||
default_sec_type character varying(18),
|
||||
default_session character varying(40),
|
||||
default_holiday_calendar character varying(40),
|
||||
default_tick_size double precision,
|
||||
default_tick_value double precision,
|
||||
default_extended_hours boolean DEFAULT false,
|
||||
country character varying(3)
|
||||
);
|
||||
|
||||
CREATE TABLE meta.holidays (
|
||||
calendar_name character varying(50) NOT NULL,
|
||||
date date NOT NULL,
|
||||
description character varying(255),
|
||||
early_close boolean NOT NULL DEFAULT false,
|
||||
PRIMARY KEY (calendar_name, date)
|
||||
);
|
||||
|
||||
CREATE TABLE meta.instruments (
|
||||
symbol character varying(12) NOT NULL,
|
||||
exchange character varying(12) NOT NULL,
|
||||
name character varying(50) NOT NULL,
|
||||
type character varying(10),
|
||||
tick_size double precision,
|
||||
tick_value double precision,
|
||||
expiry character varying(20),
|
||||
strike double precision,
|
||||
currency character varying(3),
|
||||
session character varying(40),
|
||||
holiday_calendar character varying(50),
|
||||
sec_id character varying(50),
|
||||
sec_id_type character varying(20),
|
||||
description character varying(255),
|
||||
country character varying(3),
|
||||
extended_hours boolean,
|
||||
sector character varying(50),
|
||||
industry character varying(100),
|
||||
category character varying(50),
|
||||
subcategory character varying(50),
|
||||
asset_class character varying(30),
|
||||
geography character varying(30),
|
||||
underlying character varying(30)
|
||||
);
|
||||
|
||||
CREATE TABLE meta.security_types (
|
||||
code character varying(10) NOT NULL,
|
||||
name character varying(50) NOT NULL,
|
||||
description text,
|
||||
notes text
|
||||
);
|
||||
|
||||
CREATE TABLE meta.schema_version (
|
||||
version character varying(20) NOT NULL,
|
||||
installed_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
description text
|
||||
);
|
||||
|
||||
CREATE TABLE meta.series (
|
||||
table_id integer DEFAULT nextval('meta._table_meta__table_id_seq'::regclass) NOT NULL,
|
||||
db_schema character varying(70) NOT NULL,
|
||||
table_name character varying(70) NOT NULL,
|
||||
type character varying(30),
|
||||
description character varying(255),
|
||||
column_schema text DEFAULT ''::text,
|
||||
symbol character varying(30),
|
||||
root_symbol character varying(30),
|
||||
exchange character varying(30),
|
||||
frequency character varying(30),
|
||||
session text,
|
||||
sec_type character varying(30),
|
||||
sec_id character varying(30),
|
||||
sec_id_type character varying(30),
|
||||
create_timestamp timestamp without time zone DEFAULT CURRENT_TIMESTAMP,
|
||||
num_records bigint,
|
||||
first_timestamp timestamp without time zone,
|
||||
last_timestamp timestamp without time zone,
|
||||
bar_type character varying(30),
|
||||
feed character varying(30),
|
||||
currency character varying(30),
|
||||
expiry character varying(30),
|
||||
roll_type character varying(30),
|
||||
feed_type character varying(30),
|
||||
user_attr text,
|
||||
user_attr_2 text,
|
||||
script text,
|
||||
notes text,
|
||||
timezone character varying(50),
|
||||
category character varying(30),
|
||||
subcategory character varying(30),
|
||||
json JSONB,
|
||||
needs_reindex boolean NOT NULL DEFAULT false
|
||||
);
|
||||
|
||||
CREATE TABLE meta.sessions (
|
||||
name character varying(50) NOT NULL,
|
||||
definition text NOT NULL,
|
||||
"json" text,
|
||||
exchange_id character varying(12) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE meta.timezones (
|
||||
iana_name character varying(50) NOT NULL,
|
||||
display_name character varying(100) NOT NULL,
|
||||
description text,
|
||||
region character varying(50),
|
||||
utc_offset_hours real,
|
||||
notes text
|
||||
);
|
||||
Loading…
Add table
Add a link
Reference in a new issue