-- ============================================================================
-- Copyright (C) 2026 Alles Watt lauft
--
-- Audit Log table for tracking changes to all KundenKarte objects
-- ============================================================================

CREATE TABLE IF NOT EXISTS llx_kundenkarte_audit_log
(
    rowid               integer AUTO_INCREMENT PRIMARY KEY,
    entity              integer DEFAULT 1 NOT NULL,

    -- Object identification
    object_type         varchar(64) NOT NULL COMMENT 'Type: equipment, carrier, panel, anlage, connection',
    object_id           integer NOT NULL COMMENT 'ID of the object',
    object_ref          varchar(128) COMMENT 'Reference/label of the object (for history)',

    -- Related context
    fk_societe          integer COMMENT 'Customer/Third party',
    fk_anlage           integer COMMENT 'Installation/Anlage',

    -- Action tracking
    action              varchar(32) NOT NULL COMMENT 'create, update, delete, move, duplicate',
    field_changed       varchar(64) COMMENT 'Specific field that was changed',
    old_value           text COMMENT 'Previous value (JSON for complex data)',
    new_value           text COMMENT 'New value (JSON for complex data)',

    -- User and timestamp
    fk_user             integer NOT NULL COMMENT 'User who made the change',
    user_login          varchar(64) COMMENT 'Login name (cached for history)',
    date_action         datetime NOT NULL,

    -- Optional notes
    note                text COMMENT 'Additional context',

    -- IP tracking (optional, for security)
    ip_address          varchar(45) COMMENT 'IP address of the user',

    INDEX idx_audit_object (object_type, object_id),
    INDEX idx_audit_societe (fk_societe),
    INDEX idx_audit_anlage (fk_anlage),
    INDEX idx_audit_date (date_action),
    INDEX idx_audit_user (fk_user)
) ENGINE=innodb;
