feat: expand vehicle data platform capabilities
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
CREATE TABLE IF NOT EXISTS vehicle_open_app (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(96) NOT NULL,
|
||||
app_key_hash BINARY(32) NOT NULL,
|
||||
app_key_prefix CHAR(8) NOT NULL,
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'enabled',
|
||||
valid_from DATETIME(3) NOT NULL,
|
||||
valid_to DATETIME(3) NULL,
|
||||
created_by VARCHAR(96) NOT NULL,
|
||||
updated_by VARCHAR(96) NOT NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
UNIQUE KEY uk_vehicle_open_app_key_hash (app_key_hash),
|
||||
INDEX idx_vehicle_open_app_validity (status, valid_from, valid_to),
|
||||
CONSTRAINT chk_vehicle_open_app_status CHECK (status IN ('enabled', 'disabled')),
|
||||
CONSTRAINT chk_vehicle_open_app_validity CHECK (valid_to IS NULL OR valid_to > valid_from)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS vehicle_open_app_vehicle (
|
||||
app_id BIGINT UNSIGNED NOT NULL,
|
||||
vin VARCHAR(64) NOT NULL,
|
||||
valid_from DATETIME(3) NOT NULL,
|
||||
valid_to DATETIME(3) NULL,
|
||||
granted_by VARCHAR(96) NOT NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (app_id, vin),
|
||||
INDEX idx_vehicle_open_grant_vin_time (vin, valid_from, valid_to),
|
||||
INDEX idx_vehicle_open_grant_app_time (app_id, valid_from, valid_to, vin),
|
||||
CONSTRAINT fk_vehicle_open_grant_app FOREIGN KEY (app_id) REFERENCES vehicle_open_app(id) ON DELETE CASCADE,
|
||||
CONSTRAINT chk_vehicle_open_grant_validity CHECK (valid_to IS NULL OR valid_to > valid_from)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS vehicle_open_daily_energy (
|
||||
vin VARCHAR(64) NOT NULL,
|
||||
stat_date DATE NOT NULL,
|
||||
energy_type VARCHAR(24) NOT NULL,
|
||||
source_endpoint VARCHAR(128) NOT NULL DEFAULT '',
|
||||
consumption_kg DECIMAL(18,3) NOT NULL DEFAULT 0,
|
||||
unit VARCHAR(16) NOT NULL,
|
||||
first_mass_kg DECIMAL(18,3) NULL,
|
||||
last_mass_kg DECIMAL(18,3) NULL,
|
||||
sample_count BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
refuel_count INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
quality_status VARCHAR(24) NOT NULL,
|
||||
quality_reason VARCHAR(255) NOT NULL DEFAULT '',
|
||||
calculated_at DATETIME(3) NOT NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (vin, stat_date, energy_type),
|
||||
INDEX idx_vehicle_open_energy_date_type (stat_date, energy_type, quality_status, vin),
|
||||
CONSTRAINT chk_vehicle_open_energy_type CHECK (energy_type IN ('HYDROGEN')),
|
||||
CONSTRAINT chk_vehicle_open_energy_quality CHECK (quality_status IN ('OK', 'NO_DATA', 'SUSPECT'))
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS vehicle_open_api_audit (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
trace_id VARCHAR(64) NOT NULL,
|
||||
app_id BIGINT UNSIGNED NULL,
|
||||
endpoint VARCHAR(64) NOT NULL,
|
||||
result VARCHAR(24) NOT NULL,
|
||||
requested_vehicle_count INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
detail VARCHAR(512) NOT NULL DEFAULT '',
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
INDEX idx_vehicle_open_api_audit_app_time (app_id, created_at),
|
||||
INDEX idx_vehicle_open_api_audit_trace (trace_id),
|
||||
INDEX idx_vehicle_open_api_audit_result_time (result, created_at),
|
||||
CONSTRAINT fk_vehicle_open_api_audit_app FOREIGN KEY (app_id) REFERENCES vehicle_open_app(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS vehicle_open_admin_audit (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
app_id BIGINT UNSIGNED NULL,
|
||||
actor VARCHAR(96) NOT NULL,
|
||||
action VARCHAR(64) NOT NULL,
|
||||
detail_json JSON NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
INDEX idx_vehicle_open_admin_audit_app_time (app_id, created_at),
|
||||
INDEX idx_vehicle_open_admin_audit_actor_time (actor, created_at),
|
||||
CONSTRAINT fk_vehicle_open_admin_audit_app FOREIGN KEY (app_id) REFERENCES vehicle_open_app(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
Reference in New Issue
Block a user