Skip to content

Commit

Permalink
Merge pull request #253 from kir-dev/fix/point-request-dupliacation
Browse files Browse the repository at this point in the history
Fix PointRequest duplication
  • Loading branch information
balintkiraly authored Jul 22, 2020
2 parents 8b7ced4 + 1fdcbdb commit a9ec295
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 11 deletions.
4 changes: 4 additions & 0 deletions app/models/point_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
# evaluation_id :bigint not null
# user_id :bigint
#
# Indexes
#
# index_point_requests_on_evaluation_id_and_user_id (evaluation_id,user_id) UNIQUE
#
# Foreign Keys
#
# fk_ertekeles_id (evaluation_id => evaluations.id) ON DELETE => cascade
Expand Down
18 changes: 10 additions & 8 deletions app/services/create_or_update_point_detail.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,17 @@ def initialize(user, principle, evaluation)
end

def call(point)
point_request = PointRequest.find_or_create_by(evaluation_id: evaluation.id, user_id: user.id)
point_detail = PointDetail.find_or_create_by(point_request_id: point_request.id,
principle_id: principle.id)
point_detail.update(point: point)
ActiveRecord::Base.transaction do
point_request = PointRequest.find_or_create_by(evaluation_id: evaluation.id, user_id: user.id)
point_detail = PointDetail.find_or_create_by(point_request_id: point_request.id,
principle_id: principle.id)
point_detail.update(point: point)

point_details = PointDetail.includes(%i[point_request principle]).select do |pd|
pd.point_request.evaluation_id == evaluation.id && pd.point_request.user_id == user.id
end
point_details = PointDetail.includes(%i[point_request principle]).select do |pd|
pd.point_request.evaluation_id == evaluation.id && pd.point_request.user_id == user.id
end

[point_detail, point_details]
[point_detail, point_details]
end
end
end
5 changes: 5 additions & 0 deletions db/migrate/20200722112521_add_index_to_point_requests.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddIndexToPointRequests < ActiveRecord::Migration[5.0]
def change
add_index :point_requests, [:evaluation_id, :user_id], unique: true
end
end
30 changes: 27 additions & 3 deletions db/structure.sql
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
-- PostgreSQL database dump
--

-- Dumped from database version 9.6.16
-- Dumped by pg_dump version 12.1
-- Dumped from database version 10.12 (Ubuntu 10.12-0ubuntu0.18.04.1)
-- Dumped by pg_dump version 10.12 (Ubuntu 10.12-0ubuntu0.18.04.1)

SET statement_timeout = 0;
SET lock_timeout = 0;
Expand All @@ -16,8 +16,24 @@ SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;

--
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: -
--

CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;


--
-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: -
--

COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';


SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: ar_internal_metadata; Type: TABLE; Schema: public; Owner: -
--
Expand Down Expand Up @@ -1132,6 +1148,13 @@ CREATE INDEX index_point_detail_comments_on_point_detail_id ON public.point_deta
CREATE INDEX index_point_detail_comments_on_user_id ON public.point_detail_comments USING btree (user_id);


--
-- Name: index_point_requests_on_evaluation_id_and_user_id; Type: INDEX; Schema: public; Owner: -
--

CREATE UNIQUE INDEX index_point_requests_on_evaluation_id_and_user_id ON public.point_requests USING btree (evaluation_id, user_id);


--
-- Name: index_subscriptions_on_key; Type: INDEX; Schema: public; Owner: -
--
Expand Down Expand Up @@ -1466,6 +1489,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20191025190035'),
('20200127202810'),
('20200204185955'),
('20200611204210');
('20200611204210'),
('20200722112521');


0 comments on commit a9ec295

Please sign in to comment.