use sea_orm_migration::prelude::*;

use crate::m20240524_000002_create_relations_likes_shares::Announces;

#[derive(DeriveMigrationName)]
pub struct Migration;

#[async_trait::async_trait]
impl MigrationTrait for Migration {
	async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {

		#[cfg(feature = "not-simplified")]
		{
			use crate::m20240524_000002_create_relations_likes_shares::Likes;
			manager
				.alter_table(
					Table::alter()
						.table(Likes::Table)
						.drop_column(Likes::Activity)
						.to_owned()
				)
				.await?;
		}

		manager
			.create_index(
				Index::create()
					.name("index-announces-actor-object")
					.table(Announces::Table)
					.col(Announces::Actor)
					.col(Announces::Object)
					.to_owned()
			).await?;

		Ok(())
	}

	async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {

		#[cfg(feature = "not-simplified")]
		{
			manager
				.alter_table(
					Table::alter()
						.table(Likes::Table)
						.add_column(ColumnDef::new(Likes::Activity).big_integer().not_null())
						.to_owned()
				)
				.await?;
		}

		manager
			.drop_index(Index::drop().name("index-announces-actor-object").table(Announces::Table).to_owned())
			.await?;

		Ok(())
	}
}