todod/altsrc/main.cr

34 lines
730 B
Crystal

require "option_parser"
require "uuid"
require "uuid/json"
require "ipc"
require "authd"
require "dodb"
require "./todod.cr"
class TodoD::Storage
getter root : String
getter lists : DODB::DataBase(List)
getter lists_by_id : DODB::Index(List)
getter lists_per_user : DODB::Tags(List)
getter tasks : DODB::DataBase(Task)
getter tasks_by_id : DODB::Index(Task)
def initialize(@root)
@lists = DODB::DataBase(List).new("#{@root}/lists")
@lists_per_user = @lists.new_tags "user", &.users_with_read_permissions.map(&.to_s)
@lists_by_id = @lists.new_index "id", &.id
@tasks = DODB::DataBase(Task).new("#{@root}/tasks")
@tasks_by_id = @tasks.new_index "id", &.id
end
def new_list(list)
@lists << list
end
end