package migrations

import (
	"context"
	"fmt"

	"fr.latosa-escrima/core/models"
	"github.com/uptrace/bun"
)

func init() {
	Migrations.MustRegister(func(ctx context.Context, db *bun.DB) error {
		fmt.Print(" [up migration] ")
		_, err := db.NewAddColumn().
			Model((*models.Event)(nil)).
			ColumnExpr("full_day BOOLEAN NOT NULL DEFAULT FALSE").
			Exec(ctx)
		if err != nil {
			return err
		}

		// Add "is_visible" column
		_, err = db.NewAddColumn().
			Model((*models.Event)(nil)).
			ColumnExpr("is_visible BOOLEAN NOT NULL DEFAULT TRUE").
			Exec(ctx)
		if err != nil {
			return err
		}

		// Add "rrule" column
		_, err = db.NewAddColumn().
			Model((*models.Event)(nil)).
			ColumnExpr("rrule TEXT").
			Exec(ctx)
		return err
	}, func(ctx context.Context, db *bun.DB) error {
		fmt.Print(" [down migration] ")
		_, err := db.NewDropColumn().
			Model((*models.Event)(nil)).
			Column("full_day").
			Exec(ctx)
		if err != nil {
			return err
		}

		_, err = db.NewDropColumn().
			Model((*models.Event)(nil)).
			Column("is_visible").
			Exec(ctx)
		if err != nil {
			return err
		}

		_, err = db.NewDropColumn().
			Model((*models.Event)(nil)).
			Column("rrule").
			Exec(ctx)
		return err
	})
}
