- Software, Release, ReleaseAsset, ExternalLink, PlatformLink, Image, SoftwareImage, Download now live in the engine under WarpEngine::, on top of WarpEngine::ApplicationRecord; table names unchanged (empty prefix) - each model runs an ActiveSupport load hook (:warp_engine_<model>) as a host extension point - WarpEngine::Image reads its upload path from WarpEngine.config - host references fully qualified (services, serializers, admin, specs); admin registrations renamed with as: so /admin URLs and route helpers are byte-identical; factories pinned to the namespaced classes - Member#image now class_name: "WarpEngine::Image" Verified: full suite green, /api/software and /api/builds byte-identical to the phase-0 baselines, admin routes unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
27 lines
706 B
Ruby
27 lines
706 B
Ruby
module WarpEngine
|
|
class ReleaseAsset < ApplicationRecord
|
|
KINDS = %w[cartridge source html docs
|
|
win_x86 win_x64 linux_x86 linux_x64
|
|
mac_x64 mac_arm64 mac_universal].freeze
|
|
|
|
belongs_to :release
|
|
|
|
enum :kind, KINDS.index_by(&:itself)
|
|
|
|
validates :path, presence: true
|
|
validates :kind, uniqueness: { scope: :release_id }
|
|
|
|
default_scope { where(deleted_at: nil) }
|
|
|
|
def self.ransackable_attributes(auth_object = nil)
|
|
%w[created_at deleted_at id kind path release_id updated_at]
|
|
end
|
|
|
|
def self.ransackable_associations(auth_object = nil)
|
|
%w[release]
|
|
end
|
|
|
|
ActiveSupport.run_load_hooks(:warp_engine_release_asset, self)
|
|
end
|
|
end
|