diff --git a/app/blueprints/api/v1/party_blueprint.rb b/app/blueprints/api/v1/party_blueprint.rb index 63789c1..baac168 100644 --- a/app/blueprints/api/v1/party_blueprint.rb +++ b/app/blueprints/api/v1/party_blueprint.rb @@ -21,6 +21,17 @@ module Api view: :nested end + view :job_skills do + field :job_skills do |job| + { + '0' => !job.skill0.nil? ? JobSkillBlueprint.render_as_hash(job.skill0) : nil, + '1' => !job.skill1.nil? ? JobSkillBlueprint.render_as_hash(job.skill1) : nil, + '2' => !job.skill2.nil? ? JobSkillBlueprint.render_as_hash(job.skill2) : nil, + '3' => !job.skill3.nil? ? JobSkillBlueprint.render_as_hash(job.skill3) : nil + } + end + end + view :minimal do fields :name, :element, :shortcode, :favorited, :extra, :created_at, :updated_at @@ -31,6 +42,12 @@ module Api blueprint: JobBlueprint end + view :jobs do + association :job, + blueprint: JobBlueprint + include_view :job_skills + end + view :preview do include_view :minimal include_view :weapons @@ -40,17 +57,9 @@ module Api include_view :preview include_view :summons include_view :characters + include_view :job_skills fields :description, :extra - - field :job_skills do |job| - { - '0' => !job.skill0.nil? ? JobSkillBlueprint.render_as_hash(job.skill0) : nil, - '1' => !job.skill1.nil? ? JobSkillBlueprint.render_as_hash(job.skill1) : nil, - '2' => !job.skill2.nil? ? JobSkillBlueprint.render_as_hash(job.skill2) : nil, - '3' => !job.skill3.nil? ? JobSkillBlueprint.render_as_hash(job.skill3) : nil - } - end end view :collection do diff --git a/app/controllers/api/v1/job_skills_controller.rb b/app/controllers/api/v1/job_skills_controller.rb index d5a5864..bedc216 100644 --- a/app/controllers/api/v1/job_skills_controller.rb +++ b/app/controllers/api/v1/job_skills_controller.rb @@ -4,15 +4,13 @@ module Api module V1 class JobSkillsController < Api::V1::ApiController def all - @skills = JobSkill.all - render :all, status: :ok + render json: JobSkillBlueprint.render(JobSkill.all) end def job - job = Job.find(params[:id]) - - @skills = JobSkill.where(job: job).or(JobSkill.where(sub: true)) - render :all, status: :ok + @skills = JobSkill.where(job: Job.find(params[:id])) + .or(JobSkill.where(sub: true)) + render json: JobSkillBlueprint.render(@skills) end end end diff --git a/app/controllers/api/v1/jobs_controller.rb b/app/controllers/api/v1/jobs_controller.rb index 7fbe75b..f404337 100644 --- a/app/controllers/api/v1/jobs_controller.rb +++ b/app/controllers/api/v1/jobs_controller.rb @@ -6,8 +6,7 @@ module Api before_action :set, only: %w[update_job update_job_skills] def all - @jobs = Job.all - render :all, status: :ok + render json: JobBlueprint.render(Job.all) end def update_job @@ -28,7 +27,7 @@ module Api @party[key] = nil if @party[key] && mismatched_skill(@party.job, JobSkill.find(@party[key])) end - render :update, status: :ok if @party.save! + render json: PartyBlueprint.render(@party, view: :jobs) if @party.save! end def update_job_skills @@ -63,7 +62,7 @@ module Api @party.attributes = new_skill_ids end - render :update, status: :ok if @party.save! + render json: PartyBlueprint.render(@party, view: :jobs) if @party.save! end private