Skip to content

lithictech/sequel-tstzrange-fields

Repository files navigation

Gem Version

sequel-tstzrange-fields

Easily work with Postgres tstzrange fields by setting the entire range, the start and end separately, using ranges, strings, {:begin, :end} hashes, objects that respond to #begin and #end, etc.

Range fields (tstzrange_fields plugin)

Defining a model class with a timestamptz range:

class ACME::Lease < Sequel::Model(:leases)
    plugin :tstzrange_fields, :active_during
end

And in the schema:

create_table(:leases) do
    primary_key :id
    tstzrange :active_during
end

You can use it as follows:

lease = ACME::Lease.new
lease.active_during_begin = Time.now
lease.active_during_end = 1.year.from_now
lease.active_during = 1.year.ago..1.year.from_now
lease.active_during_end = nil # Unbounded end set
lease.active_during = nil # Empty set

Multirange fields (tstzmultirange_fields plugin)

Defining a model class with a timestamptz multirange:

class Reminder < Sequel::Model(:reminders)
    plugin :tstzmultirange_fields, :active_during
end

And in the schema:

create_table(:reminders) do
    primary_key :id
    tstzmultirange :active_during
end

You can use it as follows:

r = Reminder.new
reminder.active_during = [{begin: Time.now, end: 1.year.from_now}]
reminder.active_during = [1.year.ago..1.year.from_now]
reminder.active_during = [Time.now..]
reminder.active_during = []

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages