Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generate model with delete operation #1594

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions spec/tasks/gen/model_spec.cr
Expand Up @@ -20,6 +20,7 @@ describe Gen::Model do
should_create_files_with_contents io,
"./src/models/customer.cr": "class Customer < BaseModel",
"./src/operations/save_customer.cr": "class SaveCustomer < Customer::SaveOperation",
"./src/operations/delete_customer.cr": "class DeleteCustomer < Customer::DeleteOperation",
"./src/queries/customer_query.cr": "class CustomerQuery < Customer::BaseQuery"
should_generate_migration named: "create_customers.cr"
end
Expand All @@ -45,6 +46,7 @@ describe Gen::Model do
should_create_files_with_contents io,
"./src/models/contact_info.cr": "class ContactInfo < BaseModel",
"./src/operations/save_contact_info.cr": "class SaveContactInfo < ContactInfo::SaveOperation",
"./src/operations/delete_contact_info.cr": "class DeleteContactInfo < ContactInfo::DeleteOperation",
"./src/queries/contact_info_query.cr": "class ContactInfoQuery < ContactInfo::BaseQuery"
should_generate_migration named: "create_contact_infos.cr",
with: "add notes : String?"
Expand Down
13 changes: 7 additions & 6 deletions tasks/gen/model.cr
Expand Up @@ -8,7 +8,7 @@ require "./mixins/migration_with_columns"
class Gen::Model < LuckyTask::Task
include Gen::Mixins::MigrationWithColumns

summary "Generate a model, query, and save operation"
summary "Generate a model, query, and operations (save and delete)"
getter io : IO = STDOUT

def call(@io : IO = STDOUT)
Expand Down Expand Up @@ -71,13 +71,14 @@ class Gen::Model < LuckyTask::Task
end

private def display_success_messages
io.puts success_message("./src/models/#{template.underscored_namespace_path}#{template.underscored_name}.cr")
io.puts success_message("./src/operations/#{template.underscored_namespace_path}save_#{template.underscored_name}.cr", "Operation")
io.puts success_message("./src/queries/#{template.underscored_namespace_path}#{template.underscored_name}_query.cr", "Query")
io.puts success_message(resource_name, "./src/models/#{template.underscored_namespace_path}#{template.underscored_name}.cr")
io.puts success_message("Save#{resource_name}", "./src/operations/#{template.underscored_namespace_path}save_#{template.underscored_name}.cr")
io.puts success_message("Delete#{resource_name}", "./src/operations/#{template.underscored_namespace_path}delete_#{template.underscored_name}.cr")
io.puts success_message("#{resource_name}Query", "./src/queries/#{template.underscored_namespace_path}#{template.underscored_name}_query.cr")
end

private def success_message(filename, type = nil)
"Generated #{resource_name.colorize.green}#{type.colorize.green} in #{filename.colorize.green}"
private def success_message(class_name : String, filename : String)
"Generated #{class_name.colorize.green} in #{filename.colorize.green}"
end

private def resource_name
Expand Down
@@ -0,0 +1,4 @@
class <%= @namespace %>Delete<%= @name %> < <%= @namespace %><%= @name %>::DeleteOperation
# Read more on deleting records
# https://luckyframework.org/guides/database/deleting-records
end