40 lines
1.6 KiB
SQL
40 lines
1.6 KiB
SQL
-- Connector-Instanzen (Verbindungen zu Providern) und synchronisierte Ressourcen
|
|
CREATE TABLE connector_instances (
|
|
id CHAR(36) PRIMARY KEY,
|
|
connector_key VARCHAR(50) NOT NULL,
|
|
name VARCHAR(100) NOT NULL UNIQUE,
|
|
config_json JSON NOT NULL,
|
|
secrets_enc TEXT NULL,
|
|
enabled TINYINT(1) NOT NULL DEFAULT 1,
|
|
sync_interval_sec INT NOT NULL DEFAULT 300,
|
|
health ENUM('unknown','ok','down') NOT NULL DEFAULT 'unknown',
|
|
health_message VARCHAR(300) NULL,
|
|
capabilities_json JSON NULL,
|
|
last_ok_at DATETIME(3) NULL,
|
|
last_sync_at DATETIME(3) NULL,
|
|
last_error VARCHAR(500) 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)
|
|
);
|
|
|
|
-- Ressource = lokaler Spiegel eines Provider-Objekts (Lizenz, Hosting-Konto, ...). Provider-Rohdaten bleiben im Connector.
|
|
CREATE TABLE resources (
|
|
id CHAR(36) PRIMARY KEY,
|
|
instance_id CHAR(36) NOT NULL,
|
|
external_ref VARCHAR(100) NOT NULL,
|
|
type VARCHAR(30) NOT NULL,
|
|
name VARCHAR(300) NOT NULL,
|
|
state ENUM('active','suspended','expired','error','unknown') NOT NULL DEFAULT 'unknown',
|
|
org_id CHAR(36) NULL,
|
|
valid_from DATETIME(3) NULL,
|
|
valid_until DATETIME(3) NULL,
|
|
data_json JSON NULL,
|
|
customer_actions JSON NOT NULL DEFAULT '[]',
|
|
synced_at DATETIME(3) NOT NULL,
|
|
missing_since DATETIME(3) NULL,
|
|
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
UNIQUE KEY uq_instance_ref (instance_id, external_ref),
|
|
INDEX (org_id),
|
|
FOREIGN KEY (instance_id) REFERENCES connector_instances(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (org_id) REFERENCES organizations(id) ON DELETE SET NULL
|
|
);
|