Sha256: 44ec298c29ec8186b24afe611227a444461d0637658c75117e7d41f6df2932a3

Contents?: true

Size: 1.45 KB

Versions: 8

Compression:

Stored size: 1.45 KB

Contents

module TemporalTables
	module ConnectionAdapters
		module AbstractMysqlAdapter
			def drop_temporal_triggers(table_name)
				execute "drop trigger #{table_name}_ai"
				execute "drop trigger #{table_name}_au"
				execute "drop trigger #{table_name}_ad"
			end

			def create_temporal_triggers(table_name)
				column_names = columns(table_name).map(&:name)

				execute %{
					create trigger #{table_name}_ai after insert on #{table_name}
					for each row
					begin
						set @current_time = utc_timestamp(6);

						insert into #{temporal_name(table_name)} (#{column_names.join(', ')}, eff_from)
						values (#{column_names.collect {|c| "new.#{c}"}.join(', ')}, @current_time);

					end
				}

				execute %{
					create trigger #{table_name}_au after update on #{table_name}
					for each row
					begin
						set @current_time = utc_timestamp(6);

						update #{temporal_name(table_name)} set eff_to = @current_time
						where id = new.id
						and eff_to = '9999-12-31';

						insert into #{temporal_name(table_name)} (#{column_names.join(', ')}, eff_from)
						values (#{column_names.collect {|c| "new.#{c}"}.join(', ')}, @current_time);

					end
				}

				execute %{
					create trigger #{table_name}_ad after delete on #{table_name}
					for each row
					begin
						set @current_time = utc_timestamp(6);

						update #{temporal_name(table_name)} set eff_to = @current_time
						where id = old.id
						and eff_to = '9999-12-31';

					end
				}
			end
		end
	end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
temporal_tables-0.6.10 lib/temporal_tables/connection_adapters/mysql_adapter.rb
temporal_tables-0.6.9 lib/temporal_tables/connection_adapters/mysql_adapter.rb
temporal_tables-0.6.7 lib/temporal_tables/connection_adapters/mysql_adapter.rb
temporal_tables-0.6.6 lib/temporal_tables/connection_adapters/mysql_adapter.rb
temporal_tables-0.6.4 lib/temporal_tables/connection_adapters/mysql_adapter.rb
temporal_tables-0.6.3 lib/temporal_tables/connection_adapters/mysql_adapter.rb
temporal_tables-0.6.2 lib/temporal_tables/connection_adapters/mysql_adapter.rb
temporal_tables-0.6.1 lib/temporal_tables/connection_adapters/mysql_adapter.rb