4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'app/models/draft_sequence.rb', line 4
def self.next!(user, key)
return nil if !user
user_id = user
user_id = user.id unless user.is_a?(Integer)
return 0 if !User.human_user_id?(user_id)
sequence = DB.query_single(<<~SQL, user_id: user_id, draft_key: key).first
INSERT INTO draft_sequences (user_id, draft_key, sequence)
VALUES (:user_id, :draft_key, 1)
ON CONFLICT (user_id, draft_key) DO
UPDATE
SET sequence = draft_sequences.sequence + 1
WHERE draft_sequences.user_id = :user_id
AND draft_sequences.draft_key = :draft_key
RETURNING sequence
SQL
Draft.where(user_id: user_id).where(draft_key: key).where("sequence < ?", sequence).destroy_all
UserStat.update_draft_count(user_id)
sequence
end
|