namespace _zeitbild.service.resource { /** */ export function add( resource_object : _zeitbild.type_resource_object ) : Promise<_zeitbild.type_resource_id> { return _zeitbild.repository.resource.create(resource_object); } /** */ export async function event_add( resource_id : _zeitbild.type_resource_id, event_object : _zeitbild.type_event_object ) : Promise { const resource_object : _zeitbild.type_resource_object = _zeitbild.repository.resource.read( resource_id ); switch (resource_object.kind) { case "local": { const event_id : _zeitbild.type_event_id = await _zeitbild.repository.local_resource_event.create( event_object ); await _zeitbild.repository.resource.local_resource_event_add( resource_id, event_id ); return Promise.resolve(undefined); break; } case "caldav": { if (resource_object.data.read_only) { return Promise.reject(new Error("can not add event to read only caldav resource")); } else { // TODO return Promise.reject(new Error("not implemented")); } break; } default: { throw (new Error("unhandled resource kind: " + resource_object.kind)); } } } /** */ export async function event_remove( resource_id : _zeitbild.type_resource_id, event_object : _zeitbild.type_event_object ) : Promise { const resource_object : _zeitbild.type_resource_object = _zeitbild.repository.resource.read( resource_id ); switch (resource_object.kind) { case "local": { const event_id : _zeitbild.type_event_id = await _zeitbild.repository.local_resource_event.create( event_object ); await _zeitbild.repository.resource.local_resource_event_delete( resource_id, event_id ); return Promise.resolve(undefined); break; } case "caldav": { if (resource_object.data.read_only) { return Promise.reject(new Error("can not delete event from read only caldav resource")); } else { // TODO return Promise.reject(new Error("not implemented")); } break; } default: { throw (new Error("unhandled resource kind: " + resource_object.kind)); } } } }