Class: PgSqlTriggers::Generators::TriggerMigrationGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
Rails::Generators::Migration
Defined in:
lib/generators/pg_sql_triggers/trigger_migration_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.next_migration_number(_dirname) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/generators/pg_sql_triggers/trigger_migration_generator.rb', line 16

def self.next_migration_number(_dirname)
  # Get the highest migration number from existing migrations
  existing = if Rails.root.join("db/triggers").exist?
               Rails.root.glob("db/triggers/*.rb")
                    .map { |f| File.basename(f, ".rb").split("_").first.to_i }
                    .reject(&:zero?)
                    .max || 0
             else
               0
             end

  # Generate next timestamp-based version
  # Format: YYYYMMDDHHMMSS
  now = Time.now.utc
  base = now.strftime("%Y%m%d%H%M%S").to_i

  # If we have existing migrations, ensure we're incrementing
  base = existing + 1 if existing.positive? && base <= existing

  base
end

Instance Method Details

#create_trigger_migrationObject



38
39
40
41
42
43
# File 'lib/generators/pg_sql_triggers/trigger_migration_generator.rb', line 38

def create_trigger_migration
  migration_template(
    "trigger_migration.rb.erb",
    "db/triggers/#{file_name}.rb"
  )
end