import type { Kysely } from "kysely";

const FEATURES = [
  { name: "Members", slug: "members" },
  { name: "Bookings", slug: "bookings" },
  { name: "Membership Clubs", slug: "membership-clubs" },
  { name: "Account Types", slug: "account-types" },
  { name: "Charge Centers", slug: "charge-centers" },
  { name: "User Management", slug: "user-management" },
  { name: "Role Management", slug: "role-management" },
  { name: "Account Status", slug: "account-status" },
  { name: "Notifications", slug: "notifications" },
];

export async function up(db: Kysely<any>): Promise<void> {
  const insertValues = FEATURES.map((f) => ({
    name: f.name,
    slug: f.slug,
    is_active: true,
  }));

  // Create known backend features for the admin console role UI
  await db
    .insertInto("console_features")
    .values(insertValues)
    .onConflict((oc) => oc.column("slug").doNothing())
    .execute();
}

export async function down(db: Kysely<any>): Promise<void> {
  const slugs = FEATURES.map((f) => f.slug);
  await db
    .deleteFrom("console_features")
    .where("slug", "in", slugs)
    .execute();
}
