require "json" require "./src/project.cr" # require "./altsrc/common.cr" # require "./altsrc/main.cr" # 1. get the old list of projects old_storage = Project.all "../storage/" # JSON.mapping({ # id: String, # name: String, # columns: Array(Column), # tasks: Array(Task), # }) # 2. for each project # pp! old_storage old_storage.each do |old_project| puts "projet #{old_project.name}" extra_properties = Hash(String, JSON::Any).new extra_properties["columns"] = JSON.parse(old_project.columns.to_json) pp! extra_properties["columns"] # 1. create a new list an copy all properties tasks = Array(TodoD::Task).new old_project.tasks.each do |t| pp! t task_extra_properties = Hash(String, JSON::Any).new task_extra_properties["column"] = JSON.parse(t.column.to_json) task_extra_properties["backgroundColor"] = JSON.parse(t.column.to_json) task_extra_properties["assigneeId"] = JSON.parse(t.column.to_json) newtask = ::TodoD::Task.new old_project.id, old_project.name, t.author, description: (t.description || ""), assigned_to: t.assigned_to, extra_properties: task_extra_properties # TASK # @color="dark", # @description="", # @id="9808dcf2-1064-4b55-a39a-e402b477d60e", # @title="fsdb automatic tests"> # 1. get the task in the old storage # TODO # 2. create a task in the new format # task = ::TodoD::Task.new @list.to_s, @title, user.uid, # description: (@description || ""), # assigned_to: @assigned_to, # extra_properties: @extra_properties || {} of String => JSON::Any # 3. store the new task # list.tasks << task.id # service.storage.tasks[task.id] = task end # finally, create the list with all the parameters # list = List.new old_project.name, user, extra_properties # list.tasks = tasks.map &.id ####### service.storage.lists.delete list.id # Store the new list # service.storage.lists[list.id] = list # EDIT TASK # task = service.storage.tasks[@task.to_s]? # list = service.storage.lists[task.list.to_s]? # @title.try { |x| task.title = x } # @description.try { |x| task.description = x } # @tags.try { |x| task.tags = x } # @assigned_to.try { |x| task.assigned_to = x } # @extra_properties.try { |x| task.extra_properties = x } # service.storage.tasks.delete task.id # service.storage.tasks[task.id] = task # EDIT LIST # list = service.storage.lists[@list.to_s] # # Updating our list copy. # @title.try do |title| # list.title = title # end # @permissions.try do |permissions| # permissions.each do |key, value| # list.permissions[key] = value # end # end # @extra_properties.try do |properties| # properties.each do |key, value| # list.extra_properties[key] = value # end # end # # Removal and re-adding is the current way of handling updates. # service.storage.lists.delete list.id # service.storage.lists[list.id] = list end # new_storage = TodoD::Storage.new "../new-storage/" # service.storage.lists.delete list.id # service.storage.lists.get_nn_partition( # service.storage.lists[list.id] = list # service.storage.lists[@list.to_s] # service.storage.lists[@list.to_s]? # service.storage.lists[task.list.to_s]? # service.storage.tasks.delete task.id # service.storage.tasks[task.id] = task # service.storage.tasks[@task.to_s]? # service.storage.tasks[uuid]