todod/conversion.cr

133 lines
3.4 KiB
Crystal

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]