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
54 55 56 57 58 59 60 |
# File 'lib/gemstash/db/version.rb', line 54 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
48 49 50 51 52 |
# File 'lib/gemstash/db/version.rb', line 48 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
35 36 37 38 |
# File 'lib/gemstash/db/version.rb', line 35 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
62 63 64 65 66 67 68 69 70 71 |
# File 'lib/gemstash/db/version.rb', line 62 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
40 41 42 43 44 45 46 |
# File 'lib/gemstash/db/version.rb', line 40 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
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/gemstash/db/version.rb', line 24 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
11 12 13 |
# File 'lib/gemstash/db/version.rb', line 11 def deindex update(indexed: false) end |
#reindex ⇒ Object
15 16 17 |
# File 'lib/gemstash/db/version.rb', line 15 def reindex update(indexed: true) end |
#to_spec ⇒ Object
This converts to the format used by /private/specs.4.8.gz
20 21 22 |
# File 'lib/gemstash/db/version.rb', line 20 def to_spec [rubygem.name, Gem::Version.new(number), platform] end |