Module: Sequel

Extended by:
SQL::Builders, SQL::OperatorBuilders, ThreadLocalTimezones
Includes:
SQL::Constants
Defined in:
lib/sequel/extensions/pg_range.rb,
lib/sequel/sql.rb,
lib/sequel/model.rb,
lib/sequel/version.rb,
lib/sequel/timezones.rb,
lib/sequel/model/base.rb,
lib/sequel/model/errors.rb,
lib/sequel/plugins/enum.rb,
lib/sequel/plugins/list.rb,
lib/sequel/plugins/tree.rb,
lib/sequel/plugins/uuid.rb,
lib/sequel/model/plugins.rb,
lib/sequel/plugins/dirty.rb,
lib/sequel/plugins/touch.rb,
lib/sequel/plugins/finder.rb,
lib/sequel/plugins/pg_row.rb,
lib/sequel/plugins/caching.rb,
lib/sequel/extensions/query.rb,
lib/sequel/model/exceptions.rb,
lib/sequel/plugins/sharding.rb,
lib/sequel/extensions/pg_row.rb,
lib/sequel/extensions/to_dot.rb,
lib/sequel/model/inflections.rb,
lib/sequel/plugins/rcte_tree.rb,
lib/sequel/extensions/pg_json.rb,
lib/sequel/model/associations.rb,
lib/sequel/plugins/eager_each.rb,
lib/sequel/plugins/inspect_pk.rb,
lib/sequel/plugins/subclasses.rb,
lib/sequel/plugins/timestamps.rb,
lib/sequel/plugins/composition.rb,
lib/sequel/model/dataset_module.rb,
lib/sequel/plugins/active_model.rb,
lib/sequel/plugins/split_values.rb,
lib/sequel/plugins/sql_comments.rb,
lib/sequel/plugins/static_cache.rb,
lib/sequel/plugins/table_select.rb,
lib/sequel/extensions/pg_row_ops.rb,
lib/sequel/extensions/provenance.rb,
lib/sequel/extensions/string_agg.rb,
lib/sequel/plugins/column_select.rb,
lib/sequel/plugins/serialization.rb,
lib/sequel/extensions/pg_inet_ops.rb,
lib/sequel/extensions/pg_interval.rb,
lib/sequel/extensions/pg_json_ops.rb,
lib/sequel/plugins/csv_serializer.rb,
lib/sequel/plugins/error_splitter.rb,
lib/sequel/plugins/force_encoding.rb,
lib/sequel/plugins/instance_hooks.rb,
lib/sequel/plugins/throw_failures.rb,
lib/sequel/plugins/update_refresh.rb,
lib/sequel/plugins/xml_serializer.rb,
lib/sequel/extensions/pg_range_ops.rb,
lib/sequel/extensions/pretty_table.rb,
lib/sequel/extensions/server_block.rb,
lib/sequel/extensions/sql_comments.rb,
lib/sequel/extensions/stdio_logger.rb,
lib/sequel/plugins/association_pks.rb,
lib/sequel/plugins/boolean_readers.rb,
lib/sequel/plugins/boolean_subsets.rb,
lib/sequel/plugins/columns_updated.rb,
lib/sequel/plugins/defaults_setter.rb,
lib/sequel/plugins/insert_conflict.rb,
lib/sequel/plugins/json_serializer.rb,
lib/sequel/plugins/lazy_attributes.rb,
lib/sequel/plugins/string_stripper.rb,
lib/sequel/extensions/pg_multirange.rb,
lib/sequel/extensions/query_blocker.rb,
lib/sequel/extensions/schema_dumper.rb,
lib/sequel/extensions/select_remove.rb,
lib/sequel/plugins/accessed_columns.rb,
lib/sequel/plugins/after_initialize.rb,
lib/sequel/plugins/auto_validations.rb,
lib/sequel/plugins/column_conflicts.rb,
lib/sequel/plugins/forbid_lazy_load.rb,
lib/sequel/plugins/instance_filters.rb,
lib/sequel/plugins/inverted_subsets.rb,
lib/sequel/plugins/paged_operations.rb,
lib/sequel/plugins/typecast_on_load.rb,
lib/sequel/plugins/unlimited_update.rb,
lib/sequel/plugins/update_or_create.rb,
lib/sequel/extensions/pg_loose_count.rb,
lib/sequel/extensions/pg_timestamptz.rb,
lib/sequel/extensions/schema_caching.rb,
lib/sequel/extensions/server_logging.rb,
lib/sequel/model/default_inflections.rb,
lib/sequel/plugins/async_thread_pool.rb,
lib/sequel/plugins/before_after_save.rb,
lib/sequel/plugins/column_encryption.rb,
lib/sequel/plugins/eager_graph_eager.rb,
lib/sequel/plugins/input_transformer.rb,
lib/sequel/plugins/many_through_many.rb,
lib/sequel/plugins/nested_attributes.rb,
lib/sequel/plugins/subset_conditions.rb,
lib/sequel/extensions/set_literalizer.rb,
lib/sequel/extensions/split_array_nil.rb,
lib/sequel/extensions/sqlite_json_ops.rb,
lib/sequel/extensions/synchronize_sql.rb,
lib/sequel/plugins/blacklist_security.rb,
lib/sequel/plugins/def_dataset_method.rb,
lib/sequel/plugins/hook_class_methods.rb,
lib/sequel/plugins/optimistic_locking.rb,
lib/sequel/plugins/static_cache_cache.rb,
lib/sequel/plugins/update_primary_key.rb,
lib/sequel/plugins/validation_helpers.rb,
lib/sequel/plugins/whitelist_security.rb,
lib/sequel/extensions/round_timestamps.rb,
lib/sequel/plugins/association_proxies.rb,
lib/sequel/plugins/prepared_statements.rb,
lib/sequel/plugins/skip_create_refresh.rb,
lib/sequel/plugins/skip_saving_columns.rb,
lib/sequel/plugins/subset_static_cache.rb,
lib/sequel/plugins/unused_associations.rb,
lib/sequel/plugins/validate_associated.rb,
lib/sequel/plugins/validation_contexts.rb,
lib/sequel/extensions/pg_schema_caching.rb,
lib/sequel/plugins/dataset_associations.rb,
lib/sequel/plugins/require_valid_schema.rb,
lib/sequel/plugins/singular_table_names.rb,
lib/sequel/extensions/sql_log_normalizer.rb,
lib/sequel/plugins/delay_add_association.rb,
lib/sequel/plugins/pg_array_associations.rb,
lib/sequel/plugins/constraint_validations.rb,
lib/sequel/plugins/modification_detection.rb,
lib/sequel/plugins/pg_auto_validate_enums.rb,
lib/sequel/plugins/tactical_eager_loading.rb,
lib/sequel/plugins/class_table_inheritance.rb,
lib/sequel/plugins/insert_returning_select.rb,
lib/sequel/plugins/optimistic_locking_base.rb,
lib/sequel/plugins/association_dependencies.rb,
lib/sequel/plugins/concurrent_eager_loading.rb,
lib/sequel/plugins/empty_failure_backtraces.rb,
lib/sequel/plugins/mssql_optimistic_locking.rb,
lib/sequel/plugins/pg_eager_any_typed_array.rb,
lib/sequel/plugins/prepared_statements_safe.rb,
lib/sequel/plugins/single_table_inheritance.rb,
lib/sequel/plugins/validation_class_methods.rb,
lib/sequel/extensions/thread_local_timezones.rb,
lib/sequel/plugins/auto_restrict_eager_graph.rb,
lib/sequel/plugins/instance_specific_default.rb,
lib/sequel/extensions/pg_static_cache_updater.rb,
lib/sequel/plugins/pg_xmin_optimistic_locking.rb,
lib/sequel/extensions/sequel_4_dataset_methods.rb,
lib/sequel/extensions/virtual_row_method_block.rb,
lib/sequel/plugins/association_multi_add_remove.rb,
lib/sequel/plugins/association_lazy_eager_option.rb,
lib/sequel/plugins/pg_auto_constraint_validations.rb,
lib/sequel/plugins/primary_key_lookup_check_values.rb,
lib/sequel/extensions/temporarily_release_connection.rb,
lib/sequel/extensions/transaction_connection_validator.rb,
lib/sequel/plugins/serialization_modification_detection.rb,
lib/sequel/plugins/validation_helpers_generic_type_messages.rb,
lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb
more...

Overview

The round_timestamps extension will automatically round timestamp values to the database’s supported level of precision before literalizing them.

For example, if the database supports millisecond precision, and you give it a Time value with microsecond precision, it will round it appropriately:

Time.at(1405341161.917999982833862)
# default: 2014-07-14 14:32:41.917999
# with extension: 2014-07-14 14:32:41.918000

The round_timestamps extension correctly deals with databases that support millisecond or second precision. In addition to handling Time values, it also handles DateTime values and Sequel::SQLTime values (for the TIME type).

To round timestamps for a single dataset:

ds = ds.extension(:round_timestamps)

To round timestamps for all datasets on a single database:

DB.extension(:round_timestamps)

Related module: Sequel::Dataset::RoundTimestamps

Defined Under Namespace

Modules: CoreRefinements, DatabaseQuery, DatasetPrinter, DatasetQuery, Inflections, Plugins, Postgres, QueryBlocker, S, SQL, SQLComments, SQLLogNormalizer, SQLite, Schema, SchemaCaching, SchemaDumper, SelectRemove, Sequel4DatasetMethods, SequelMethods, ServerBlock, ServerLogging, SymbolAref, SymbolAs, ThreadLocalTimezones, ThreadedServerBlock, TransactionConnectionValidator, UnthreadedServerBlock Classes: BasicObject, Database, Dataset, HookFailed, LiteralString, MassAssignmentRestriction, Model, SQLTime, StdioLogger, ToDot, UnableToReacquireConnectionError, ValidationFailed

Constant Summary collapse

VIRTUAL_ROW =
new
MAJOR =

The major version of Sequel. Only bumped for major changes.

5
MINOR =

The minor version of Sequel. Bumped for every non-patch level release, generally around once a month.

91
TINY =

The tiny version of Sequel. Usually 0, only bumped for bugfix releases that fix regressions from previous versions.

0
VERSION =

The version of Sequel you are using, as a string (e.g. “2.11.0”)

[MAJOR, MINOR, TINY].join('.').freeze
VERSION_NUMBER =

The version of Sequel you are using, as a number (2.11.0 -> 20110)

MAJOR*10000 + MINOR*10 + TINY
Timezones =

Backwards compatible alias

SequelMethods
DEFAULT_INFLECTIONS_PROC =

Proc that is instance_execed to create the default inflections for both the model inflector and the inflector extension.

proc do
  plural(/$/, 's')
  plural(/s$/i, 's')
  plural(/(alias|(?:stat|octop|vir|b)us)$/i, '\1es')
  plural(/(buffal|tomat)o$/i, '\1oes')
  plural(/([ti])um$/i, '\1a')
  plural(/sis$/i, 'ses')
  plural(/(?:([^f])fe|([lr])f)$/i, '\1\2ves')
  plural(/(hive)$/i, '\1s')
  plural(/([^aeiouy]|qu)y$/i, '\1ies')
  plural(/(x|ch|ss|sh)$/i, '\1es')
  plural(/(matr|vert|ind)ix|ex$/i, '\1ices')
  plural(/([m|l])ouse$/i, '\1ice')

  singular(/s$/i, '')
  singular(/([ti])a$/i, '\1um')
  singular(/(analy|ba|cri|diagno|parenthe|progno|synop|the)ses$/i, '\1sis')
  singular(/([^f])ves$/i, '\1fe')
  singular(/([h|t]ive)s$/i, '\1')
  singular(/([lr])ves$/i, '\1f')
  singular(/([^aeiouy]|qu)ies$/i, '\1y')
  singular(/(m)ovies$/i, '\1ovie')
  singular(/(x|ch|ss|sh)es$/i, '\1')
  singular(/([m|l])ice$/i, '\1ouse')
  singular(/buses$/i, 'bus')
  singular(/oes$/i, 'o')
  singular(/shoes$/i, 'shoe')
  singular(/(alias|(?:stat|octop|vir|b)us)es$/i, '\1')
  singular(/(vert|ind)ices$/i, '\1ex')
  singular(/matrices$/i, 'matrix')

  irregular('person', 'people')
  irregular('man', 'men')
  irregular('child', 'children')
  irregular('sex', 'sexes')
  irregular('move', 'moves')
  irregular('quiz', 'quizzes')
  irregular('testis', 'testes')

  uncountable(%w(equipment information rice money species series fish sheep news))
end

Constants included from SQL::Constants

SQL::Constants::CURRENT_DATE, SQL::Constants::CURRENT_TIME, SQL::Constants::CURRENT_TIMESTAMP, SQL::Constants::DEFAULT, SQL::Constants::NOTNULL, SQL::Constants::NULL, SQL::Constants::SQLFALSE, SQL::Constants::SQLTRUE

Class Method Summary collapse

Methods included from SQL::Builders

as, asc, blob, case, cast, cast_numeric, cast_string, char_length, deep_qualify, delay, desc, expr, extract, function, identifier, ilike, join, like, lit, negate, or, pg_inet_op, pg_json, pg_json_op, pg_json_wrap, pg_jsonb, pg_jsonb_op, pg_jsonb_wrap, pg_multirange, pg_range, pg_range_op, pg_row, pg_row_op, qualify, sqlite_json_op, sqlite_jsonb_op, string_agg, subscript, trim, value_list

Methods included from SQL::OperatorBuilders

**, ~

Class Method Details

.inflections {|Inflections| ... } ⇒ Object

Yield the Inflections module if a block is given, and return the Inflections module.

Yields:

[View source]

6
7
8
9
# File 'lib/sequel/model/inflections.rb', line 6

def self.inflections
  yield Inflections if defined?(yield)
  Inflections
end

.versionObject

The version of Sequel you are using, as a string (e.g. “2.11.0”)

[View source]

22
23
24
# File 'lib/sequel/version.rb', line 22

def self.version
  VERSION
end