Return positions
This commit is contained in:
parent
a427b048d9
commit
9c11d7b6f6
15
main.rb
15
main.rb
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue