1
0
Fork 0

Return positions

This commit is contained in:
Alex Kotov 2023-02-20 13:29:29 +04:00
parent a427b048d9
commit 9c11d7b6f6
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
1 changed files with 12 additions and 3 deletions

15
main.rb
View File

@ -169,7 +169,7 @@ public
end
##
# @return [Array<Array(String, String)>]
# @return [Array<Array(String, String, Array<Integer>)>]
#
def examples(word_id)
word_id = Integer word_id
@ -178,8 +178,17 @@ public
(
<<~SQL
SELECT
array_agg(foo.value ORDER BY foo.language_id DESC)::text[] AS values
array_agg(foo.value ORDER BY foo.language_id DESC)::text[]
AS values,
array_agg(word_form_example_texts.pos) AS positions
FROM example_texts foo
LEFT JOIN word_form_example_texts
ON word_form_example_texts.example_text_id = foo.id
LEFT JOIN word_forms
ON
word_form_example_texts.word_form_id = word_forms.id
AND
word_forms.word_id = $1
INNER JOIN (
SELECT example_id, language_id, MIN(index) as min_index
FROM example_texts
@ -208,7 +217,7 @@ public
SQL
),
[word_id],
).map { |row| row['values'] }
).map { |row| [*row['values'], row['positions'].compact.freeze] }
result.map { |pair| pair.map(&:freeze).freeze }.freeze
end