82 lines
4.3 KiB
SQL
82 lines
4.3 KiB
SQL
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;
|