1 # frozen_string_literal: true
 
   3 class CreateDoorkeeperTables < ActiveRecord::Migration[6.0]
 
   5     create_table :oauth_applications do |t|
 
   6       t.references :owner, :null => false, :type => :bigint, :polymorphic => true
 
   7       t.string :name, :null => false
 
   8       t.string :uid, :null => false
 
   9       t.string :secret, :null => false
 
  10       t.text :redirect_uri, :null => false
 
  11       t.string :scopes, :null => false, :default => ""
 
  12       t.boolean :confidential, :null => false, :default => true
 
  13       t.timestamps :null => false
 
  16     add_index :oauth_applications, :uid, :unique => true
 
  17     add_foreign_key :oauth_applications, :users, :column => :owner_id, :validate => false
 
  19     create_table :oauth_access_grants do |t|
 
  20       t.references :resource_owner, :null => false, :type => :bigint
 
  21       t.references :application, :null => false, :type => :bigint
 
  22       t.string :token, :null => false
 
  23       t.integer :expires_in, :null => false
 
  24       t.text :redirect_uri, :null => false
 
  25       t.datetime :created_at, :null => false
 
  26       t.datetime :revoked_at
 
  27       t.string :scopes, :null => false, :default => ""
 
  28       t.column :code_challenge, :string, :null => true
 
  29       t.column :code_challenge_method, :string, :null => true
 
  32     add_index :oauth_access_grants, :token, :unique => true
 
  33     add_foreign_key :oauth_access_grants, :users, :column => :resource_owner_id, :validate => false
 
  34     add_foreign_key :oauth_access_grants, :oauth_applications, :column => :application_id, :validate => false
 
  36     create_table :oauth_access_tokens do |t|
 
  37       t.references :resource_owner, :index => true, :type => :bigint
 
  38       t.references :application, :null => false, :type => :bigint
 
  39       t.string :token, :null => false
 
  40       t.string :refresh_token
 
  42       t.datetime :revoked_at
 
  43       t.datetime :created_at, :null => false
 
  45       t.string :previous_refresh_token, :null => false, :default => ""
 
  48     add_index :oauth_access_tokens, :token, :unique => true
 
  49     add_index :oauth_access_tokens, :refresh_token, :unique => true
 
  50     add_foreign_key :oauth_access_tokens, :users, :column => :resource_owner_id, :validate => false
 
  51     add_foreign_key :oauth_access_tokens, :oauth_applications, :column => :application_id, :validate => false