mirror of
https://github.com/System-End/theseus.git
synced 2026-04-19 19:55:10 +00:00
35 lines
848 B
Ruby
35 lines
848 B
Ruby
# == Schema Information
|
|
#
|
|
# Table name: usps_mailer_ids
|
|
#
|
|
# id :bigint not null, primary key
|
|
# crid :string
|
|
# mid :string
|
|
# name :string
|
|
# rollover_count :integer
|
|
# sequence_number :bigint
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
#
|
|
class USPS::MailerId < ApplicationRecord
|
|
def display_name = "#{name} (#{crid}/#{mid})"
|
|
|
|
def sn_length = 15 - mid.length
|
|
|
|
def max_sn = (10 ** sn_length) - 1
|
|
|
|
def next_sn_and_rollover
|
|
transaction do
|
|
lock!
|
|
self.sequence_number ||= 0
|
|
self.rollover_count ||= 0
|
|
self.sequence_number += 1
|
|
if self.sequence_number > max_sn
|
|
self.sequence_number = 1
|
|
self.rollover_count += 1
|
|
end
|
|
save!
|
|
end
|
|
[sequence_number, rollover_count]
|
|
end
|
|
end
|