8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/podrb/commands/episodes/runner.rb', line 8
def call(podcast_id, options = {})
parsed_options = parse_options(options)
columns = parsed_options["fields"] || ALL_COLUMNS
sql_code = " select \#{columns.join(\", \")}\n from episodes\n where podcast_id = \#{podcast_id}\n SQL\n\n unless parsed_options[\"all\"]\n sql_code << \"and archived_at is null\\n\"\n end\n\n order_by = parsed_options[\"order_by\"] || \"id\"\n sql_code << \"order by \#{order_by};\\n\"\n\n db = Infrastructure::Storage::SQL.new(db: podrb_db_dir)\n records = db.query(sql_code)\n\n build_success_response(\n details: records.empty? ? :not_found : :records_found,\n metadata: {records: records, columns: columns}\n )\nrescue Infrastructure::Storage::Exceptions::WrongSyntax => exc\n cause = exc.message\n if cause.include?(\"no such column\")\n invalid_column = cause.delete_prefix(\"no such column: \")\n build_failure_response(\n details: :invalid_column,\n metadata: {invalid_column: invalid_column}\n )\n end\nend\n"
|