package migrate

import (
	"github.com/pingcap/log"
	"go.uber.org/zap"
	"gorm.io/gorm"
)

var _ = AddDBMigrateRecord(
	"202508131800",
	func(db *gorm.DB) error {
		auditLogFilters := `
	CREATE TABLE IF NOT EXISTS auditlog_filters (
    id VARCHAR(255) NOT NULL,
	tenant_id VARCHAR(255) NOT NULL,
    project_id VARCHAR(255) NOT NULL,
    cluster_id VARCHAR(255) NOT NULL,
    name VARCHAR(255) NOT NULL,
    users JSON NOT NULL,
    filters JSON NOT NULL,
    disabled TINYINT(1) DEFAULT FALSE,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
	PRIMARY KEY (id),
    INDEX idx_cluster_id (cluster_id),
    INDEX idx_created_at (created_at)
);
`
		err := db.Exec(auditLogFilters).Error
		if err != nil {
			log.Error("create table auditlog_filters failed", zap.Error(err))
		}

		auditLogConfig := `
	CREATE TABLE IF NOT EXISTS auditlog_config (
    cluster_id VARCHAR(255) NOT NULL,
    tenant_id VARCHAR(255) NOT NULL,
    project_id VARCHAR(255) NOT NULL,
    cloud_provider VARCHAR(32) NOT NULL,
    region VARCHAR(64) NOT NULL,
    kubernetes VARCHAR(32) NOT NULL,
    enabled TINYINT(1) NOT NULL,
    unredacted TINYINT(1) NOT NULL,
    cloud_storage JSON DEFAULT NULL,
    cloud_storage_type VARCHAR(32) NOT NULL,
    rotation_interval_seconds BIGINT(20) DEFAULT 0,
    rotation_size_bytes BIGINT(20) DEFAULT 0,
    updated_at TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (cluster_id)
);`

		err = db.Exec(auditLogConfig).Error
		if err != nil {
			log.Error("create table auditlog_config failed", zap.Error(err))
		}
		return nil
	},
)
