package migrate

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

var _ = AddDBMigrateRecord(
	"202402101330",
	func(db *gorm.DB) error {
		err := db.Exec(`CREATE TABLE IF NOT EXISTS audit_log_schedules (
			org_id varchar(255) NOT NULL,
			project_id varchar(255) NOT NULL,
			cluster_id varchar(255) NOT NULL,
			state enum('enabled','disabled','deleted') NOT NULL,
			created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
			updated_at timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
			delete_time timestamp NULL DEFAULT NULL,
			disable_time timestamp NULL DEFAULT NULL,
			rotation_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
			s3_start_after varchar(255) NOT NULL DEFAULT '',
			last_file_name varchar(255) NOT NULL DEFAULT '',
			PRIMARY KEY (cluster_id),
			KEY idx_state (state)
		  )`).Error
		if err != nil {
			log.Error("failed to create table audit_log_schedules", zap.Error(err))
			return err
		}

		err = db.Exec(`CREATE TABLE IF NOT EXISTS audit_log_tasks (
			task_id varchar(255) NOT NULL,
			org_id varchar(255) NOT NULL,
			project_id varchar(255) NOT NULL,
			cluster_id varchar(255) NOT NULL,
		    state enum('pending','running','failed','succeeded', 'corrupted') NOT NULL,
			created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
			updated_at timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
			file_name varchar(255) NOT NULL,
			start_object_key varchar(255) NOT NULL,
			end_object_key varchar(255) NOT NULL,
			error_msg text NULL DEFAULT NULL,
			execute_count int NOT NULL DEFAULT 0,
			object_count int NOT NULL DEFAULT 0,
			PRIMARY KEY (task_id),
			KEY idx_state (state),
			KEY idx_cluster_id (cluster_id)
		  )`).Error
		if err != nil {
			log.Error("failed to create table audit_log_tasks", zap.Error(err))
			return err
		}
		return nil
	},
)
