import { MigrationInterface, QueryRunner, Table, TableIndex } from "typeorm";

export class CreatePageViews1748600000000 implements MigrationInterface {
  name = "CreatePageViews1748600000000";

  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.createTable(
      new Table({
        name: "page_views",
        columns: [
          { name: "id", type: "varchar", length: "36", isPrimary: true },
          { name: "path", type: "varchar", length: "500" },
          { name: "referrer", type: "varchar", length: "500", isNullable: true },
          { name: "visitor_id", type: "varchar", length: "64", isNullable: true },
          { name: "device", type: "varchar", length: "20", default: "'desktop'" },
          { name: "created_at", type: "timestamp", default: "CURRENT_TIMESTAMP" },
        ],
      }),
      true,
    );

    await queryRunner.createIndex("page_views", new TableIndex({ name: "IDX_page_views_path", columnNames: ["path"] }));
    await queryRunner.createIndex("page_views", new TableIndex({ name: "IDX_page_views_visitor_id", columnNames: ["visitor_id"] }));
    await queryRunner.createIndex("page_views", new TableIndex({ name: "IDX_page_views_created_at", columnNames: ["created_at"] }));
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.dropTable("page_views");
  }
}
