Skip to content

Commit 4255136

Browse files
committed
Always return a result from database command methods
1 parent 723d6ca commit 4255136

8 files changed

Lines changed: 35 additions & 19 deletions

File tree

.rubocop_todo.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ Metrics/AbcSize:
4444
- 'lib/hanami/cli/commands/app/db/prepare.rb'
4545
- 'lib/hanami/cli/commands/app/db/rollback.rb'
4646
- 'lib/hanami/cli/commands/app/db/structure/dump.rb'
47-
- 'lib/hanami/cli/commands/app/db/structure/load.rb'
4847
- 'lib/hanami/cli/commands/app/db/utils/postgres.rb'
4948
- 'lib/hanami/cli/generators/app/slice.rb'
5049

lib/hanami/cli/commands/app/db/create.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ def call(app: false, slice: nil, gateway: nil, command_exit: method(:exit), **)
1616

1717
databases(app: app, slice: slice, gateway: gateway).each do |database|
1818
result = database.exec_create_command
19-
exit_codes << result.exit_code if result.respond_to?(:exit_code)
19+
exit_codes << result.exit_code
2020

21-
if result == true || result.successful?
21+
if result.successful?
2222
out.puts "=> database #{database.name} created"
2323
else
2424
out.puts "=> failed to create database #{database.name}"

lib/hanami/cli/commands/app/db/drop.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ def call(app: false, slice: nil, gateway: nil, command_exit: method(:exit), **)
1616

1717
databases(app: app, slice: slice, gateway: gateway).each do |database|
1818
result = database.exec_drop_command
19-
exit_codes << result.exit_code if result.respond_to?(:exit_code)
19+
exit_codes << result.exit_code
2020

21-
if result == true || result.successful?
21+
if result.successful?
2222
out.puts "=> database #{database.name} dropped"
2323
else
2424
out.puts "=> failed to drop database #{database.name}"

lib/hanami/cli/commands/app/db/structure/dump.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def call(app: false, slice: nil, gateway: nil, command_exit: method(:exit), **)
2424
measure("#{database.name} structure dumped to #{relative_structure_path}") do
2525
catch :dump_failed do
2626
result = database.structure_sql_dump
27-
exit_codes << result.exit_code if result.respond_to?(:exit_code)
27+
exit_codes << result.exit_code
2828

2929
unless result.successful?
3030
out.puts result.err

lib/hanami/cli/commands/app/db/structure/load.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def call(app: false, slice: nil, gateway: nil, command_exit: method(:exit), **)
2929
measure("#{database.name} structure loaded from #{relative_structure_path}") do
3030
catch :load_failed do
3131
result = database.exec_load_command
32-
exit_codes << result.exit_code if result.respond_to?(:exit_code)
32+
exit_codes << result.exit_code
3333

3434
unless result.successful?
3535
out.puts result.err

lib/hanami/cli/commands/app/db/utils/mysql.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ module Utils
1212
class Mysql < Database
1313
# @api private
1414
def exec_create_command
15-
return true if exists?
15+
return success_result if exists?
1616

1717
exec_cli("mysql", %(-e "CREATE DATABASE #{escaped_name}"))
1818
end
1919

2020
# @api private
2121
# @since 2.2.0
2222
def exec_drop_command
23-
return true unless exists?
23+
return success_result unless exists?
2424

2525
exec_cli("mysql", %(-e "DROP DATABASE #{escaped_name}"))
2626
end
@@ -56,6 +56,10 @@ def exec_load_command
5656

5757
private
5858

59+
def success_result
60+
@success_result ||= SystemCall::Result.new(exit_code: 0, out: "", err: "")
61+
end
62+
5963
def escaped_name
6064
Shellwords.escape(name)
6165
end

lib/hanami/cli/commands/app/db/utils/postgres.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ class Postgres < Database
2121
# @api private
2222
# @since 2.2.0
2323
def exec_create_command
24-
return true if exists?
24+
return success_result if exists?
2525

2626
system_call.call("createdb #{escaped_name}", env: cli_env_vars)
2727
end
2828

2929
# @api private
3030
# @since 2.2.0
3131
def exec_drop_command
32-
return true unless exists?
32+
return success_result unless exists?
3333

3434
system_call.call("dropdb #{escaped_name}", env: cli_env_vars)
3535
end
@@ -76,6 +76,10 @@ def schema_migrations_sql_dump
7676

7777
private
7878

79+
def success_result
80+
@success_result ||= SystemCall::Result.new(exit_code: 0, out: "", err: "")
81+
end
82+
7983
def post_process_dump(sql)
8084
sql.lines.reject do |line|
8185
SCHEMA_DUMP_FILTERS.any? { |filter| line =~ filter }

lib/hanami/cli/commands/app/db/utils/sqlite.rb

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,28 @@ module Utils
1313
class Sqlite < Database
1414
# @api private
1515
# @since 2.2.0
16-
Failure = Struct.new(:err) do
17-
def successful?
18-
false
16+
class Failure
17+
def initialize(err)
18+
@err = err
1919
end
2020

21-
def exit_code
22-
1
23-
end
21+
attr_reader :err
22+
23+
def successful? = false
24+
def exit_code = 1
25+
end
26+
27+
# @api private
28+
# @since 2.2.0
29+
class Success
30+
def successful? = true
31+
def exit_code = 0
2432
end
2533

2634
# @api private
2735
# @since 2.2.0
2836
def exec_create_command
29-
return true if exists?
37+
return Success.new if exists?
3038

3139
FileUtils.mkdir_p(File.dirname(file_path))
3240

@@ -43,7 +51,8 @@ def exec_drop_command
4351
return Failure.new(exception.message)
4452
end
4553

46-
true
54+
# Mimic a system_call result
55+
Success.new
4756
end
4857

4958
# @api private

0 commit comments

Comments
 (0)