refactor: move cli methods to app service

This commit is contained in:
Juan Rodriguez
2024-05-20 13:13:49 +02:00
parent 89fa00b80b
commit f03e0092c8
2 changed files with 43 additions and 44 deletions
+38
View File
@@ -0,0 +1,38 @@
require "../config/*"
require "../lib/*"
require "../models/*"
module App::Services::Cli
def self.create_user(name)
user = App::Models::User.new
user.id = UUID.v4.to_s
user.name = name
user.api_key = Random::Secure.urlsafe_base64()
changeset = App::Lib::Database.insert(user)
return changeset.errors if !changeset.valid?
"New user created: Name: #{user.name}, X-Api-Key: #{user.api_key}"
end
def self.list_users
users = App::Lib::Database.all(App::Models::User)
return "No users found " if users.empty?
output = "Users:\n"
users.each do |user|
output += "ID: #{user.id}, Name: #{user.name}, X-Api-Key: #{user.api_key}\n"
end
output
end
def self.delete_user(user_id)
result = App::Lib::Database.raw_exec("DELETE FROM users WHERE id = (?)", user_id) # tempfix: Database.delete does not work
return "Failed to delete user: #{result}" if result.rows_affected == 0
"User with ID #{user_id} deleted successfully"
end
end
+5 -44
View File
@@ -1,23 +1,21 @@
require "uuid"
require "option_parser"
require "../app/config/*"
require "../app/lib/*"
require "../app/models/*"
require "../app/services/cli"
option_parser = OptionParser.parse do |parser|
OptionParser.parse do |parser|
parser.on("--create-user=NAME", "Create a new user with the given name") do |name|
create_user(name)
puts App::Services::Cli.create_user(name)
exit
end
parser.on("--list-users", "List all users") do
list_users
puts App::Services::Cli.list_users
exit
end
parser.on("--delete-user=USER_ID", "Delete a user by ID") do |user_id|
delete_user(user_id)
puts App::Services::Cli.delete_user(user_id)
exit
end
@@ -29,40 +27,3 @@ option_parser = OptionParser.parse do |parser|
puts " --delete-user=USER_ID Delete a user by ID"
end
end
def create_user(name)
user = App::Models::User.new
user.id = UUID.v4.to_s
user.name = name
user.api_key = Random::Secure.urlsafe_base64()
changeset = App::Lib::Database.insert(user)
if !changeset.valid?
puts changeset.errors
else
puts "New user created: Name: #{user.name}, X-Api-Key: #{user.api_key}"
end
end
def list_users
users = App::Lib::Database.all(App::Models::User)
if users.empty?
puts "No users found."
else
puts "Users:"
users.each do |user|
puts "- ID: #{user.id}, Name: #{user.name}, X-Api-Key: #{user.api_key}"
end
end
end
def delete_user(user_id)
result = App::Lib::Database.raw_exec("DELETE FROM users WHERE id = (?)", user_id) # tempfix: Database.delete does not work
if result.rows_affected == 0
puts "Failed to delete user: #{result}"
else
puts "User with ID #{user_id} deleted successfully."
end
end