Class: Gemstash::DB::Version
- Inherits:
-
Sequel::Model
- Object
- Sequel::Model
- Gemstash::DB::Version
- Defined in:
- lib/gemstash/db/version.rb
Overview
Sequel model for versions table.
Class Method Summary collapse
- .find_by_full_name(full_name) ⇒ Object
- .find_by_spec(gem_id, spec) ⇒ Object
- .for_spec_collection(prerelease: false, latest: false) ⇒ Object
- .insert_by_spec(gem_id, spec) ⇒ Object
- .select_latest(versions) ⇒ Object
- .slug(params) ⇒ Object
Instance Method Summary collapse
- #deindex ⇒ Object
- #reindex ⇒ Object
-
#to_spec ⇒ Object
This converts to the format used by /private/specs.4.8.gz.
Class Method Details
.find_by_full_name(full_name) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/gemstash/db/version.rb', line 52 def self.find_by_full_name(full_name) result = self[full_name: full_name] return result if result # Try again with the default platform, in case it is implied self[full_name: "#{full_name}-ruby"] end |
.find_by_spec(gem_id, spec) ⇒ Object
46 47 48 49 50 |
# File 'lib/gemstash/db/version.rb', line 46 def self.find_by_spec(gem_id, spec) self[rubygem_id: gem_id, number: spec.version.to_s, platform: spec.platform.to_s] end |
.for_spec_collection(prerelease: false, latest: false) ⇒ Object
33 34 35 36 |
# File 'lib/gemstash/db/version.rb', line 33 def self.for_spec_collection(prerelease: false, latest: false) versions = where(indexed: true, prerelease: prerelease).association_join(:rubygem) latest ? select_latest(versions) : versions end |
.insert_by_spec(gem_id, spec) ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/gemstash/db/version.rb', line 59 def self.insert_by_spec(gem_id, spec) gem_name = Gemstash::DB::Rubygem[gem_id].name new(rubygem_id: gem_id, number: spec.version.to_s, platform: spec.platform.to_s, full_name: "#{gem_name}-#{spec.version}-#{spec.platform}", storage_id: spec.full_name, indexed: true, prerelease: spec.version.prerelease?).tap(&:save).id end |
.select_latest(versions) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/gemstash/db/version.rb', line 38 def self.select_latest(versions) versions. all. group_by {|version| [version.rubygem_id, version.platform] }. values. map {|gem_versions| gem_versions.max_by {|version| Gem::Version.new(version.number) } } end |
.slug(params) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/gemstash/db/version.rb', line 22 def self.slug(params) version = params[:version] platform = params[:platform] if platform.to_s.empty? version else "#{version}-#{platform}" end end |
Instance Method Details
#deindex ⇒ Object
9 10 11 |
# File 'lib/gemstash/db/version.rb', line 9 def deindex update(indexed: false) end |
#reindex ⇒ Object
13 14 15 |
# File 'lib/gemstash/db/version.rb', line 13 def reindex update(indexed: true) end |
#to_spec ⇒ Object
This converts to the format used by /private/specs.4.8.gz
18 19 20 |
# File 'lib/gemstash/db/version.rb', line 18 def to_spec [rubygem.name, Gem::Version.new(number), platform] end |