accounting-postgresql-utili.../src/main/resources/AccountingManagerTables.sql

32 lines
1.3 KiB
SQL

CREATE EXTENSION IF NOT EXISTS timescaledb;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TYPE aggregation_state AS ENUM ('RESTARTED', 'STARTED', 'AGGREGATED', 'DELETED', 'ADDED', 'COMPLETED');
CREATE TYPE aggregation_type AS ENUM ('DAILY', 'MONTHLY', 'YEARLY');
CREATE TABLE "aggregation_status"(
id UUID NOT NULL PRIMARY KEY DEFAULT uuid_generate_v4 (),
record_type TEXT NOT NULL,
aggregation_type aggregation_type NOT NULL,
aggregation_start_date TIMESTAMP WITH TIME ZONE NOT NULL,
aggregation_end_date TIMESTAMP WITH TIME ZONE NOT NULL,
original_records_number NUMERIC NOT NULL,
aggregated_records_number NUMERIC NOT NULL,
recovered_records_number NUMERIC NOT NULL,
malformed_records_number NUMERIC NOT NULL DEFAULT 0,
percentage NUMERIC NOT NULL,
restart_from NUMERIC NOT NULL DEFAULT 0,
context TEXT,
current_aggregation_state aggregation_state NOT NULL,
last_update_time TIMESTAMP WITH TIME ZONE NOT NULL,
previous UUID REFERENCES aggregation_status (id) DEFAULT NULL ON DELETE SET NULL
);
CREATE TABLE "aggregation_status_event"(
aggregation_state aggregation_state NOT NULL,
start_time TIMESTAMP WITH TIME ZONE NOT NULL,
end_time TIMESTAMP WITH TIME ZONE NOT NULL,
aggregation_status UUID REFERENCES aggregation_status (id) ON DELETE CASCADE,
UNIQUE (aggregation_state, start_time, end_time, aggregation_status)
);