Class: Fx::Adapters::Sqlserver

Inherits:
Object
  • Object
show all
Defined in:
lib/fx/adapters/sqlserver.rb,
lib/fx/adapters/sqlserver/triggers.rb,
lib/fx/adapters/sqlserver/functions.rb,
lib/fx/adapters/sqlserver/connection.rb

Overview

Sqlserver adapter class to be used with F(x)

Defined Under Namespace

Classes: Connection, Functions, Triggers

Instance Method Summary collapse

Constructor Details

#initialize(connectable = ActiveRecord::Base) ⇒ Sqlserver

Creates an instance of the F(x) Sqlserver adapter.

To use this adapter is required to configure via Fx.configure, explicitly setting it accordingly with the example below.

Examples:

Fx.configure do |config|
  config.adapter = Fx::Adapters::Sqlserver.new
end

Parameters:

  • connectable (#connection) (defaults to: ActiveRecord::Base)

    An object that returns the connection for F(x) to use. Defaults to ‘ActiveRecord::Base`.



26
27
28
# File 'lib/fx/adapters/sqlserver.rb', line 26

def initialize(connectable = ActiveRecord::Base)
  @connectable = connectable
end

Instance Method Details

#create_function(sql_definition) ⇒ void

This method returns an undefined value.

Creates a function in the database.

This is typically called in a migration via Statements::Function#create_function.

Parameters:

  • sql_definition

    The SQL schema for the function.



58
59
60
# File 'lib/fx/adapters/sqlserver.rb', line 58

def create_function(sql_definition)
  execute sql_definition
end

#create_trigger(sql_definition) ⇒ void

This method returns an undefined value.

Creates a trigger in the database.

This is typically called in a migration via Statements::Trigger#create_trigger.

Parameters:

  • sql_definition

    The SQL schema for the trigger.



70
71
72
# File 'lib/fx/adapters/sqlserver.rb', line 70

def create_trigger(sql_definition)
  execute sql_definition
end

#drop_function(name, *_opts, on: '', **_options) ⇒ void

This method returns an undefined value.

Drops the function from the database

This is typically called in a migration via Statements::Function#drop_function.

Parameters:

  • name

    The name of the function to drop



114
115
116
117
118
119
# File 'lib/fx/adapters/sqlserver.rb', line 114

def drop_function(name, *_opts, on: '', **_options)
  execute <<~SQL
    DROP FUNCTION IF EXISTS #{name};
    DROP PROCEDURE IF EXISTS #{name};
  SQL
end

#drop_trigger(name, *_opts, on: '', **_options) ⇒ void

This method returns an undefined value.

Drops the trigger from the database

This is typically called in a migration via Statements::Trigger#drop_trigger.

Parameters:

  • name

    The name of the trigger to drop

  • on (defaults to: '')

    The associated table for the trigger to drop



130
131
132
133
134
# File 'lib/fx/adapters/sqlserver.rb', line 130

def drop_trigger(name, *_opts, on: '', **_options)
  execute <<~SQL
    DROP TRIGGER IF EXISTS #{name};
  SQL
end

#functionsArray<Fx::Function>

Returns an array of functions in the database.

This collection of functions is used by the [Fx::SchemaDumper] to populate the ‘schema.rb` file.

Returns:

  • (Array<Fx::Function>)


36
37
38
# File 'lib/fx/adapters/sqlserver.rb', line 36

def functions
  Functions.all(connection)
end

#triggersArray<Fx::Trigger>

Returns an array of triggers in the database.

This collection of triggers is used by the [Fx::SchemaDumper] to populate the ‘schema.rb` file.

Returns:

  • (Array<Fx::Trigger>)


46
47
48
# File 'lib/fx/adapters/sqlserver.rb', line 46

def triggers
  Triggers.all(connection)
end

#update_function(name, sql_definition) ⇒ void

This method returns an undefined value.

Updates a function in the database.

This is typically called in a migration via Statements::Function#update_function.

Parameters:

  • name

    The name of the function.

  • sql_definition

    The SQL schema for the function.



83
84
85
86
# File 'lib/fx/adapters/sqlserver.rb', line 83

def update_function(name, sql_definition)
  drop_function(name)
  create_function(sql_definition)
end

#update_trigger(name, on:, sql_definition:) ⇒ void

This method returns an undefined value.

Updates a trigger in the database.

The existing trigger is dropped and recreated using the supplied ‘on` and `version` parameter.

This is typically called in a migration via Statements::Function#update_trigger.

Parameters:

  • name

    The name of the trigger.

  • on

    The associated table for the trigger to drop

  • sql_definition

    The SQL schema for the function.



101
102
103
104
# File 'lib/fx/adapters/sqlserver.rb', line 101

def update_trigger(name, on:, sql_definition:)
  drop_trigger(name, on: on)
  create_trigger(sql_definition)
end