class CreateApplicationTokens < ActiveRecord::Migration[8.1]
  def change
    create_table :application_tokens, id: { type: :bigint, unsigned: true },
                                      charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci" do |t|
      t.string :name, limit: 128, null: false
      # The owner class comes from the host (WarpEngine.config.application_token_owner_class),
      # so no FK.
      t.string :owner_type, limit: 128, null: false
      t.bigint :owner_id, null: false, unsigned: true
      t.string :token_digest, limit: 64, null: false
      t.string :token_prefix, limit: 12, null: false
      t.json :scopes
      t.datetime :expires_at, precision: 3
      t.datetime :last_used_at, precision: 3
      t.datetime :deleted_at, precision: 3
      t.timestamps precision: 3, null: true
      t.index :token_digest, name: "idx_application_tokens_token_digest", unique: true
      t.index [ :owner_type, :owner_id ], name: "idx_application_tokens_owner"
      t.index :deleted_at, name: "idx_application_tokens_deleted_at"
    end
  end
end
