2019-12-12 06:26:17 +01:00
|
|
|
require "option_parser"
|
|
|
|
require "uuid"
|
|
|
|
require "uuid/json"
|
|
|
|
|
2020-01-16 20:30:43 +01:00
|
|
|
require "ipc"
|
|
|
|
require "authd"
|
2019-12-13 05:47:45 +01:00
|
|
|
require "dodb"
|
|
|
|
|
2020-01-16 20:30:43 +01:00
|
|
|
require "./todod.cr"
|
2019-12-12 06:26:17 +01:00
|
|
|
|
|
|
|
class TodoD::Storage
|
|
|
|
getter root : String
|
|
|
|
|
2020-01-16 20:30:43 +01:00
|
|
|
getter lists : DODB::DataBase(List)
|
|
|
|
getter lists_by_id : DODB::Index(List)
|
2019-12-13 05:47:45 +01:00
|
|
|
getter lists_per_user : DODB::Tags(List)
|
2019-12-12 06:26:17 +01:00
|
|
|
|
2020-01-16 20:30:43 +01:00
|
|
|
getter tasks : DODB::DataBase(Task)
|
|
|
|
getter tasks_by_id : DODB::Index(Task)
|
|
|
|
|
2019-12-12 06:26:17 +01:00
|
|
|
def initialize(@root)
|
2020-01-16 20:30:43 +01:00
|
|
|
@lists = DODB::DataBase(List).new("#{@root}/lists")
|
2019-12-13 05:47:45 +01:00
|
|
|
@lists_per_user = @lists.new_tags "user", &.users_with_read_permissions.map(&.to_s)
|
2020-01-16 20:30:43 +01:00
|
|
|
@lists_by_id = @lists.new_index "id", &.id
|
2019-12-12 06:26:17 +01:00
|
|
|
|
2020-01-16 20:30:43 +01:00
|
|
|
@tasks = DODB::DataBase(Task).new("#{@root}/tasks")
|
|
|
|
@tasks_by_id = @tasks.new_index "id", &.id
|
2019-12-12 06:26:17 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
def new_list(list)
|
2020-01-16 20:30:43 +01:00
|
|
|
@lists << list
|
2019-12-12 06:26:17 +01:00
|
|
|
end
|
|
|
|
end
|