diff --git a/src/main/resources/all-tables/all-tables.sql b/src/main/resources/all-tables/all-tables.sql new file mode 100644 index 0000000..4029db2 --- /dev/null +++ b/src/main/resources/all-tables/all-tables.sql @@ -0,0 +1,139 @@ +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) +); + +CREATE TYPE operation_result AS ENUM ('SUCCESS', 'FAILED'); + +CREATE TABLE "job_usage_record"( + id UUID NOT NULL PRIMARY KEY, + consumer_id TEXT NOT NULL, + creation_time TIMESTAMP WITH TIME ZONE NOT NULL, + scope TEXT NOT NULL, + operation_result operation_result NOT NULL, + caller_qualifier TEXT NOT NULL DEFAULT 'TOKEN', + host TEXT NOT NULL, + service_class TEXT NOT NULL, + service_name TEXT NOT NULL, + job_name TEXT NOT NULL, + duration NUMERIC NOT NULL, + max_invocation_time NUMERIC NOT NULL, + min_invocation_time NUMERIC NOT NULL, + operation_count INTEGER NOT NULL DEFAULT 1, + aggregated BOOLEAN NOT NULL DEFAULT true, + start_time TIMESTAMP WITH TIME ZONE NOT NULL, + end_time TIMESTAMP WITH TIME ZONE NOT NULL +); + +CREATE TABLE "portlet_usage_record"( + id UUID NOT NULL PRIMARY KEY, + consumer_id TEXT NOT NULL, + creation_time TIMESTAMP WITH TIME ZONE NOT NULL, + scope TEXT NOT NULL, + operation_result operation_result NOT NULL, + caller_qualifier TEXT NOT NULL DEFAULT 'TOKEN', + portlet_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + operation_count INTEGER NOT NULL DEFAULT 1, + aggregated BOOLEAN NOT NULL DEFAULT true, + start_time TIMESTAMP WITH TIME ZONE NOT NULL, + end_time TIMESTAMP WITH TIME ZONE NOT NULL +); + +CREATE TABLE "service_usage_record"( + id UUID NOT NULL PRIMARY KEY, + consumer_id TEXT NOT NULL, + creation_time TIMESTAMP WITH TIME ZONE NOT NULL, + scope TEXT NOT NULL, + operation_result operation_result NOT NULL, + caller_qualifier TEXT NOT NULL DEFAULT 'TOKEN', + caller_host TEXT NOT NULL, + host TEXT NOT NULL, + service_class TEXT NOT NULL, + service_name TEXT NOT NULL, + called_method TEXT NOT NULL, + duration NUMERIC NOT NULL, + max_invocation_time NUMERIC NOT NULL, + min_invocation_time NUMERIC NOT NULL, + operation_count INTEGER NOT NULL DEFAULT 1, + aggregated BOOLEAN NOT NULL DEFAULT true, + start_time TIMESTAMP WITH TIME ZONE NOT NULL, + end_time TIMESTAMP WITH TIME ZONE NOT NULL +); + +CREATE TYPE data_type AS ENUM ('STORAGE', 'TREE', 'GEO', 'DATABASE', 'LOCAL', 'OTHER', 'JUPYTER', 'KUBERNETES'); + +CREATE TABLE "storage_status_record"( + id UUID NOT NULL PRIMARY KEY, + consumer_id TEXT NOT NULL, + creation_time TIMESTAMP WITH TIME ZONE NOT NULL, + scope TEXT NOT NULL, + operation_result operation_result NOT NULL, + data_type data_type NOT NULL, + data_volume NUMERIC NOT NULL, + data_count NUMERIC NOT NULL, + provider_uri TEXT DEFAULT 'data.d4science.org', + operation_count INTEGER NOT NULL DEFAULT 1, + aggregated BOOLEAN NOT NULL DEFAULT true, + start_time TIMESTAMP WITH TIME ZONE NOT NULL, + end_time TIMESTAMP WITH TIME ZONE NOT NULL, + + -- Deprecated and to be removed + provider_id TEXT DEFAULT 'data.d4science.org', + data_service_id TEXT DEFAULT 'NOT_NEEDED', + data_service_class TEXT DEFAULT 'NOT_NEEDED', + data_service_name TEXT DEFAULT 'NOT_NEEDED' + +); + +CREATE TYPE operation_type AS ENUM ('CREATE', 'READ', 'UPDATE', 'DELETE'); + +CREATE TABLE "storage_usage_record"( + id UUID NOT NULL PRIMARY KEY, + consumer_id TEXT NOT NULL, + creation_time TIMESTAMP WITH TIME ZONE NOT NULL, + scope TEXT NOT NULL, + operation_result operation_result NOT NULL, + resource_owner TEXT NOT NULL, + provider_uri TEXT NOT NULL, + operation_type operation_type NOT NULL, + data_type data_type NOT NULL, + data_volume NUMERIC NOT NULL, + operation_count INTEGER NOT NULL DEFAULT 1, + aggregated BOOLEAN NOT NULL DEFAULT true, + start_time TIMESTAMP WITH TIME ZONE NOT NULL, + end_time TIMESTAMP WITH TIME ZONE NOT NULL, + + -- Deprecated and to be removed + resource_scope TEXT DEFAULT 'NOT_NEEDED', + resource_uri TEXT DEFAULT 'NOT_NEEDED' + +); \ No newline at end of file